Код
#статьи

Тьюринг против Гитлера, или Как гики два раза хакнули немецкие «Энигмы»

Это был эпичный холивар: ботаники против мощнейшей военной машины. Спойлер: наши победили — как и в знаменитом фильме.

Иллюстрация: Wikimedia Commons / Annie для Skillbox Media

Вторая мировая стала, кроме всего прочего, гигантской битвой интеллектов. И готовились к ней заранее. Ещё 23 февраля 1918 года немецкий инженер Артур Шербиус запатентовал роторную шифровальную машину, основал с коллегой Рихардом Риттером фирму Scherbius & Ritter и начал искать выходы на германские ВМФ, армию и МИД.

Через пять лет Шербиус и Риттер вошли в совет директоров корпорации Chiffriermaschinen AG, которая выпустила улучшенную версию машины под брендом Enigma A и стала интенсивно продвигать её на все возможные рынки.

Немецкая «Энигма», захваченная во время боевых действий
Фото: ImagineerInc / Shutterstock

С 1925 года «Энигмой» третьего поколения, наконец, заинтересовались военно-морские силы Германии и начали закупать её под названием Funkschlüssel C. А через три года, 15 июля 1928-го, в немецкой армии внедрили чисто военную разработку Enigma G. В 1930-е её модернизировали до более портативной Enigma I, она же «„Энигма“ вермахта». Так началось её триумфальное шествие по всем фронтам и родам войск.

С учётом различных модификаций было выпущено около 100 000 экземпляров «Энигмы». Существовали специальные машины для войсковой разведки (усовершенствованная G, она же «„Энигма“ абвера») и для подводников (модель М4, она же «Тритон»), для немецких союзников из Италии (модель D) и Японии (модель Т, она же «Тирпиц»).

Даже после окончания войны страны-победители продавали трофейные немецкие «Энигмы» в растущие армии третьего мира. Эти машинки по-прежнему считались надёжными и применялись чуть ли не до конца ХХ века. Что неудивительно: «Энигма» при всей внешней простоте и удобстве эксплуатации обладала какой-то чудовищной по тем временам вариативностью комбинаций и долго казалась недоступной для расшифровки.

Электрика, механика и никакого мошенства

По сути, любая «Энигма» была комбинацией механических и электрических систем.

Механическая часть состояла из клавиатуры, набора роторов, расположенных вдоль вала, и ступенчатого механизма, приводящего в движение один или несколько роторов при нажатии клавиш.

Электрическая схема соединяла клавиатуру, коммутационную панель, лампочки и, с помощью скользящих контактов, роторы.

Общий для всех моделей принцип работы приведён на упрощённой диаграмме снизу (на самом деле механизм состоял из 26 лампочек, клавиш, разъёмов и электрических схем внутри роторов).

Схема «Энигмы»
Иллюстрация: Wikimedia Commons

Ток от источника питания 1 через переключатель на клавиатуре 2 поступал в разъём коммутационной панели 3, где происходила перекоммутация между клавиатурой и неподвижным входным колесом 4. Далее через схему соединений трёх (в армейской модели) или четырёх (в морской) роторов 5 ток входил в рефлектор 6, откуда возвращался обратно через роторы и входное колесо, но уже по другому пути (следите за красной стрелочкой). Потом он шёл через разъём S, соединённый с разъёмом D, через другой переключатель 9, и зажигалась лампочка. Так буква «А» превращалась в букву «D».

Слово из трёх букв

Чтобы расшифровать закодированное таким образом сообщение, «Энигмы» отправителя и получателя нужно было настроить одинаково. Иными словами, требовалось обеспечить полную идентичность следующих параметров:

  • порядок расстановки роторов;
  • их начальные позиции;
  • соединения коммутационной панели.

Перечисленные настройки (так называемые дневные ключи шифрования) оговаривались заранее и записывались в специальных кодовых книгах. При этом, даже если разведчикам удавалось узнать хранимые в секрете дневные ключи (что само по себе было практически невозможно), шифр всё равно оставался нечитаемым.

Судите сами: при неизвестной схеме число конфигураций даже для простой, трёхроторной «„Энигмы“ вермахта» составляло около 10114 (380 бит). А если вдруг в ваших руках оказались бы все настройки, оно сократилось бы до 76 бит, или 1023. Что, конечно, неплохо, но попробуйте посчитать сами, сколько времени потребуется, чтобы вручную перебрать все комбинации.

Вдобавок к этому весь код «Энигмы» состоял только из 26 букв латинского алфавита. Прочие символы заменялись их редкими комбинациями. Скажем, пробелы могли вообще пропускать, вместо точки писать «Х», вместо запятой — «ZZ» и так далее. Плюс армейский жаргон: например, вместо «CH» в словах «ACHT» («восемь») или «RICHTUNG» («направление») писали «Q» («AQT», «RIQTUNG»), вместо двух, трёх и четырёх нолей — «CENTA», «MILLE» и «MYRIA» соответственно.

