Книга шифров .Тайная история шифров и их расшифровки - Саймон Сингх
Шрифт:
Интервал:
Закладка:
Реевский разработал стратегию атаки на «Энигму» исходя из того, что повторение является врагом безопасности: повторения приводят к возникновению характерного рисунка — структуры сообщения, и криптоаналитики благоденствуют на структурах. Самым явным повторением при шифровании с использованием «Энигмы» был разовый ключ, который зашифровывался дважды в начале каждого сообщения. Если оператор выбирал, к примеру, разовый ключ ULJ, то он должен был зашифровать его дважды, так что ULJULJ мог приобрести вид PEFNWZ, и вначале посылался этот набор букв, а затем само сообщение. Немцы требовали такого повторения, чтобы избежать ошибок вследствие радиопомех или оплошности оператора. Но они не предполагали, что из-за этого возникнет угроза безопасности машины.
Каждый день Реевскому передавали новую пачку перехваченных сообщений. Все они начинались шестью буквами повторяющегося трехбуквенного разового ключа, все были зашифрованы с использованием одного и того же ключа текущего дня. Например, он мог получить четыре сообщения, начинающихся со следующих зашифрованных разовых ключей:
В каждом из этих случаев 1-я и 4-я буквы являются одной и той же зашифрованной буквой — первой буквой разового ключа. Точно так же 2-я и 5-я буквы являются одной и той же зашифрованной буквой — второй буквой разового ключа, а 3-я и 6-я буквы — третьей буквой разового ключа. Так, в первом сообщении, L и R являются одной и той же зашифрованной буквой — первой буквой разового ключа. Причина, почему одна и та же буква зашифровывается по-разному, вначале как L, а затем как R, заключается в том, что между двумя зашифровываниями первый шифратор «Энигмы» продвинется на три шага и способ шифрования изменится.
То, что L и R являются одной и той же зашифрованной буквой, позволило Реевскому вывести еле уловимую связь с начальной установкой машины. При некотором начальном положении шифратора, которое неизвестно, первая буква ключа текущего дня, который опять-таки неизвестен, зашифровывается в L, а затем, при другом положении шифратора, который передвинулся на три шага от начального, по-прежнему неизвестного положения, та же буква ключа текущего дня, который также по-прежнему неизвестен, преобразуется в R.
Эта связь представляется смутной, так как здесь полно неизвестностей, но она хотя бы показывает, что буквы L и R неразрывно связаны с исходной установкой «Энигмы» — с ключом текущего дня. При перехвате новых сообщений можно найти другие соответствия между 1-й и 4-й буквами повторяющегося разового ключа.
Все они отражают исходную установку «Энигмы». Например, из второго сообщения видно, что существует связь между М и X, из третьего — между J и М и из четвертого — между D и Р. Реевский начал суммировать эти соответствия, сводя их в таблицу. Для четырех сообщений, которые мы пока имеем, таблица дает наличие связей между (L, R), (М, X), (J, М) и (D, Р):
Если бы у Реевского было достаточное количество сообщений, отправленных в какой-нибудь один из дней, то он смог бы завершить составление алфавита соответствия. Ниже приведена заполненная таблица соответствий:
У Реевского не было никаких догадок ни о ключе текущего дня, ни о том, какие выбирались разовые ключи, но он знал, что они есть в этой таблице соответствий. Если бы ключ текущего дня был другим, то и таблица соответствий была бы совершенно отличной. Следующий вопрос заключался в том, можно ли найти ключ текущего дня из этой таблицы соответствий. Реевский приступил к поиску в таблице характерных рисунков — структур, которые могли бы послужить признаком ключа текущего дня. В итоге он начал изучать один частный тип структуры, который характеризовал цепочку букв. В таблице, к примеру, А в верхнем ряду связана с F в нижнем ряду. Перейдя в верхний ряд и найдя там F, Реевский выяснил, что F связана с W. Снова перейдя в верхний ряд и отыскав там W, он обнаружил, что, оказывается, связана с А, то есть он вернулся к тому месту, откуда начал поиск. Цепочка завершена.
Рис 42. Мариан Реевский
Для остальных букв алфавита Реевский создал похожие цепочки. Он выписал все цепочки и отметил в каждой из них количество связей:
До сих пор мы рассматривали только соответствия между 1-й и 4-й буквами шестибуквенного повторяющегося ключа. В действительности же Реевский проделал то же самое для соответствий между 2-й и 5-й буквами и между 3-й и 6-й буквами определяя в каждом конкретном случае цепочки и количество связей в каждой из них.
Реевский обратил внимание, что каждый день цепочки изменялись. Иногда встречалось множество коротких цепочек, иногда лишь несколько длинных. И разумеется, в цепочках менялись буквы. То, какими были эти цепочки, зависело, несомненно, от параметров установки ключа текущего дня — совокупного влияния установок на штепсельной коммутационной панели, взаимного расположения и ориентации шифраторов. Однако оставался вопрос, как же Реевскому из этих цепочек найти ключ текущего дня? Какой ключ из 10 000 000 000 000 000 возможных ключей текущего дня соответствовал конкретной структуре цепочек? Количество вероятностей было просто огромным.
И именно в этот момент Реевского озарило. Хотя и установки на штепсельной коммутационной панели, и взаимное расположение, и ориентация шифраторов оказывали влияние на элементы цепочек, но их вклад можно было в какой-то степени разделить. В частности, у цепочек есть одно свойство, целиком зависящее от установок шифраторов и никак не связанное с установками на штепсельной коммутационной панели: количество связей в цепочках зависит исключительно от установок шифраторов. Возьмем, к примеру, вышеприведенный пример и предположим, что ключ текущего дня требует перестановки букв S и G на штепсельной коммутационной панели. Если мы изменим этот элемент ключа текущего дня, сняв кабель, с помощью которого осуществляется перестановка этих букв S и G, и используем его, чтобы выполнить перестановку, скажем, букв Т и К, то цепочки изменятся следующим образом:
Некоторые буквы в цепочках изменились, но, что важно, количество связей в каждой цепочке осталось тем же. Реевский нашел то свойство цепочек, которое зависело лишь от установок шифраторов.
Полное число установок шифраторов равно количеству взаимных расположений шифраторов (6), умноженному на количество ориентаций шифраторов (17 576), что составляет 105 456. Поэтому вместо того, чтобы беспокоиться о том, какой из 10 000 000 000 000 000 ключей текущего дня связан с конкретной группой цепочек, Реевский смог заняться гораздо более простой задачей: какая из 105 456 установок шифраторов связана с количеством связей в группе цепочек? Это число по-прежнему велико, но все же примерно в сотню миллиардов раз меньше общего числа возможных ключей текущего дня. Другими словами, задача стала в сотню миллиардов раз проще — уже в пределах человеческих возможностей.
Реевский поступил следующим образом. Благодаря шпионской деятельности Ханс-Тило Шмидта, он получил доступ к точным копиям шифровальных машин «Энигма». Его команда приступила к кропотливой проверке каждой из 105 456 установок шифраторов и каталогизации длин цепочек, которые образовывались при каждой установке. Потребовался целый год, чтобы завершить создание такого каталога, но, как только в Бюро были накоплены данные, Реевский смог, наконец, приступить к распутыванию шифра «Энигмы».
Ежедневно он просматривал зашифрованные разовые ключи — первые шесть букв перехваченных сообщений, и использовал данную информацию для подготовки своей таблицы соответствий. Это позволило ему выписать цепочки и установить количество связей для каждой из них. К примеру, анализируя 1-ю и 4-ю буквы, можно получить четыре цепочки с 3, 9, 7 и 7 связями. При анализе 2-й и 5-й букв также получаются четыре цепочки с 2 3, 9 и 12 связями. А анализ 3-й и 6-й букв дает в результате пять цепочек с 5, 5, 5, 3 и 8 связями.
У Реевского и сейчас не было никаких предположений о ключе текущего дня, но он знал, что в результате его применения получаются 3 группы цепочек; количество цепочек в группе и связей в каждой из них указаны ниже:
Реевский мог теперь воспользоваться своим каталогом, в котором были представлены все установки шифратора, проиндексированные в соответствии с тем, какой вид цепочек получается при каждой конкретной установке. Найдя запись в каталоге, содержащую требуемое количество цепочек с соответствующим количеством связей в каждой, он сразу же определял установки шифраторов для каждого конкретного ключа текущего дня. Цепочки оказались фактически «отпечатками пальцев», уликой, которая выдавала исходное взаимное расположение и ориентацию шифраторов. Реевский действовал словно детектив: он мог отыскать на месте преступления отпечаток пальца, а затем по базе данных выявить подозреваемого, которому этот отпечаток принадлежит.