Мир математики. т.2. Математики, шпионы и хакеры. Кодирование и криптография - Жуан Гомес
Шрифт:
Интервал:
Закладка:
В июне 1918 г. германские войска готовились напасть на столицу Франции. Для союзников было крайне важно перехватить вражеские сообщения, чтобы выяснить, где именно произойдет вторжение. Немецкие сообщения, предназначенные для фронта, были зашифрованы шифром ADFGVX, который немецкие военные считали неуязвимым.
Наш интерес к этому шифру связан с тем, что он сочетает в себе алгоритмы подстановки и перестановочного шифрования. Это один из самых изощренных методов классической криптографии. Немцы начали использовать его в марте 1918 г., и как только французы узнали о его существовании, они отчаянно принялись за его взлом.
К счастью для них, в центральном шифровальном бюро работал талантливый криптоаналитик Жорж Панвэн. Он посвятил себя этой задаче, работая круглые сутки.
Ночью 2 июня 1918 г. Панвэну удалось расшифровать первое сообщение, зловещим содержанием которого был приказ фронту: «Ускорьте продвижение боевой техники. Даже в дневное время, лишь бы незаметно». В начале шифровки было указано, что она отправлена из местечка, расположенного между Мондидье и Компьень, в 80 километрах к северу от Парижа. Результат Панвэна позволил французам сорвать атаку и остановить продвижение немцев.
Как уже упоминалось, шифр ADFGVX состоит из двух частей: шифра подстановки и шифра перестановки. Первый шаг — подстановка — состоит в следующем: у нас имеется таблица размером 7 х 7, в которой первая строка и первый столбец содержат буквы ADFGVX (см. стр. 58). Остальные поля таблицы случайным образом заполняются 36 символами: 26 букв алфавита и цифры от 0 до 9. Расположение символов представляет собой ключ к шифру, и получателю, очевидно, нужна эта информация, чтобы понять содержание сообщения.
Мы будем использовать следующую таблицу:
Шифр сообщения состоит в замене каждого символа его координатами, выраженными группой букв ADFGVX. Первой координатой будет буква, соответствующая строке, а второй — соответствующая столбцу. Например, если мы хотим зашифровать цифру 4, мы должны написать DV. Сообщение Target is Paris («Цель — Париж») будет зашифровано следующим образом:
До сих пор мы использовали лишь простую подстановку, и частотного анализа было бы достаточно, чтобы расшифровать сообщение.
Однако этот шифр содержит второй шаг — перестановку. Она зависит от ключевого слова, о котором договорились отправитель и получатель. Этот шаг осуществляется следующим образом. Сначала мы построим таблицу с таким числом столбцов, сколько букв в ключевом слове, и заполним поля таблицы зашифрованным текстом.
Буквы ключевого слова пишут в верхнем ряду новой таблицы. В этом примере ключевое слово будет BETA. Построим таблицу, в которой первая строка состоит из букв ключевого слова и следующие строки содержат буквы, полученные после кодирования сообщения на этапе подстановки. Любые пустые ячейки заполняются цифрой ноль, которая, как видно из первой таблицы, имеет код AG.
Чтобы применить второй шаг к нашему сообщению «Цель — Париж», напомним сначала, что после подстановки оно выглядело так:
Используя ключевое слово BETA, мы получим следующую таблицу.
Применяя перестановочный шифр, изменим порядок столбцов, чтобы буквы ключевого слова были расположены в алфавитном порядке. Это даст нам следующую таблицу.
Зашифрованное послание получается, если брать буквы этой таблицы по столбцам. В нашем примере это будет:
AAXFAXGGFGVAFVXWXDVFFDGVFVA
Как мы видим, теперь сообщение состоит из вроде бы случайного набора букв A, D, F, G, V и X. Немцы выбрали эти шесть букв, потому что по звучанию в азбуке Морзе они сильно отличаются друг от друга, и получатель легко может отсеять возможные при передаче ошибки. Более того, поскольку сообщения состоят из шести букв, посылать такие телеграфные передачи могли даже неопытные операторы.
Если мы обратимся к таблице кодов Морзе в начале главы, то увидим следующие коды для каждой из букв шифра ADFGVX:
Чтобы расшифровать сообщение, получателю необходимо знать распределение букв и цифр в базисной таблице и ключевое слово.
Шифровальная машина «Энигма»В 1919 г. немецкий инженер Артур Шербиус запатентовал машину для защищенной связи. Ее название, «Энигма», с тех пор стало синонимом военной тайны.
Несмотря на свою сложность, «Энигма», по сути, является улучшенной версией диска Альберти.
Благодаря относительной простоте использования и сложности выдаваемых шифров, система «Энигма» была выбрана германским правительством для шифрования большей части военных донесений в годы Второй мировой войны.
Именно поэтому расшифровка кодов «Энигмы» стала абсолютным приоритетом для правительств стран, воюющих с нацистской Германией. Когда это наконец удалось, сообщения, перехваченные и расшифрованные разведками союзников, оказались решающими для завершения военного конфликта. История расшифровки кода «Энигмы» — это захватывающая эпопея с участием отделов разведки Польши и Великобритании, а также гениального математика Алана Тьюринга, человека, считающегося отцом современной вычислительной техники. В результате работы по взлому кода «Энигмы» появился первый в мире компьютер, что можно считать самым значительным событием в долгой и яркой истории военного криптоанализа.
Слева: немецкие солдаты во время Второй мировой войны записывают сообщение, зашифрованное с помощью <<Энигмы». Справа: реплика четырехроторной «Энигмы».
«Энигма» представляла собой электромагнитное устройство, внешне похожее на пишущую машинку. Уникальной ее делало то, что ее механические части меняли положение после каждого нажатия клавиш, так что даже при нажатии подряд одной и той же буквы символ каждый раз кодировался по-новому.
На практике процесс шифрования был относительно прост. Сначала оператор устанавливал различные разъемы и роторы машины в соответствии с исходным положением, заданным справочником кодов, используемых на данный момент (эти справочники регулярно менялись). Затем он печатал первую букву открытого текста, и машина автоматически генерировала код, который появлялся на светящейся панели — это была первая буква зашифрованного сообщения.
Первое переключение ротора поворачивало его в одну из 26 возможных позиций. Каждое положение переключателя соответствовало новому шифру. После этого оператор вводил вторую букву и так далее. Чтобы расшифровать сообщение, достаточно было ввести зашифрованные символы в другую машину «Энигма» с теми же исходными параметрами, что и у машины, использованной для шифрования.
* * *
ТРАНШЕЙНЫЕ КОДЫ
В бою использовать сложные шифры, такие как ADFGVX, было очень трудно. Во время гражданской войны в Испании (1936–1939), например, применялся более простой шифр подстановки:
Как мы видим, несколько букв имеют более одного зашифрованного символа. Например, буква R может быть заменена на 28 или 54. Слово GUERRA («Война») будет зашифровано как 167427285453. Эти коды, которые фактически были шифром подстановки, получили название траншейных кодов и предназначались для особых целей.
Clave Violeta («фиолетовый ключ», слева) использовался 415-м батальоном 104-й бригады республиканцев и был перехвачен националистами. Примечание переводится как: «Шифры обязательно должны быть представлены в виде букв. Столбцы [строки] с пометкой (1) соответствуют алфавиту. Столбцы с пометкой (2) соответствуют их зашифрованным эквивалентам».
Для обеспечения более высокого уровня секретности националисты во главе с генералом Франко применили особое оружие — 30 машин «Энигма», присланных нацистскими союзниками.
Это было первое интенсивное использование в военных целях шифровальных устройств, которые Германия начала широко применять во время Второй мировой войны. Британцы пытались взломать код во время испанского конфликта, но безуспешно.
Телеграмма от 27 октября 1936 г. начальнику сектора Гэанада (республиканцу): «Ваша телеграмма, зашифрованная вчера… не подлежит расшифровке».
Зашифрованное сообщение республиканцев, перехваченное испанскими фашистами-фалангистами на Канарских островах.
* * *
На рисунке на следующей странице представлена упрощенная схема механизма «Энигмы», где для шифрования используются роторы с алфавитом из трех букв.