Хранение ключа AES_ENCRYPT - PullRequest
       5

Хранение ключа AES_ENCRYPT

1 голос
/ 03 августа 2011

Это скорее вопрос безопасности, касающийся использования AES_ENCRYPT для генерации шифрования данных, вставляемых в базу данных MySQL.

В каком месте лучше всего хранить ключ, который используется для шифрования данных?Очевидно, нет в базе данных!:)

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Безопасность по неизвестности !

Если ваш веб-сервер скомпрометирован, то злоумышленник может получить доступ к ключу независимо от того, где он хранится - поскольку код должен быть в состоянии найти ключ для выполнения шифрования / дешифрования - и код объясняет, где он находит ключ. Единственный сценарий, в котором это добавляет реальную ценность, заключается в защите данных вне приложения (например, на резервной ленте). Однако, поскольку вы ставите под угрозу способность СУБД оптимизировать запросы и создавать гораздо больший объем данных для такой цели, как резервное копирование, имеет гораздо больше смысла шифровать резервную копию или файловую систему, а не отдельные элементы данных.

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

Чтобы дать разумный ответ, нам нужно знать, что представляет собой модель угрозы и есть ли у вас внешние ограничения, такие как PCI-DSS

1 голос
/ 03 августа 2011

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

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

...