Математики, шпионы и хакеры. Кодирование и криптография
Шрифт:
В XX в. благодаря изобретению радио традиционный телеграф заменила беспроводная связь. Телеграфисты недавнего прошлого стали радистами. Новая технология позволила обмениваться информацией с еще большей скоростью и в большем объеме.
Однако сообщения, посылаемые в виде электромагнитных волн, можно относительно легко перехватить. Это обеспечило криптоаналитиков большим количеством зашифрованного материала и помогло укрепить их позиции в борьбе с криптографами, потому что большинство шифров, используемых правительствами и тайными агентами, даже самые секретные, были основаны на известных алгоритмах. Так было и в случае с шифром Плейфера, изобретенным сэром Чарльзом
* * *
СПАСИТЕ НАШИ ДУШИ, КОРАБЛЬ ИЛИ ЧТО-НИБУДЬ ЕЩЕ, НАЧИНАЮЩЕЕСЯ С БУКВЫ «S»
Самым известным сигналом в азбуке Морзе является SOS. Он был выбран группой европейских стран в качестве сигнала бедствия из-за простоты передачи (три точки, три тире, три точки) — эти буквы не являлись аббревиатурой. Тем не менее, вскоре появились альтернативные «расшифровки». Самым известным из этих «бэкронимов» является значение «Save Our Souls» («Спасите наши души»). Позже, так как сигнал часто использовали на море, популярным стало другое значение: «Save Our Ship» («Спасите наш корабль»).
* * *
Несмотря на изобретательность их создателей, расшифровка этих модифицированных шифров в конечном счете была вопросом времени и вычислительных мощностей. Криптографическая история Первой мировой войны прекрасно это иллюстрирует. Мы уже рассказали о слабости немецких дипломатических шифров во время инцидента с телеграммой Циммермана. Но оказалось, о чем сами немцы даже не подозревали, что другой их шифр, известный как ADFGVX и используемый для шифрования наиболее секретных сообщений, предназначенных для фронта, также был взломан вражескими криптоаналитиками, несмотря на то, что считался неуязвимым. Этот двойной провал немецких шифровальщиков Первой мировой войны привел к тому, что все стороны осознали необходимость разработки более надежных шифров. Этой цели можно было достигнуть, лишь сильно затруднив криптоанализ.
В июне 1918 г. германские войска готовились напасть на столицу Франции. Для союзников было крайне важно перехватить вражеские сообщения, чтобы выяснить, где именно произойдет вторжение. Немецкие сообщения, предназначенные для фронта, были зашифрованы шифром ADFGVX, который немецкие военные считали неуязвимым.
Наш интерес к этому шифру связан с тем, что он сочетает в себе алгоритмы подстановки и перестановочного шифрования. Это один из самых изощренных методов классической криптографии. Немцы начали использовать его в марте 1918 г., и как только французы узнали о его существовании, они отчаянно принялись за его взлом.
К счастью для них, в центральном шифровальном бюро работал талантливый криптоаналитик Жорж Панвэн. Он посвятил себя этой задаче, работая круглые сутки.
Ночью 2 июня 1918 г. Панвэну удалось расшифровать первое сообщение, зловещим содержанием которого был приказ фронту: «Ускорьте продвижение боевой техники. Даже в дневное время, лишь бы незаметно». В начале шифровки было указано, что она отправлена из местечка, расположенного между Мондидье и Компьень, в 80 километрах к северу от Парижа. Результат Панвэна позволил французам сорвать атаку и остановить продвижение немцев.
Как уже упоминалось, шифр ADFGVX состоит из двух частей: шифра подстановки и шифра перестановки. Первый шаг — подстановка — состоит в следующем:
Мы будем использовать следующую таблицу:
Шифр сообщения состоит в замене каждого символа его координатами, выраженными группой букв ADFGVX. Первой координатой будет буква, соответствующая строке, а второй — соответствующая столбцу. Например, если мы хотим зашифровать цифру 4, мы должны написать DV. Сообщение Target is Paris («Цель — Париж») будет зашифровано следующим образом:
До сих пор мы использовали лишь простую подстановку, и частотного анализа было бы достаточно, чтобы расшифровать сообщение.
Однако этот шифр содержит второй шаг — перестановку. Она зависит от ключевого слова, о котором договорились отправитель и получатель. Этот шаг осуществляется следующим образом. Сначала мы построим таблицу с таким числом столбцов, сколько букв в ключевом слове, и заполним поля таблицы зашифрованным текстом.
Буквы ключевого слова пишут в верхнем ряду новой таблицы. В этом примере ключевое слово будет BETA. Построим таблицу, в которой первая строка состоит из букв ключевого слова и следующие строки содержат буквы, полученные после кодирования сообщения на этапе подстановки. Любые пустые ячейки заполняются цифрой ноль, которая, как видно из первой таблицы, имеет код AG.
Чтобы применить второй шаг к нашему сообщению «Цель — Париж», напомним сначала, что после подстановки оно выглядело так:
Используя ключевое слово BETA, мы получим следующую таблицу.
Применяя перестановочный шифр, изменим порядок столбцов, чтобы буквы ключевого слова были расположены в алфавитном порядке. Это даст нам следующую таблицу.
Зашифрованное послание получается, если брать буквы этой таблицы по столбцам. В нашем примере это будет:
AAXFAXGGFGVAFVXWXDVFFDGVFVA
Как мы видим, теперь сообщение состоит из вроде бы случайного набора букв A, D, F, G, V и X. Немцы выбрали эти шесть букв, потому что по звучанию в азбуке Морзе они сильно отличаются друг от друга, и получатель легко может отсеять возможные при передаче ошибки. Более того, поскольку сообщения состоят из шести букв, посылать такие телеграфные передачи могли даже неопытные операторы.