Почему DES небезопасен? Как мы узнаем, когда прекратить итерации и что мы нашли ключ?
Говорят, что DES небезопасен. Я полагаю, это потому, что длина ключа 55 бит, поэтому использование грубой силы потребует максимум 2^55 итераций, чтобы найти ключ, которого в настоящее время не так много. Но если мы повторим 2^55, когда мы узнаем, когда остановиться?
2 ответа
Это 256, а не 255.
Есть несколько вариантов, как узнать, когда остановиться. Одна из них заключается в том, что вы выполняете атаку с использованием известного текста - то есть вы знаете фактический текст конкретного сообщения, используйте его для изучения ключа, а затем используйте его для чтения других сообщений. Во многих случаях вы не будете знать полный текст, но все равно можете знать некоторые фрагменты - например, вы можете знать что-то о блоке адреса, который используется со всеми сообщениями того типа, который вас интересует, или если файл был Зашифрованный может иметь распознаваемый заголовок, даже если фактический контент неизвестен.
Если вы не знаете (какой-либо из) текст любого сообщения, вы, как правило, зависите от того факта, что естественные языки обычно довольно избыточны - об их структуре известно совсем немного. В нескольких примерах на английском языке вы знаете, что пробел, как правило, является наиболее распространенным символом, e
это самая распространенная буква, почти ни одно слово не содержит более двух одинаковых букв подряд, почти все слова содержат хотя бы одну гласную и т. д. В типичном случае вы выполняете несколько разных уровней статистического анализа - очень простой это исключает большинство возможностей очень быстро. Для тех, кто проходит этот тест, вы делаете второй анализ, который также довольно быстро исключает подавляющее большинство остальных.
Когда вы закончите, возможно, вам понадобится человеческое суждение, чтобы выбрать один из нескольких вариантов, но, честно говоря, это довольно необычно. Статистический анализ, как правило, полностью адекватен.
Я, вероятно, должен добавить, что некоторые люди считают статистический анализ достаточно проблематичным, чтобы попытаться предотвратить его, например, путем сжатия данных с помощью алгоритма, такого как сжатие Хаффмана, для максимизации энтропии в сжатых данных.
Это зависит от содержания. Любой ключ будет производить какой-то вывод, поэтому нет автоматического способа узнать, что вы нашли правильный ключ, если вы не можете догадаться, что именно вы ищете. Если вы ожидаете, что зашифрованные данные являются текстовыми, вы можете проверить, содержит ли каждая расшифровка в основном буквы ASCII; Аналогично, если вы ожидаете, что это файл JPEG, вы можете проверить, начинается ли расшифровка с символов "JFIF".
Если вы ожидаете, что данные не сжаты, вы можете запустить различные энтропийные тесты для расшифровок, ища дешифры с низкой энтропией.