Чтобы осложнить криптоанализ, сообщения делали не длиннее 250 символов; более многословные разбивали на части, для каждой из которых использовался свой ключ. Наконец, шифровки периодически специально забивали «спамом» — бессвязным набором букв, рандомно вставленными в текст словами и так далее. Так что немцы почти всю войну пребывали в счастливой уверенности, что их сообщения понятны только им. А зря.

Начало славных дел

Первые шифровки «Энигмы» начали перехватывать в 1926‑м. В январе 1929‑го коммерческий вариант машины случайно попал на варшавскую таможню. В германском посольстве занервничали и попросили её срочно вернуть, что насторожило поляков. «Энигму» отдали владельцам только после того, как её, по просьбе польского «Бюро шифров», изучили криптоаналитики из фирмы AVA.

Спустя пару лет на контакт с французскими разведчиками, которые считались тогда корифеями мировой криптографии, вышел некий агент Аше, он же сотрудник шифрбюро германского министерства обороны Ганс‑Тило Шмидт. Обиженный тем, что родина не оценила его усилий в Первой мировой и предпочла продвигать по армейской карьерной лестнице его менее способного братца Рудольфа, Ганс решил ей отомстить, а заодно поднять деньжат.

Ганс-Тило Шмидт со своей женой Шарлоттой
Фото: Library of Congress

В ноябре 1931 года в «Гранд-отеле» бельгийского города Вервье он встретился с земляком‑берлинцем и одновременно французским агентом Рудольфом Лемуаном (позывной Рекс) и передал ему старые дневные ключи «Энигмы», которые, согласно служебным обязанностям, должен был регулярно уничтожать, а также инструкцию по эксплуатации её военного варианта. За что получил 10 тысяч марок, или примерно 50 тысяч долларов, если переводить на современные деньги.

Что характерно, бурная изменническая деятельность Шмидта у его бывших врагов из Франции тоже особого энтузиазма не вызвала. Как и у их коллег из Великобритании. Переданные ключи сочли для криптографических исследований мало интересными. К счастью, главой отдела Д французской разведслужбы был капитан Гюстав Бертран, имевший, помимо прочего, контакты с польской разведкой. Наслышанный об их успехах в дешифровке, он решил передать документы по «Энигме» им. Поляки взялись за дело.

Это была «Бомба»

В декабре 1932 года кодовые книги Шмидта оказались в руках Мариана Реевского — польского математика, сотрудника Бюро шифров в Варшаве. Проанализировав их, он смог понять, чем внутренняя электропроводка военной «Энигмы» отличается от ранее изученной коммерческой, и построить её точную копию. Теперь можно было приступать, собственно, к дешифровке.

Из инструкции к «Энигме» Реевский узнал кое-что новое: оказывается, оператор не имел права использовать дневной ключ для шифрования сообщений. Вместо этого он должен был придумать так называемый Spruchschlüssel — произвольное сочетание трёх букв и дважды отправить его с помощью дневного ключа. После чего менял настройки в соответствии со Spruchschlüssel и отправлял само сообщение.

На практике это выглядело так. Предположим, дневной ключ шифрования сегодня — GBL. А Spruchschlüssel, придуманный оператором — KYG. Оператор должен был выставить роторы в положение GBL и ввести KYGKYG (на выходе получалось какое-нибудь QZKBLX), после чего он выставлял роторы в KYG и вводил уже настоящую шифровку. Принимающий делал всё ровно наоборот.

Сейчас уже неизвестно, зачем Spruchschlüssel решили повторять именно дважды. Возможно, это нужно было для выявления каких-то искажений — но в этом и крылась фатальная уязвимость: периодически (примерно в каждом восьмом сообщении) одна из повторяющихся букв в Spruchschlüssel зашифровывалась одинаковыми буквами. Возникали так называемые female-пары — первая буква совпадала с четвёртой (например, SVKSAZ), вторая — с пятой (DAWLAQ) или третья — с шестой (RTXEAX).

Мариан Адам Реевский, конец 1943 — 1944 год
Фото: U.S. National Cryptologic Museum

Реевский пришёл к простому выводу, основанному на теории вероятностей. Роторов — всего три. Соответственно, разных способов их расстановки:

3! = 6

Букв в «Энигме» — 26. Следовательно, количество разнообразных трёхбуквенных комбинаций, которые можно из них составить:

263 = 17 576

А общее число комбинаций:

6 × 17 576 = 105 456

Это было уже что-то. Используя процедурные ошибки немцев, поляки сконструировали циклометр — устройство из двух последовательно соединённых «Энигм» с позициями роторов, смещёнными на три деления друг относительно друга. С его помощью перебрали все возможные комбинации и составили полный каталог. По словам Реевского, эта работа «была утомительной и заняла больше года, но после её завершения дневные ключи могли быть определены за 15 минут».

