Чёрный кабинет EN

Урок №08 1920–1945 22 мин

Энигма

Шифровальная машина, которую её создатели считали невзламываемой. Разбираем её по винтикам — роторы, рефлектор, коммутатор — и смотрим, какая крошечная особенность её погубила.

В этом уроке

  • как ротор превращает одну замену в 26 разных
  • что такое двойной шаг среднего ротора
  • почему рефлектор удобен и почему он погубил машину
  • как поляки и британцы ломали Энигму шпаргалками и «бомбами»

Шесть часов утра, 1942 год. Немецкая метеостанция где-то в Атлантике передаёт сводку погоды: облачность, ветер, видимость. Сводка короткая и скучная. Её шифруют на машине размером с пишущую машинку, и в эфир уходит бессмысленная мешанина из групп по пять букв. Через несколько часов в английском поместье Блетчли-парк, в деревянном бараке, эту мешанину читают — и узнают из неё ключ, которым весь день будет шифроваться немецкий флот.

Машина называлась Энигма — по-гречески «загадка». Её создатели были уверены, что разгадать её нельзя: настроек у неё было больше, чем звёзд в нашей Галактике. И всё же её взломали — сначала польские математики, потом британцы. Сегодня разберём, как она устроена и где в ней пряталась слабость.

Машина вместо таблицы

Энигму придумал немецкий инженер Артур Шербиус; патент он подал в 1918 году. Сначала машину продавали банкам и фирмам как коммерческий шифратор, а во второй половине 1920-х её приняли на вооружение немецкие флот и армия. Мы будем говорить о самой распространённой военной модели — Энигме I.

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

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

Ротор: перепутанные провода

Сердце машины — ротор, колёсико размером с шайбу. На каждой его стороне по 26 контактов, по одному на букву. Внутри контакты соединены проводами вперемешку: контакт A на одной стороне ведёт, скажем, к E на другой, B — к K и так далее. Один ротор — это просто шифр простой замены, зашитый в медь.

Хитрость в том, что ротор поворачивается. Перед каждой буквой правый ротор поворачивается на одно деление, и все его провода смещаются относительно входа. Та же клавиша A теперь попадает в другой провод и выходит другой буквой. Один ротор даёт 26 разных замен подряд.

Роторов в машине три, и они вращаются как счётчик километров в автомобиле. Правый поворачивается при каждом нажатии. Когда он проходит определённую букву — у каждого ротора она своя и отмечена выемкой на ободе, — он подталкивает средний. Средний так же раз в оборот подталкивает левый. Буквы, на которых стоят роторы, видны в трёх окошках на крышке.

Нажимайте клавиши на экране или на своей клавиатуре (кликните по машине). Справа — путь тока: красным туда, синим обратно. Стрелки над и под окошками поворачивают роторы. Нажмите одну и ту же букву несколько раз: лампы каждый раз разные.

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

Двойной шаг

У счётчика километров есть одна странность, которой нет у Энигмы, и наоборот. В Энигме средний ротор, подтолкнув левого соседа, заодно поворачивается и сам. Получается, что раз в 650 нажатий он шагает два раза подряд. Нажмите в виджете «Показать двойной шаг» и трижды любую клавишу: окошки пройдут ADU → ADV → AEW → BFX. Средний ротор сдвинулся с D на E, а со следующей буквой — сразу на F.

Это не ошибка конструкции, а следствие механики: рычажок, который толкает левый ротор, упирается в выемку среднего и тянет его за собой. Из-за двойного шага полный цикл машины чуть короче, чем 26 × 26 × 26: не 17 576, а 16 900 положений. Для шифра это мелочь, а для тех, кто строит симулятор, — классическая ловушка.

Вы нажали одну и ту же клавишу пять раз подряд: AAAAA. Что загорится?

Перед каждой буквой ротор поворачивается, и ток идёт по новым проводам. На машине с роторами I-II-III, рефлектором B и окошками AAA пять нажатий A дают BDZGO. Повтор в открытом тексте не виден в шифре — именно поэтому частотный анализ здесь бессилен.

Рефлектор: удобство и роковой изъян

Рефлектор — неподвижный диск слева от роторов. Он соединяет буквы попарно и отправляет ток обратно. Зачем он нужен? Ради удобства. Благодаря рефлектору машина становится обратимой: если при какой-то настройке A превращается в R, то при той же настройке R превращается в A. Значит, шифровать и расшифровывать можно одной и той же операцией. Получатель ставит роторы так же, как отправитель, печатает шифровку — и на лампах загорается открытый текст. Никаких переключателей «зашифровать / расшифровать».

Но у удобства есть цена. Ток уходит в рефлектор по одному проводу, а возвращается по другому: рефлектор никогда не соединяет букву саму с собой. Поэтому Энигма никогда не шифрует букву в ту же букву. A может стать чем угодно, кроме A. Запомните это свойство — именно оно погубило машину.

Энигма никогда не превращает букву в саму себя. Это кажется мелочью, но это утечка: зная, что A не может стоять над A, взломщик отбрасывает целые горы вариантов, не вычисляя ничего.

Коммутатор и число настроек

Военные добавили к машине ещё одну деталь — коммутатор (по-немецки Steckerbrett). Это панель с 26 гнёздами на передней стенке. Кабелем можно соединить две буквы, например A и V, и тогда они меняются местами: до роторов и после них. Обычно ставили десять кабелей, то есть меняли десять пар букв.

Коммутатор не меняется при нажатиях, но он умножает число настроек в астрономическое число раз. Попробуйте сами:

Выберите набор роторов и число кабелей. Столбики внизу — число способов подключить кабели (в логарифмическом масштабе). Пик приходится на 11, а не на 13.

