Как безопасно хранить данные в MySQL с помощью AES_ENCRYPT

Мы храним конфиденциальные данные в MySQL, и я хочу использовать AES_ENCRYPT (data, 'my-secret-key-here'), а затем AES_DECRYPT, который отлично работает. Мой самый большой вопрос - как мне защитить ключ? Раньше я просто терял ключ в веб-файле PHP, поэтому что-то вроде:

define("ENCRYPTION_KEY", 'my-secret-key-here');

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

Есть идеи? Я думаю, мне нужно переместить ключ на отдельный сервер и прочитать его удаленно. Или как насчет динамического создания ключа шифрования для каждого фрагмента данных. Например, взять customer_id и запустить на нем md5, а затем использовать его в качестве ключа.

6
задан Jonathan Leffler 15 January 2011 в 00:20
поделиться