2012-05-22 4 views
1

Я создаю систему аутентификации, в которой некоторая информация хранится в зашифрованном виде, так что она не может быть читаема человеком. Поскольку он зашифрован, мне нужно использовать функцию generateSecretKey() (поскольку я не использую метод CFMX_COMPAT). Я нервничаю от создания этого, когда пользователь зарегистрирован в системе и использует его на все время, и поэтому я думал о создании нового при каждом входе пользователя в систему, но не был уверен, действительно ли это необходимо. Я уже вызываю метод обновления временной отметки времени входа в систему для каждого входа, поэтому добавление нового секретного ключа не так уж плохо, но я хотел убедиться, что я не зашел за борт, поэтому мой вопрос таков:Как хранить секретный ключ для шифрования

При создании секретных ключей для пользователей для шифрования информации лучше всего создать новый при каждом входе в систему или просто создать его при регистрации и использовать его на все время?

ответ

1

Ваш ответ (как говорили эльфы Фродо) - это и да, и нет. Или, может быть, в словах Боба Доула, когда его спросили, носит ли он боксеров или брейфов ... «зависит».

То, о чем вы просите, строго связано с требованиями. Якобы второй вариант - «генерация нового ключа» - был бы более безопасным, чем повторное использование того же ключа. В первом случае у вас есть один ключ для каждого пользователя. Во втором ваш ключ более эфемерен и исчезает после сеанса. Так что реальный вопрос: какой уровень безопасности достаточно для ваших требований.

Компромисс заключается в том, что код немного сложнее, сервер должен работать немного сложнее, и вы не можете продолжать сеансы (поскольку перезапуск сервера будет убивать ваши ключи предположительно). Это может также затруднить работу аудиторской отчетности, поскольку похоже, что вы шифруете информацию о типе журнала или типе журнала аудита.

Я бы добавил, что если вы сохраните эти ключи вместе с данными, вы можете не беспокоиться о создании новых. Вы уже ухудшили все возможное, что вы могли бы получить, поставив ключ под приветственный коврик;)

Надеюсь, это поможет ... извините, что расплывчато.

+0

Это было не так расплывчато и было именно тем, что я понял, ответ будет. Я решил пойти с созданием нового ключа для каждого входа, поскольку это обеспечивает большую безопасность. Данные, которые я шифрую, на самом деле представляют собой небольшую информацию о сеансе, которую я хочу убедиться, не читаются в куки или где-либо еще, что кто-то может получить к ним доступ. –

+0

Прохладный ... рад поддержать ваше решение :) –

Смежные вопросы