Криптоанализ «Энигмы» — криптоанализ немецкой шифровальной машины «Энигма» во время Второй мировой войны, осуществлённый силами польских и британских спецслужб. Расшифровка сообщений внесла заметный вклад в поражение нацистской Германии.
Впервые шифр «Энигмы» удалось дешифровать в польском «Бюро шифров» в декабре 1932 года. Четверо сотрудников разведки, Мариан Реевский, Ежи Ружицкий, Генрих Зыгальский и Иоганн Ревклид с помощью данных французской разведки, математической теории и методов обратной разработки смогли разработать специальное устройство для дешифровки закодированных сообщений, которое назвали криптологической бомбой.
История электрической роторной шифровальной машины «Энигма» начинается в 1917 году с патента, полученного голландцем Хьюго Кочем. В следующем году патент был перекуплен Артуром Шербиусом, начавшим коммерческую деятельность с продажи экземпляров машины как частным лицам, так и немецкой армии и флоту. До середины 1920-х годов продажи шли плохо, в частности из-за высокой цены.
В июне 1924 года британская криптографическая служба заинтересовалась устройством машины. С этой целью была закуплена партия машин у германской компании Chiffrier-maschinen AG, производившей «Энигму». Одним из условий сделки была регистрация патента в британском патентном бюро, благодаря чему криптографическая служба получила доступ к описанию криптографической схемы.
Начиная с 1925 года, когда германские военные начали массовые закупки шифровальной машины, и до конца Второй мировой войны было произведено около 200 тысяч машин. С 1926 года на использование машины переходит германский флот, с 1928 года — сухопутные войска. Они применялись также в службе безопасности и разведке.
Первые перехваты сообщений, зашифрованных при помощи «Энигмы», относятся к 1926 году. Однако прочитать их долгое время не могли. В январе 1929 года коробка с коммерческим вариантом «Энигмы» случайно попала на варшавскую таможню. Германия попросила вернуть коробку, после чего её содержимым заинтересовались поляки. По поручению польского «Бюро шифров» машина была изучена специалистами фирмы «AVA», в том числе её руководителем криптоаналитиком Антонием Пальтхом, после чего коробку отправили в германское посольство. Изучение машины не позволило дешифровать сообщения, к тому же германские военные использовали свой, усиленный вариант «Энигмы».
В 1928—1929 годах в Польше были организованы первые математические курсы по криптографии. Слушателями были два десятка студентов-математиков со знанием немецкого языка. Трое из слушателей — Мариан Реевский, Генрих Зыгальский и Ежи Рожицкий — поступили на службу в «Бюро шифров». Впоследствии именно они получат первые результаты по вскрытию кода «Энигмы».
В 1931 году сотрудник шифрбюро министерства обороны Германии Ганс-Тило Шмидт, ставший уже агентом «Аше», начал передавать французской разведке вышедшие из употребления коды, которые, согласно служебным обязанностям, ему требовалось уничтожать, а также передал инструкцию по использованию военного варианта «Энигмы». Среди причин, побудивших Ганс-Тило сделать это, были и материальное вознаграждение, и обида на родную страну, не оценившую его успехи во время Первой мировой войны, и зависть к армейской карьере брата Рудольфа Шмидта. Первыми двумя документами стали «Gebrauchsanweisung für die Chiffriermaschine Enigma» и «Schlüsselanleitung für die Chiffriermaschine Enigma». Французская и английская разведки, однако, не проявили интереса к полученным данным — возможно, считалось, что вскрыть шифр «Энигмы» невозможно. Полковник французской разведки Гюстав Бертран передал материалы польскому «Бюро шифров» и продолжал передавать им дальнейшую информацию от агента до осени 1939 года.
Благодаря полученным документам, криптоаналитики знали, что для шифрования сообщения оператор машины должен был выбрать из кодовой книги так называемый дневной ключ, который состоял из:
настроек коммутационной панели (Steckerverbindungen);порядка установки роторов (Walzenlage);положений колец (Ringstellung);начальных установок роторов ( Kenngruppen). Однако оператор не должен был использовать дневной ключ для шифрования сообщений. Вместо этого оператор придумывал новый ключ из трёх букв (Spruchschlüssel) и дважды шифровал его с использованием дневного ключа. После чего настройки роторов менялись в соответствии с придуманным ключом и производилось шифрование сообщения.
В декабре 1932 года Реевский получил кодовые книги с дневными ключами для сентября и октября 1932 года. Данные материалы позволили восстановить внутреннюю электропроводку роторов и построить военный вариант «Энигмы» (коммерческий вариант уже был, но он имел другую электропроводку роторов). Более ни он, ни его коллеги не имели доступа к кодовым книгам, хотя агент «Аше» их успешно поставлял. Вероятно это было вызвано тем, что начальство хотело заставить криптоаналитиков суметь найти дневной ключ без кодовых книг, чтобы подготовиться к тому моменту, когда агент больше не сможет их поставлять.
Усилия Мариана сосредоточились на анализе уязвимости протокола обмена сообщениями, а именно — на повторении ключа сообщения. Из ежедневных сообщений выбирались первые шесть букв и на их основе составлялась таблица соответствия (примеры взяты из книги Сингха):
Сообщение 1
L
O
K
R
G
M
…
Сообщение 2
M
V
T
X
Z
E
…
Сообщение 3
J
K
T
M
P
E
…
Сообщение 4
D
V
Y
P
Z
X
…
1-я буква
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
4-я буква
P
M
R
X
Если сообщений было достаточно, то таблица заполнялась полностью.
1-я буква
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
4-я буква
F
Q
H
P
L
W
O
G
B
M
V
R
X
U
Y
C
Z
I
T
N
J
E
A
S
D
K
Особенность полного варианта таблицы заключалась в том, что пока дневной ключ остаётся без изменений, содержимое таблицы также не меняется. И, с большой степени вероятности, наоборот. Можно было бы составить каталог таблиц… однако их количество равно 26!, что делает эту работу невозможной в обозримое время. Реевский стал пытаться выделить из таблиц некоторые шаблоны или найти некоторые структурные закономерности. И это ему удалось. Он стал рассматривать цепочки букв следующего вида:
1-я буква
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A → F → W → A
↓
↓
↓
4-я буква
F
Q
H
P
L
W
O
G
B
M
V
R
X
U
Y
C
Z
I
T
N
J
E
A
S
D
K
В примере полной таблицы выше таких цепочек оказалось 4:
A → F → W → AB → Q → Z → K → V → E → L → R → I → BC → H → G → O → Y → D → P → CJ → M → X → S → T → N → U → J Следующим открытием Мариана стало то, что хотя конкретные буквы зависели от дневной настройки «Энигмы» полностью, количество цепочек и букв в них задавалось только настройками роторов. Так как количество роторов было равно 3 (но они могли стоять в любом порядке), а начальная настройка состояла из трёх букв латинского алфавита, то число вариантов было равно 3 ! ⋅ 26 3 = 105 456 {displaystyle 3!cdot 26^{3}=105,456} . Это было значительно меньше, чем 26 ! ≈ 4 ⋅ 10 26 {displaystyle 26!approx 4cdot 10^{26}} , что позволило, используя построенные (или украденные) машины «Энигма» составить каталог, содержащий все возможные цепочки. Данная работа заняла почти год, однако результатом стала возможность читать германскую переписку.
Как отмечает Сингх, именно возможность разделить задачу на две составляющих (настройки роторов и настройки коммутационной панели) позволили Реевскому справиться с данной задачей, а также помощь как математиков «Бюро шифров», так и Шмидта:
Документы Аше стали манной небесной — все двери в тот же момент открылись.
После того, как настройки роторов для дневного сообщения были восстановлены, оставалось выяснить настройки коммутационной панели. С криптографической точки зрения это был простой моноалфавитный шифр, дополнительно ограниченный лишь 6 парами замен букв. Текст даже часто не требовалось подвергать частотному криптоанализу, а всего лишь присмотреться к строкам вроде «alliveinbelrin» (arrive in Berlin с заменой R ↔ L) и другим, которые было легко восстановить «на глаз».
В 1934 году Германия начала менять конфигурацию положения роторов каждый месяц вместо каждого квартала. В ответ на это Мариан Реевский спроектировал устройство под названием «циклометр», позволяющий быстро воссоздать каталог циклов.
15 сентября 1938 года Германия изменила процедуру шифрования, сделав невозможным использование каталогов, составленных с использованием циклометра. Польские криптографы были вынуждены искать другие методы для расшифровки. Такими стали использование машин bombe и перфорированных листов Зыгальского.
15 декабря 1938 года Германия добавила 4-й и 5-й роторы, а 1 января 1939 года увеличила количество соединений коммутационной панели с 6 до 10. Всё это значительно затруднило криптоанализ «Энигмы».
Летом 1939 года, когда неизбежность вторжения в Польшу стала очевидна, бюро передало результаты своей работы английской и французской разведкам. Хотя польские математики так и не смогли вскрыть шифр, среди результатов были и «живые» экземпляры машины, и электромеханическая «Bomba», состоявшая из двух спаренных Энигм и помогавшая в расшифровке, а также уникальные методики криптоанализа.