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

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

17 голосов
/ 24 февраля 2011

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

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

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

1 Ответ

22 голосов
/ 24 февраля 2011

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

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

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

Заполнение :

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

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

Вектор инициализации :

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

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

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

Дополнительная информация в Рекомендациях NIST .

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

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

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

...