Шифровальная машина Enigma долгое время считалась венцом инженерной мысли и символом несокрушимой немецкой криптографии. В этом видео эксперт из Perimeter Institute наглядно демонстрирует внутреннее устройство оригинального аппарата 1930-х годов, объясняет математическую сложность системы и раскрывает секрет, почему двойные буквы в тексте никогда не превращались в двойные буквы в шифре.
⚙️ Устройство и внешний вид: портативность против веса 0:05
Машина Enigma, представленная в обзоре, выполнена в характерной стилистике 1930-х годов: черный корпус, серебристые акценты, сочетание дерева и стали . Несмотря на визуальное сходство с печатной машинкой, у Enigma есть принципиальное отличие — отсутствие каретки и бумаги.
Вместо того чтобы печатать символы на листе, машина подсвечивает буквы на специальной панели с 26 лампочками . Ведущий объясняет, что это было осознанным конструкторским решением: добавление печатающего механизма сделало бы устройство в восемь раз тяжелее . Для обеспечения мобильности в полевых условиях конструкторы пожертвовали автоматизацией записи, поэтому рядом с оператором всегда должен был находиться ассистент, записывающий загорающиеся буквы в блокнот.
🔄 Принцип работы: «Spaghetti wiring» и вращающиеся роторы 2:32
В основе работы Enigma лежит простая электрическая цепь: батарейка соединена с лампочками через сложную систему контактов . Однако «магия» шифрования скрыта в трех компонентах:
- Роторы (колеса): Внутри каждого ротора находится хаотичное сплетение проводов, которое ведущий называет «spaghetti wiring» . Эти провода соединяют входные контакты с выходными в перепутанном порядке.
- Механизм вращения: С каждым нажатием клавиши правый ротор сдвигается на одну позицию . Когда он совершает полный оборот (26 шагов), он толкает средний ротор, а тот, в свою очередь, — левый. Это напоминает работу стрелок в часах: секундной, минутной и часовой .
- Plugboard (Коммутационная панель): Расположена на передней панели машины. С помощью кабелей, похожих на штекеры старых телефонных станций, оператор соединяет пары букв . По словам эксперта, это ключевой элемент, добавляющий системе колоссальную сложность.
Главная особенность Enigma — динамическая смена кода. Если в старых шифрах буква «L» всегда заменялась бы на одну и ту же букву, то здесь при нажатии «L» дважды подряд на выходе получатся два разных символа, так как ротор уже повернулся и изменил путь электрического тока .
💻 Визуализация процесса: путь сигнала через систему 5:27
Для демонстрации того, что происходит внутри машины в момент нажатия клавиши, ведущий использует цифровой симулятор . При нажатии клавиши (например, буквы G) ток проходит через всю систему:
- Сигнал идет через коммутационную панель.
- Проходит через три ротора (первый, второй и третий) .
- Попадает в рефлектор — специальное зеркало в конце цепи, которое разворачивает сигнал.
- Ток возвращается через те же три ротора в обратном порядке, но уже по другому пути из-за смещения проводов .
- В итоге зажигается лампочка (например, J).
Этот путь «туда и обратно» делает машину симметричной: если нажать букву кода при тех же настройках, вы получите исходную букву .
🔢 Математика неуязвимости: 10 квадриллионов комбинаций 8:48
Немецкие военные считали код Enigma незыблемым из-за астрономического количества возможных настроек. Ежедневно операторы получали секретные листы с кодами, где указывались параметры на каждый день месяца .
Общая сложность складывалась из нескольких множителей:
- Порядок роторов: Три ротора можно поменять местами шестью разными способами .
- Настройка колец (Ring setting): У каждого ротора есть 26 положений внутреннего кольца. Для трех роторов это $26 \times 26 \times 26 = 17\,576$ комбинаций .
- Коммутационная панель: Соединение букв парами дает самый большой прирост сложности. По словам ведущего, для 6 пар букв количество комбинаций составляет около 100 миллиардов .
- Начальная позиция: Каждый ротор имеет 26 стартовых позиций ($17\,576$ вариантов) .
Перемножив все возможности, мы получаем около 10 000 триллионов (10 квадриллионов) способов настройки машины . Немцы верили, что проверить все варианты физически невозможно .
🛡️ Протокол безопасности: секретный ключ каждого сообщения 12:06
Важным аспектом безопасности было то, что немцы никогда не шифровали все сообщения дня на одной и той же настройке роторов. Использование единого ключа для сотен сообщений облегчило бы работу криптоаналитикам .
Процедура отправки выглядела так:
- Оператор выставлял машину на «основную настройку» (Ground setting), указанную в шифровальном листе на этот день (например, XYZ) .
- Затем он произвольно выбирал «секретную настройку» для конкретного сообщения (например, ABC) .
- Оператор зашифровывал эти три буквы дважды (ABC ABC), получая шестизначный код .
- Этот короткий код передавался в самом начале сообщения.
- Получатель на другом конце, настроив машину на XYZ, расшифровывал первые 6 букв, узнавал секретный ключ (ABC) и перенастраивал роторы для чтения основного текста .