Внутри Энигмы
Машина Enigma представляет собой довольно сложное шифровальное устройство, состоящее из нескольких основных секций. Если разбирать её не как легенду, а как рабочий механизм, то вся логика машины сводится к движению электрического сигнала через последовательность элементов: клавиатуру, штекерную панель, роторный блок, рефлектор — и обратно к ламповому полю.
Клавиатура
Клавиатура служит для ввода пользовательского сообщения. Enigma — симметричная шифровальная машина, а это значит, что при одних и тех же настройках она может использоваться как для шифрования открытого текста, так и для расшифровки шифрограммы.
Клавиатура состоит из 26 клавиш — по одной на каждую букву латинского алфавита. Из-за этого ограничения все сообщения передавались слитно, без пробелов, цифр и знаков препинания. Цифры приходилось записывать словами.
Обратите внимание: раскладка начинается с букв QWERTZ, а не привычной нам QWERTY. Это связано с тем, что в немецком языке буква Z встречается значительно чаще, чем Y.
Для работы с эмулятором просто вводите текст, кликая по клавишам мышью или используя клавиатуру компьютера. Каждое нажатие запускает весь цикл шифрования, и результат мгновенно отображается на ламповом поле. Вводить можно как открытый текст для шифрования, так и уже зашифрованное сообщение для его расшифровки — машина работает в обе стороны одинаково.
Штекерная панель (Steckerbrett)
После нажатия клавиши сигнал сначала проходит через штекерную панель. Это первый этап шифрования, построенный на принципе подстановки — частном случае перестановочного преобразования.
Для настройки панели короткими кабелями соединяют пары букв, которые затем будут меняться местами. Например, если соединены W и D, то W будет превращаться в D, а D — в W. Точно так же V может меняться местами с Z.
В кодовой книге такие настройки штекеров обычно записывались в виде пар: например, DW VZ GF. Обычно задавалось от 6 до 13 пар. Чем больше пар — тем сложнее взлом.
Чтобы настроить штекерную панель в эмуляторе, кликайте по гнёздам в нижней части машины. Первый клик выделяет букву, второй клик на другой букве создаёт между ними соединение — на экране появится виртуальный кабель. Если нужно удалить пару, кликните на уже соединённую букву дважды. Следите за тем, чтобы количество пар и их состав точно совпадали с данными из кодовой книги для выбранной даты — иначе расшифровка будет невозможна.
Роторы (Walzen)
После штекерной панели буква проходит через три ротора по порядку — справа налево. Каждый ротор изменяет её по-своему, используя сочетание перестановки и цезарева сдвига.
В Enigma M3 было три посадочных места для роторов и пять роторов на выбор. Каждый обозначался римской цифрой от I до V. Поэтому часть настроек машины — это выбор самих роторов и их порядка. В кодовой книге это могли записывать, например, как IV II III для левого, среднего и правого роторов.
Каждый ротор имеет две дополнительные настройки. Ringstellung — кольцевая установка, то есть внутреннее смещение проводки относительно буквенного кольца ротора. Grundstellung — начальная позиция, стартовая буква ротора, например A/B/C или в числовой записи от 01 до 26.
Начальная позиция задаётся вращением трёх колёс роторов вручную перед началом шифрования. Это создаёт дополнительный сдвиг в духе шифра Цезаря.
В других версиях Enigma, например M4, использовавшейся на подлодках с 1942 года, применялось уже четыре ротора, что многократно увеличивало число возможных настроек и усложняло дешифровку.
Для настройки роторов в эмуляторе кликните на любой из трёх роторов в верхней части машины — откроется окно с параметрами. Здесь вы можете выбрать, какой именно ротор установлен в каждой позиции, задать кольцевые установки и начальные буквы. Все эти данные берутся из кодовой книги. Обратите внимание: порядок имеет значение — левый, средний и правый роторы выполняют разные функции. После того как все параметры введены, закройте окно настроек — машина готова к работе.
Механика вращения роторов
Главная особенность Enigma в том, что после каждого нажатия клавиши правый ротор сдвигается на одну позицию. Из-за этого настройка шифрования постоянно меняется от буквы к букве, и один и тот же символ открытого текста шифруется по-разному в зависимости от своей позиции в сообщении.
Роторы связаны между собой механически, как одометр в автомобиле. Когда правый ротор доходит до определённой буквы, так называемой выемки, он проворачивает средний ротор на один шаг. Когда выемки достигает средний ротор — он сдвигает левый. Этот эффект называется double stepping и является одной из слабостей Enigma, которую использовали криптоаналитики.
В эмуляторе вращение роторов происходит автоматически с каждым введённым символом. Вы можете наблюдать, как меняются буквы на роторах в верхней части машины. Это визуальное отображение того, что происходило и на настоящей Enigma — оператор всегда видел текущее положение роторов и мог при необходимости вернуть их в исходное состояние для повторной расшифровки.
Рефлектор (Umkehrwalze, UKW)
Рефлектор — это особый неподвижный ротор, установленный слева от трёх основных. После того как буква проходит через три ротора справа налево, рефлектор отражает электрический сигнал обратно, отправляя его через тот же набор роторов, но уже слева направо.
То есть зашифрованная буква проходит ещё три стадии преобразования на обратном пути, а затем снова проходит через штекерную панель для финальной подстановки. В самом рефлекторе тоже применяется перестановка символов — но такая, что ни одна буква не может отразиться сама в себя.
На разных версиях Enigma использовались разные рефлекторы. На Enigma M3 чаще всего применяли UKW-B или UKW-C. Именно рефлектор обеспечивает симметричность шифрования: при одних и тех же настройках машина и зашифровывает, и расшифровывает текст одинаково.
В эмуляторе рефлектор выбирается в том же окне настроек, где и роторы. Обычно в кодовой книге указывается, какой именно рефлектор использовать — UKW-B или UKW-C. Выбор рефлектора критически важен: если использовать не тот, что был у отправителя, расшифровка будет невозможна. После выбора нужного рефлектора его работа происходит полностью автоматически — вмешательство оператора не требуется.
Ламповое поле (Lampenfeld)
Ламповое поле — финальный этап работы машины. Именно здесь оператор видит результат шифрования — зашифрованную букву. Оно состоит из 26 лампочек — по одной на каждую букву алфавита. Когда электрический сигнал завершает свой путь через всю машину, загорается одна из них, показывая, во что превратилась исходная буква.
На настоящей Enigma оператор записывал эту букву вручную, формируя шифрограмму для передачи по радио. Процесс был медленным и требовал внимательности — ошибка хотя бы в одной букве могла сделать всё сообщение нечитаемым.
В нашем эмуляторе ламповое поле расположено во второй секции сверху, прямо под роторами. Каждый раз, когда вы нажимаете клавишу, соответствующая зашифрованная буква подсвечивается жёлтым цветом. Одновременно результат автоматически записывается в блокнот под машиной — там вы увидите и введённый текст, и получившуюся шифрограмму. Это избавляет вас от необходимости записывать каждую букву вручную и позволяет сосредоточиться на самом процессе дешифровки.