Говорят, что DES небезопасен. Я думаю, это потому, что ключ имеет длину 55 бит, поэтому использование грубой силы потребует максимум 2^55 итераций, чтобы узнать ключ, которого сейчас мало. Но если мы повторяем 2^55, когда мы знаем, когда остановиться?Почему DES небезопасен? Как мы узнаем, когда прекратить итерацию и что мы обнаружили ключ?
ответ
Это 2 не 2 .
Есть несколько вариантов того, как знать, когда остановиться. Один из них заключается в том, что вы используете атаку с известным текстом - например, вы знаете фактический текст конкретного сообщения, используйте это, чтобы изучить ключ, а затем используйте это, чтобы читать другие сообщения. Во многих случаях вы не будете знать полный текст, но могут знать некоторые фрагменты в любом случае - например, вы можете что-то знать о блоке адресов, который используется со всеми сообщениями типа, о котором вы заботитесь, или если файл был зашифрован, может иметь узнаваемый заголовок, даже если фактическое содержимое неизвестно.
Если вы не знаете (какой-либо) текст для любого сообщения, вы, как правило, зависите от того факта, что естественные языки, как правило, довольно избыточны - довольно много известно об их структуре. Для нескольких примеров на английском языке вы знаете, что пространство обычно является наиболее распространенным символом, e
является наиболее распространенной буквой, почти ни слова не содержат более двух одинаковых букв подряд, почти все слова содержат по крайней мере один гласный и т. Д. В типичном случае вы делаете пару различных уровней статистического анализа - очень простой, который очень быстро исключает возможности. Для тех, кто проходит этот тест, вы делаете второй анализ, который также довольно быстро исключает подавляющее большинство остальных.
Когда вы закончите, возможно вам может потребоваться человеческое суждение, чтобы выбрать между несколькими возможностями - но, честно говоря, это довольно необычно. Статистический анализ, как правило, полностью адекватен.
Возможно, я должен добавить, что некоторые люди находят статистический анализ достаточно проблематичным, чтобы попытаться предотвратить его, например, путем сжатия данных с помощью алгоритма, такого как сжатие Хаффмана, для максимизации энтропии в сжатых данных.
Это зависит от содержания. Любая клавиша произведет выход, поэтому нет автоматического способа узнать, что вы нашли правильный ключ, если не можете догадаться, что именно вы ищете. Если вы ожидаете, что зашифрованные данные будут текстовыми, вы можете проверить, содержит ли каждый расшифровка в основном буквы ASCII; Аналогично, если вы ожидаете, что это файл JPEG, вы можете проверить, начинается ли дешифрование с символов «JFIF».
Если вы ожидаете, что данные не сжаты, вы можете запускать различные энтропийные тесты в дешифрах, ища расшифровки с низкой энтропией.
Продолжайте пытаться расшифровать все зашифрованные вещи, которые у вас есть, пока они не будут правы? – Ryan
Использование известного открытого текста. – SLaks
http://en.wikipedia.org/wiki/Data_Encryption_Standard#Attacks_faster_than_brute-force – SLaks