Немного позже поляки построили «Бомбу» — устройство, с помощью которого можно было пройти все 17 576 позиций роторов от ААА до ZZZ примерно за два часа. Шести «Бомб» с разными комбинациями роторов было достаточно, чтобы раскрыть за это время любую загадку «Энигмы».

Схема польской «Бомбы»
Изображение: Wikimedia Commons

Метод Тьюринга

15 декабря 1939 года появилась новая проблема: число роторов в «Энигме» увеличили с трёх до пяти. Соответственно, количество возможных комбинаций возросло с шести до ста двадцати. Через пару недель, помимо количественных, появились и качественные трудности: 1 января немцы изменили схему соединений коммутаторной панели, а с 1 мая 1940 года и вовсе отказались от удвоения Spruchschlüssel, что сделало идею их угадывания с помощью «Бомб» полностью бесполезной.

Впрочем, и самих «Бомб» к тому времени уже не существовало: после немецкого вторжения 1 сентября 1939 года работники Бюро шифров были вынуждены уничтожить все свои разработки и бежать из Варшавы. Центр борьбы с «Энигмой» переместился в Блетчли-парк, Великобритания.

Руководителем проекта стал ветеран военной разведки Алистер Деннистон. К подбору кадров он подошёл нестандартно, привлекая в первую очередь людей с высоким интеллектом, независимо от профессии. В его штате были лингвисты и шахматисты, чемпионы по решению кроссвордов, египтологи и даже палеонтологи. Но ключевую роль сыграли, естественно, математики — и в первую очередь, гениальный Алан Тьюринг, работавший там с самого начала.

Алан Тьюринг бежит марафонскую дистанцию в 1946 году
Фото: Science Photo Library

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

Первую сконструированную им «Бомбу» запустили в Блетчли 18 марта 1940 года. С её помощью разгадали код люфтваффе, а чуть позже — кригсмарине. Тьюринг понял, что текущая методика расшифровки — тупиковая: она требовала всё больших затрат труда и времени, а противник быстро исправлял свои ошибки и увеличивал число комбинаций.

Тогда Тьюринг предложил более эффективный способ: поиск буквенных последовательностей на основе подобранного открытого текста. Идея была в следующем: ежедневно разгадывать небольшой отрывок из сообщения и механическим перебором 26 символов латиницы находить точное место этого отрывка в зашифрованном тексте.

Первый шаг был сравнительно простым: несмотря на сложности шифров и параноидальную секретность, немецкие военные всё же общались между собой довольно стереотипными фразами.

Второй шаг был сложнее, но и тут Тьюринг выкрутился — он предложил осуществить его на основании ещё одной известной к тому времени уязвимости «Энигмы»: машинка могла заменить букву на любую другую букву, но только не на саму себя.

Всё получалось на редкость изящно. Допустим, нам известно, что все прогнозы погоды противника всегда начинаются со слов WETTERVORHERSAGEBISKAYA. А перехваченная шифровка выглядит так: …QFZWRWIVTYRESXBFOGKUHQBAISEZ…

Начинаем двигать известное вдоль неизвестного:

Ну нет, так не пойдёт: как видите, буква S шифруется сама в себя, а этого не может быть. Смещаем шифр дальше — и так до тех пор, пока не получим полностью не совпадающий вариант:

Итак, половина дела сделана: мы знаем, что R расшифровывается как W на первой позиции, и так далее:

А вот то же самое, только в виде диаграммы:

Расшифровка «Энигмы»
Изображение: Wikimedia Commons

Теперь оставалось реализовать всё в железе. Для каждой возможной настройки ротора «Бомба» Тьюринга производила ряд логических предположений, определяла противоречие, сбрасывала набор параметров и переходила к следующему.

«Бомба» Тьюринга
Фото: Library of Congress

Таким образом уже к лету 1941 года разгадка «Энигмы» позволила сократить потери грузов от действий немецких подлодок до 100 000 тонн в месяц. Однако и этого было недостаточно: ресурсов Блетчли не хватало, а попытки получить больше людей и денег для постройки новых «Бомб» ни к чему не приводили.

Поэтому 28 октября того же года, нарушая все правила, Тьюринг с коллегами отправили Черчиллю письмо и объяснили, что их запросы ничтожны по сравнению с возможной выгодой (ещё одно доказательство важности софт-скиллов и умения общаться на языке бизнеса). Черчилль послал срочное сообщение генералу Исмею: «К НЕМЕДЛЕННОМУ ИСПОЛНЕНИЮ. Удостоверьтесь, что у них есть всё, что нужно, и отчитайтесь мне о выполнении».

Через три недели Исмей докладывал, что все требования учёных удовлетворены. А к концу войны в эксплуатацию было запущено уже более двух сотен «Бомб» Тьюринга. Враг был разбит, победа была за нами.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована