Подтвердить что ты не робот

PHP: Mcrypt - какой режим?

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

Документация PHP не слишком толста, сравнивая различные режимы, доступные для mcrypt, и вместо этого ссылается на книгу "Прикладная криптография от Schneier", которую я не слишком хочу купить на данный момент.

Итак, какой из mcrypt -модулей я хочу использовать и почему?

4b9b3361

Ответ 1

mcrypt фактически реализует больше режимов, чем в списке, вы можете использовать имена строк для доступа к ним:

  • cbc - режим CBC
  • cfb - 8-битный режим CFB;
  • ncfb - режим CFB с блочным размером;
  • nofb - режим OFB (не ofb);
  • ctr - режим CTR.

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

Перетяжка

  • Режим CBC только шифрует полные блоки, поэтому mcrypt заполняет ваш открытый текст нулевыми байтами, если вы не реализуете свое собственное дополнение.

  • Режимы CFB, OFB и CTR шифруют сообщения любой длины.

Инициализирующий вектор:

  • Режимы CBC и CFB требуют случайного IV (не используйте MCRYPT_RAND).

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

  • CTR требует, чтобы каждый блок счетчика был уникальным (а не только IV сообщения, которое является первым блоком счетчика, а остальное, сформированное путем увеличения блока счетчика на 1 для каждого блока сообщения).

Подробнее в рекомендации NIST.

Существуют различия в производительности, которые должны быть неважными в PHP, например, можно ли распараллелить шифрование или дешифрование и сколько итераций шифрования используется на каждый блок (обычно один, но 16 в 8-битном режиме CFB).

Существуют различия в malleability, которые должны быть несущественными, потому что вы примените MAC.

И могут быть различия в их безопасности, но для этого вам следует обратиться к криптографу.