Урок №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, и тогда они меняются местами: до роторов и после них. Обычно ставили десять кабелей, то есть меняли десять пар букв.
Коммутатор не меняется при нажатиях, но он умножает число настроек в астрономическое число раз. Попробуйте сами:
С пятью роторами в ящике и десятью кабелями выходит около 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 — «никаких особых происшествий». Если знать, что слово где-то в шифровке, надо понять где. И тут помогает изъян рефлектора: шпаргалка не может стоять там, где хоть одна её буква совпадает с буквой шифра.
Когда место шпаргалки найдено, получается набор пар «буква открытого текста — буква шифра» на известных расстояниях друг от друга. Британская бомба — шкаф с десятками вращающихся барабанов, эмулирующих Энигмы, — проверяла все положения роторов и искала противоречия. Если предположение о коммутаторе приводило к тому, что буква должна быть соединена сразу с двумя разными буквами, положение отбрасывалось. Первая британская бомба заработала в 1940 году, к концу войны их было больше двухсот. Каждая находила дневной ключ за часы, а не за века.
Ночное донесение с подводной лодки. Известно, что после короткого адреса в нём стоит дежурная фраза KEINEBESONDERENEREIGNISSE (25 букв). На какой позиции она начинается? Позиции считаются с единицы.
ELLIR WBLMH VMCEC MOEAD IRAPI JGLQF QPCVT WXS
Подпишите фразу под шифровкой, начиная с первой буквы. Если хоть одна буква фразы совпала с буквой шифра над ней, эта позиция невозможна. Сдвиньте на одну букву вправо и повторите.
Вручную это долго. Вот та же шифровка и та же фраза в виджете: нажмите «Проверить все позиции».
Всего позиций 14: шифровка длиной 38 букв, фраза — 25. Тринадцать из них содержат совпадение хотя бы одной буквы и отпадают. Остаётся одна — 11-я. Значит, донесение начинается с десяти букв адреса: VONXUBOOTX — «от U-бота».
Для британцев это был бы идеальный день: одна позиция шпаргалки, и бомбу можно запускать сразу. Чаще позиций оставалось несколько, и проверяли каждую. Но даже так изъян рефлектора экономил огромную работу.
Почему всё-таки сломали
Легко решить, что Энигму победила одна гениальная идея. На самом деле её победила сумма мелочей.
- Изъян конструкции. Буква не шифруется в себя — это отсекает позиции шпаргалок и подсказывает противоречия бомбе.
- Процедура. Двойной ключ сообщения дал Реевскому цепочки, из которых выпал коммутатор.
- Люди. Шифровальщики выбирали ленивые ключи сообщений — AAA, ABC, буквы подряд по клавиатуре, — повторяли одни и те же фразы, иногда передавали один текст дважды разными шифрами.
- Захваты. Ключевые таблицы и детали машин снимали с захваченных кораблей, подводных лодок и метеосудов.
- Масштаб. В Блетчли-парке к концу войны работали тысячи людей, и труд был поставлен на конвейер.
Немецкий флот в феврале 1942 года перешёл на четырёхроторную машину M4, и почти на год британцы потеряли возможность читать переписку подводных лодок в Атлантике. Помогли снова захваченные документы и новые, более быстрые бомбы.
Почему британцам было выгодно, что Энигма обратима — что одна и та же настройка и шифрует, и расшифровывает?
Конструкторы купили удобство — не нужен режим «расшифровать» — ценой свойства «ни одна буква не остаётся собой». Оно позволило отбрасывать позиции шпаргалок и строить логику бомбы.
Что взять с собой
- Ротор — это замена, зашитая в провода. Поворачиваясь перед каждой буквой, он даёт новую замену, а три ротора с рефлектором и коммутатором — новую таблицу на каждое нажатие.
- Роторы вращаются как счётчик, но средний делает двойной шаг: раз в оборот он поворачивается два раза подряд.
- Рефлектор делает машину обратимой и при этом запрещает букве шифроваться в себя. Это и стало главной лазейкой.
- Огромное число ключей не спасает, если есть способ отбросить почти все без перебора: шпаргалки, процедурные ошибки, человеческие привычки.
Энигма пыталась приблизиться к идеалу — шифру, у которого замена никогда не повторяется. Можно ли этого идеала достичь? Можно, и для этого нужна всего одна операция над битами. Дальше: XOR и одноразовый блокнот →
Утилиты урока
Всё из урока — в рабочем виде: вставьте свой текст.