Код Зодиака Убийцы взломали? Криптография в худшем случае


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

Обратите внимание на следующие факты:

В конце 1960-х — начале 1970-х годов серийный убийца под кодовым именем Зодиак отправлял зашифрованные письма в местные газеты, в которых упоминались убийства, и предупреждал о новых убийствах. Код первой буквы был взломан в 1969 году любителем, а теперь самая известная буква из набора, 340-символьная буква, была взломана другим любителем.

Основное доказательство того, что сообщение было взломано, — это просто значимость результата:

KILL / SLF / DR / HELP / ME / KILL / MYSELF / GAS / CHAMBER / AEIOUR / DAYS / QUESTIONSABLE / EVERYY / WAKING / MOMENT / IM / ALIVE / MY / PRIDE / LOST / I / CANT / GO / ON / LIVING / IN / THIS / WAY / KILLING / PEOPLE / I / HAV / KILLD / SO / MANY / PEOPLE / CANT / HELP / MYSELF / IM / SO / ANGRY / I / CULD / DO / MY / THING / IM / ALONE / IN / ЭТО / МИР / МОЙ / ВЕСЬ / ЖИЗНЬ / ПОЛНЫЙ / О / ЛОЖЬ / IM / НЕВОЗМОЖЕН / ДЛЯ / ОСТАНОВИТЬ / К / В / ВРЕМЯ / ВЫ / РЕШИТЬ / ЭТО / Я / БУДЕТ / ИМЕЕТ / УБИТЬ / ELEVEN / PEOPLE / PLEASE / ПОМОГИТЕ / МНЕ / СТОП / УБИЙСТВО / ЛЮДИ / ПОЖАЛУЙСТА / МОЕ / ИМЯ / Я / ЛИГ / АЛЛЕН /

Одним из главных подозреваемых звали Ли Аллен, так что все действительно подходит.

Доказательство декодирования — это то, что у вас есть что-то внятное, и это давний принцип криптографии.

Итак, конец истории, код был взломан.

Ну нет, не совсем.

Принцип, используемый для обнаружения успешного декодирования, зависит от использования обычного алгоритма для декодирования сообщения. Алгоритм может быть сложным, но он должен иметь регулярность, управляемую небольшим количеством параметров. Если вы допускаете слишком много степеней свободы в алгоритме декодирования, его можно «упорядочить», чтобы получить результат, который имеет смысл, но не имеет связи с исходным открытым текстом.

Если вы посмотрите более внимательно на процесс дешифрования буквы Зодиака, он начинает обнаруживать слишком много степеней свободы. Сначала неалфавитные символы преобразуются в буквенные символы, на которые они больше всего похожи. Эта часть разумна. Далее предполагается, что код представляет собой модифицированный шифр Цезаря, то есть где каждый символ отображается на другой в алфавите с постоянным сдвигом. Например, шифр Цезаря со сдвигом на 3 отображает A в D.

Как известно большинству программистов, шифр Цезаря легко взломать, потому что он сохраняет обычную n-граммовую частоту символов, используемых в языке. Если бы буква Зодиака была простым шифром Цезаря, она была бы расшифрована давным-давно, и этот аргумент использовался, чтобы предположить, что нынешний взлом кода любителем должен быть мистификацией.

Однако это рассуждение неверно, потому что код, использованный при взломе, — это не простой шифр Цезаря, а разновидность шифра Виженера. В этом случае сдвиг изменяется по регулярному шаблону, заданному клавишей. Например, если ключ 1234, вы должны сдвинуть первую букву на 1, вторую на 2 и так далее. Когда ключ израсходован, вы снова начинаете с самого начала. Это тоже легко взломать, если сообщение достаточно длинное, потому что ключ используется неоднократно, и это вводит статистические закономерности, которые можно использовать для поиска ключа. Однако, если вы используете ключ такой же длины, как и сообщение, и используете ключ только один раз — так называемый одноразовый блокнот, — тогда код невозможно взломать. Так что все зависит от того, сколько степеней свободы дано ключу.

Теперь рассмотрим, как можно расшифровать предполагаемый шифр Виженера — по сути, вы можете выбрать сдвиг в каждой точке зашифрованного текста, чтобы получить любую желаемую расшифрованную букву. У вас столько степеней свободы, сколько букв в сообщении. Чтобы быть разумно правдоподобным, вы должны предоставить либо короткий повторяющийся ключ, либо ключ с понятной регулярностью.

Это то, что сделал Кори Старлайпер. Он рассудил, что ключ может быть связан с числом 340 — количеством символов в сообщении, и из этого он выводит отношения с телефонными кодами города. В любом случае, по какой-то причине он начинает с ключа 34 и получает KI, поэтому следующие две смены должны быть 6 и 3, чтобы получить KILL. Итак, оттуда вы можете повторить 346346, чтобы получить KILL SL и так далее. Только есть ошибка в вычислении (см. Анализ трещины как обмана), а фактический используемый ключ — 3 4 6 10 3 0 5 и так далее. Ошибка разрушает ту небольшую регулярность, которая есть в предложенном ключе, и после первоначальной попытки добиться регулярности значения ключа изменяются, чтобы завершить слово без особого дополнительного обоснования. Например, 3 4 дает HE, поэтому для получения L следующее значение ключа изменяется на 3, а не на 6, а для получения P следующее значение будет 4, а не 3.

Таким образом, суть заключается не в том, «имеет ли восстановленный простой текст смысл?», А в том, «имеет ли используемый ключ регулярность, которая делает его менее произвольным?»

В этом случае, несмотря на количество сообщений в СМИ, в которых говорится «КОД ЗОДИАКА ВЗЛОМЛЕН», я думаю, очень сомнительно, что существует какая-либо значимая закономерность, особенно если принять во внимание ошибки в сообщении последовательности ключей.

Таким образом, мы можем только заключить:

КОД ЗОДИАКА НЕ ВЗЛОМЛЕН


Добавить комментарий