Мы храним конфиденциальные данные в MySQL, и я хочу использовать AES_ENCRYPT (данные, «мой секретный ключ здесь»), а затем AES_DECRYPT, который прекрасно работает. Мой самый большой вопрос: как мне защитить ключ? Раньше я просто хранил ключ в веб-файле PHP, поэтому что-то вроде:
define("ENCRYPTION_KEY", 'my-secret-key-here');
Однако на самом деле это не работает, поскольку наш сервер MySQL и веб-сервер представляют собой одну и ту же физическую машину, поэтому, если кто-то получит доступ к серверу, он сможет получить как зашифрованные данные, хранящиеся в MySQL, так и ключ.
Любые идеи? Я думаю, что мне нужно переместить ключ на отдельный сервер и прочитать его удаленно. Или как насчет динамической генерации ключа шифрования для каждого фрагмента данных. Например, взять customer_id и запустить на нем md5, а затем использовать его в качестве ключа.