Какой PHP mcrypt шифр является самым безопасным?

Так парни, существует много различных доступных шифров - но какой самое безопасное должно использовать в наше время?

Список: http://www.php.net/manual/en/mcrypt.ciphers.php

27
задан Industrial 11 May 2010 в 10:29
поделиться

4 ответа

Если вы не уверены, используйте AES (также известный как "Rijndael") со 128-битным ключом. Если у вас развился некий фетиш в отношении размера ключа, то вы можете удовлетворить свои иррациональные сомнения, выбрав больший ключ, например, 192 или 256 бит; дополнительные затраты невелики (+40% нагрузки для AES-256, по сравнению с AES-128, и нужна очень очень быстрая сеть, чтобы действительно заметить эту разницу).

Имейте в виду, что, независимо от размера ключа, правильным шифром mcrypt для AES всегда является MCRYPT_RIJNDAEL_128. Это происходит потому, что стандарт AES ссылается на шифр Rijndael с размером блока 128 бит. Если вы хотите получить AES-256, вам нужно использовать MCRYPT_RIJNDAEL_128 с 256-битным (32 байта) ключом, а не MCRYPT_RIJNDAEL_256.

AES был опубликован в 1998 году и принят правительством США в качестве федерального стандарта в 2001 году, и в настоящее время он не показывает никаких признаков слабости. Некоторые математические свойства были обнаружены позже, но они не влияют на фактическую безопасность; в основном они подчеркивают, что у нас есть относительно точные знания о том, почему AES безопасен. Ни один другой алгоритм симметричного шифрования не получил столько внимания (со стороны тысяч талантливых криптографов), сколько AES.

Большинство проблем безопасности связано с тем, как используется криптографический алгоритм, а не с самим алгоритмом. Используйте правильный режим цепочки, добавьте MAC, управляйте подшивкой и, самое главное, надежно обращайтесь с ключами. Если вы все это сделали правильно (а это гораздо сложнее, чем кажется), то настанет время подумать о выборе Rijndael, Twofish или чего-то еще.

46
ответ дан 28 November 2019 в 04:50
поделиться

Если вы хотите узнать подробности, есть статья, написанная в основном мной, о блочных шифрах на http://en.citizendium.org/wiki/Block_cipher

Чтобы соответствовать текущим стандартам США, используйте AES, бывший Rijndael. Любой из других финалистов конкурса AES - Serpent, MARS, Twofish или RC-6 - тоже подойдет. Я думаю, что для RC6 нужна лицензия.

1
ответ дан 28 November 2019 в 04:50
поделиться

Некоторые алгоритмы лучше других в разных вещах - не уверен, каков ваш критерий «самого безопасного».

В наши дни вам определенно не следует использовать какие-либо алгоритмы, основанные на DES (при условии, что у вас есть свободный выбор). AES (Rijndael) - текущий стандарт для NIST и других организаций.

В общем, большее количество бит для конкретного алгоритма означает более безопасный, но убедитесь, что вы используете вектор инициализации и НЕ используете ECB.

НТН

С.

2
ответ дан 28 November 2019 в 04:50
поделиться

Обычно я использую AES-128, так как AES одобрен FIPS. Самый надежный шифр - AES-256 (MCRYPT_RIJNDAEL_256).

mcrypt имеет модульную конструкцию, и новый шифр можно легко добавить.

0
ответ дан 28 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: