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

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

Итак, ребята, есть много разных шифров - но какой из них самый безопасный в настоящее время?

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

4b9b3361

Ответ 1

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

Помните, что независимо от выбранного размера ключа правильный шифр mscrypt для 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 или что-то еще.

Ответ 2

В дополнение к Томасу Порнину отличный ответ, вы также должны рассмотреть то, что вы пытаетесь достичь с точки зрения "безопасности" (конфиденциальность/целостность/аутентичность/доступность).

Для каждого случая вам нужно будет задать несколько вопросов, например... К кому это относится? Где и почему он используется (что вы защищаете)? Как долго это длится? и др.

Например, вероятно, нет смысла в действительно шифровании данных сеанса с полномасштабной последовательностью 256-битных операций, когда данные на самом деле предназначены только для того, чтобы длиться 20-30 минут. Безопасный 128-битный алгоритм будет почти в два раза быстрее или, по крайней мере, использовать нагрузки меньше тактовых циклов и быть такими же (если не более) безопасными.

Также нет смысла шифровать то, что должно длиться долго (например, конфиденциальный документ или файл, закрытый ключ и т.д.) со слабым, коротким ключом. Вы бы захотели порой использовать несколько алгоритмов с некоторой аутентификацией и правильным использованием отступов. Я регулярно зашифровывал и подписывал контент по запросу для клиентов, используя несколько алгоритмов (в основном двухфайлов, AES, RSA).

И чтобы не забыть (как указывал Томас), вы можете безопасно использовать безопасный метод (или методы). С огромным количеством вариантов каждой формулы и таковой может быть сложно реализовать что-то, что является "безопасным".

Как правило, что-то настолько же безопасно, как и ключ, чтобы разблокировать его. Если я оставлю ключи от машины в автомобиле с разблокированным автомобилем, ключи не будут защищены, и он откроется для того, чтобы кто-либо прошел мимо. Blowfish с хорошо разбросанным 32-символьным ключом будет таким же безопасным, как и все остальное сегодня. 3-значный ключ, однако, может быть разбит в мгновение ока.

Ответ 3

"Самый сильный шифр - AES-256"

Из деталей на веб-сайте Брюса Шнайера, по иронии судьбы, AES-256 может быть наименее безопасным из трех ключевых размеров 128, 192 и 256. Есть проблемы с генерацией ключей в 256-битном варианте.

Ответ 4

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

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

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

НТН

С.

Ответ 5

В соответствии с бумагой NIST у RJINDAEL был низкий запас прочности по сравнению с MARS, двумя рыбами или змеей. Если вам действительно нужен самый сильный шифр, выберите один из них.

http://csrc.nist.gov/archive/aes/round2/r2report.pdf

Цитата: "MARS, похоже, имеет высокий запас прочности. Точная характеристика MARS сложно из-за того, что MARS использует два разных типа раундов. МАРС получил некоторую критику, основанную на ее сложности, которая, возможно, препятствовала ее анализ безопасности в течение периода разработки AES.

Rijndael, похоже, имеет достаточный запас прочности. Поля безопасности немного трудно измерить, потому что количество раундов изменяется с размером ключа. Rijndael получил некоторую критику по двум основаниям: ее маржа безопасности находится на низкой стороне среди финалистов, и что его математическая структура может привести к атакам. Однако его структура довольно проста, что, возможно, способствовало ее анализу безопасности во время определенный период времени процесса разработки AES.

Змей имеет высокий запас прочности. Змей также имеет простую структуру, что, возможно, облегчило его анализ безопасности в течение указанных сроков AES.

У Twofish есть высокий запас прочности. Поскольку Twofish использует ключевой круглые функции, понятие запаса безопасности может иметь меньшее значение для этого алгоритма чем для других финалистов. Зависимость S-боксов Twofish только от k/2 бит энтропия в k-битном ключевом случае привела к предположению, что Twofish может поддаваться делить-и-завоевать атаку, хотя такой атаки не обнаружено. Twofish получил некоторые критики за его сложность, затрудняя анализ в течение периода времени AES ".

Ответ 6

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

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

Ответ 7

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

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