PHP Mcrypt, насколько это безопасно?

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

Один простой способ, который я нашел для шифрования / расшифровки строк и текстовых блоков, будет использовать mcrypt. Но когда я просматриваю mcrypt здесь в stackoverflow, я заметил, что многие люди говорят, что mcrypt после этого не является безопасным.

Так что теперь мне интересно, насколько это безопасно? Требуется ли много навыков взлома, скажем, экспертных навыков, взломать и расшифровать сохраненную информацию, если ключ хранится надежно? Нужно ли мне бояться, что хакер с небольшими навыками может расшифровать зашифрованную информацию, которую я собираюсь хранить на сервере mysql? Итак, какие навыки необходимы для взлома зашифрованной информации, зашифрованной с помощью mcrypt?

Если Mcrypt недостаточно подходит для использования, какие хорошие альтернативы, которые не сложны с использованием расширений gnupg?

Solutions Collecting From Web of "PHP Mcrypt, насколько это безопасно?"

Небольшой путеводитель, который вы могли бы выполнить, чтобы избежать нескольких подводных камней и применить некоторые рекомендации.

  • Не используйте повторно один и тот же ключ шифрования и вектор инициализации (IV) для двух разных сообщений.

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

  • Не используйте режим ECB; Режим OFB и CTR несколько лучше, но рекомендуется использовать режим CBC или CFB.

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

OFB и CTR лучше, но они страдают от вышеупомянутой проблемы безопасности использования одной и той же комбинации клавиш IV + более одного раза.

CFB и CBC являются наиболее устойчивыми к повторному использованию ключа IV +, но отдельные сообщения с одним и тем же общим префиксом будут вытеснять длину указанного префикса. Кроме того, CFB просачивает разницу в первых неидентичных блоках открытого текста.

  • Убедитесь, что у вас есть надежный ключ шифрования

    Он не должен выбираться из ASCII для печати (например, не «мой сверхсильный секретный ключ»); PBKDF2 был бы предпочтительнее (вскоре его можно будет поддерживать, до тех пор, пока он будет использоваться Google). Должно быть очевидно, что этот ключ должен быть сохранен; если вы потеряете его, пока до свидания данные.

  • Используйте хороший источник энтропии для генерации вектора инициализации.

    Mcrypt имеет возможность использовать MCRYPT_DEV_RANDOM или MCRYPT_DEV_URANDOM при вызове mcrypt_create_iv() .

Надеюсь, что это поможет вам 🙂