С пятью роторами в ящике и десятью кабелями выходит около 1,59 × 10²⁰ настроек — сто пятьдесят девять миллиардов миллиардов. А ещё есть кольца: каждое можно провернуть относительно проводки, и это сдвигает момент, когда ротор толкает соседа. Перебрать всё вслепую невозможно ни руками, ни машиной 1940 года, ни, честно говоря, современным ноутбуком за разумное время.

Почему же Энигму всё-таки взломали? Потому что большое число ключей — необходимое условие стойкости, но не достаточное. Взломщики не перебирали всё. Они находили способы отбросить почти всё сразу.

Как работали шифровальщики

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

Ещё одна деталь: на машине нет пробела, цифр и знаков препинания. Пробелы и точки заменяли буквой X, числа писали словами. Так что слово «EINS» (один) встречалось в немецких шифровках подозрительно часто.

Вы получили ключевую таблицу на сегодня и перехват. Настройки: роторы IV · I · III (слева направо), рефлектор B, кольца A A A, начальное положение K O T, коммутатор AT BS DE FM IR KN LZ OW PV XY. Шифровка:

ODPIT DWYTN K

Какой пароль передан?

Откройте симулятор Энигмы, выставьте роторы, кольца, старт и пары коммутатора ровно как в таблице. Машина обратима: расшифровка — это просто печать шифровки.

Вставьте шифровку в поле текста. Первые буквы ответа — PAROL, буква X стоит вместо пробела. Текст набран латиницей: русские слова передавали транслитом.

С этими настройками ODPITDWYTNK превращается в PAROLXFILIN: «PAROL FILIN», то есть «пароль — филин». X — разделитель слов.

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

Поляки: математика против машины

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

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

Помогла и разведка. Французы получали документы от немецкого информатора Ханса-Тило Шмидта, среди них — ключевые таблицы за два месяца 1932 года. Французы передали их полякам. С этими таблицами и теорией перестановок Реевский к концу 1932 года восстановил проводку роторов — не видя ни одной военной машины. Вместе с коллегами Ежи Ружицким и Хенриком Зыгальским он построил копии Энигмы, картотеку циклов, перфорированные листы Зыгальского и в 1938 году — электромеханическую «бомбу», которая искала настройки перебором положений.

В июле 1939 года, за пять недель до начала войны, поляки на встрече под Варшавой передали всё, что знали, британцам и французам — вместе с копиями машины.

Блетчли-парк: шпаргалки и бомбы

Немцы тем временем усложняли процедуру: добавили роторы IV и V, а в 1940 году перестали шифровать ключ сообщения дважды. Метод Реевского перестал работать. В Блетчли-парке Алан Тьюринг и Гордон Уэлчман придумали другой подход — через шпаргалку (по-английски crib).

Шпаргалка — это догадка о куске открытого текста. Немцы были педантичны: метеосводки начинались со слова WETTERVORHERSAGE («прогноз погоды»), донесения — с одних и тех же званий и адресов, а ночные дежурные передавали KEINE BESONDEREN EREIGNISSE — «никаких особых происшествий». Если знать, что слово где-то в шифровке, надо понять где. И тут помогает изъян рефлектора: шпаргалка не может стоять там, где хоть одна её буква совпадает с буквой шифра.

Метеосводка, зашифрованная на Энигме. Двигайте слово WETTERVORHERSAGE стрелками, ползунком или клавишами ← →. Красный столбик — буква встала сама над собой, позиция отпадает. Затем нажмите «Проверить все позиции».

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

Ночное донесение с подводной лодки. Известно, что после короткого адреса в нём стоит дежурная фраза KEINEBESONDERENEREIGNISSE (25 букв). На какой позиции она начинается? Позиции считаются с единицы.

ELLIR WBLMH VMCEC MOEAD IRAPI JGLQF QPCVT WXS

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

Вручную это долго. Вот та же шифровка и та же фраза в виджете: нажмите «Проверить все позиции».

Всего позиций 14: шифровка длиной 38 букв, фраза — 25. Тринадцать из них содержат совпадение хотя бы одной буквы и отпадают. Остаётся одна — 11-я. Значит, донесение начинается с десяти букв адреса: VONXUBOOTX — «от U-бота».

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

Почему всё-таки сломали

Легко решить, что Энигму победила одна гениальная идея. На самом деле её победила сумма мелочей.

  • Изъян конструкции. Буква не шифруется в себя — это отсекает позиции шпаргалок и подсказывает противоречия бомбе.
  • Процедура. Двойной ключ сообщения дал Реевскому цепочки, из которых выпал коммутатор.
  • Люди. Шифровальщики выбирали ленивые ключи сообщений — AAA, ABC, буквы подряд по клавиатуре, — повторяли одни и те же фразы, иногда передавали один текст дважды разными шифрами.
  • Захваты. Ключевые таблицы и детали машин снимали с захваченных кораблей, подводных лодок и метеосудов.
  • Масштаб. В Блетчли-парке к концу войны работали тысячи людей, и труд был поставлен на конвейер.

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

Почему британцам было выгодно, что Энигма обратима — что одна и та же настройка и шифрует, и расшифровывает?

Конструкторы купили удобство — не нужен режим «расшифровать» — ценой свойства «ни одна буква не остаётся собой». Оно позволило отбрасывать позиции шпаргалок и строить логику бомбы.

Что взять с собой

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

Энигма пыталась приблизиться к идеалу — шифру, у которого замена никогда не повторяется. Можно ли этого идеала достичь? Можно, и для этого нужна всего одна операция над битами. Дальше: XOR и одноразовый блокнот →

Утилиты урока

Всё из урока — в рабочем виде: вставьте свой текст.