Шифрование конфиденциальных данных с помощью mcrypt

Здравствуйте, ребята, у меня секретный вопрос относительно шифрования/дешифрования личной конфиденциальной информации: личность (имя, адрес, номер телефона), банковские реквизиты (сортировочный код и номер счета) почти все зашифровано и доступно только самому человеку и уполномоченное лицо для использования персональных данных. А теперь основные вопросы: 1. Достаточно ли безопасен мой метод?
2. Есть ли лучший способ сделать это?
3. Где мне использовать ключи из базы данных или из $_SESSION?( Где их лучше всего использовать для расшифровки, чтобы пользователь мог просмотреть свои данные)

Вот код:
$iv = mcrypt_create_iv(32, MCRYPT_RAND);
$key = mcrypt_create_iv(32, MCRYPT_RAND);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $unencrypted, MCRYPT_MODE_CBC, $iv);

Это для шифрования данных, прежде чем я отправлю их в БД

$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv );

И это метод расшифровки (с использованием $encrypted, $key и $iv из приведенного выше примера).


person D. Dimitrov    schedule 15.08.2012    source источник
comment
Где вы храните сгенерированный ключ и IV?   -  person Alex Amiryan    schedule 15.08.2012


Ответы (1)


Шифрование любой конфиденциальной информации и хранение ключей в базе данных не дает никаких преимуществ в плане безопасности. Это то же самое, что запереть сейф и оставить ключи в замочной скважине. По крайней мере, вам нужно хранить ключи в файловой системе, а не в базе данных. В этом случае, если ваша база данных утекла (например, из-за атаки SQL инъекции), злоумышленник не сможет расшифровать ее, потому что у них нет ключей.

Редактировать Невозможно защитить файл, содержащий ключ, потому что PHP должен прочитать его, чтобы выполнить требуемые операции. Однако вы можете использовать устройство HSM (аппаратный модуль безопасности) для хранения там ключей. Посмотрите, например, на YubiHSM.

person Alex Amiryan    schedule 15.08.2012
comment
Да, это хороший момент на самом деле. Хорошо, как мне защитить файлы? - person D. Dimitrov; 15.08.2012