Криптологическая бомба

Криптологическая бомба (польск. Bomba kryptologiczna) — аппарат, предложенный польским криптологом Марианом Реевским и разработанный в 1938 году совместно с двумя его коллегами-математиками Ежим Рожицким и Генрихом Зыгальским для систематической расшифровки сообщений, зашифрованных немцами при помощи Энигмы. Предпосылкой к созданию машины стала ненадёжная процедура удвоения ключа, использовавшаяся немцами, позволившая определить дневные настройки Энигмы[1]

История править

После изобретения Энигмы в 1917 году, начиная с 1930 года этот инновационный метод шифрования стал регулярно применяться в Германии. Её соседи, особенно Франция, Великобритания и Польша, относились к нему с подозрением, особенно после прихода нацистов к власти, когда Энигма стала играть ключевую роль в перевооружении Вермахта. Несмотря на то, что французские и британские криптоаналитики её взломать не смогли и классифицировали как невзламываемую[2], 27-летний польский математик Мариан Реевский уже в 1932 году смог взломать Энигму[3], обнаружив серьёзную уязвимость в процедуре отправки сообщений.

Используя знание того, что первые три буквы сообщения совпадают со вторыми тремя, польский математик - криптолог Мариан Реевский смог определить внутреннюю проводку машины Enigma и таким образом восстановить логическую структуру устройства. Подозревались только общие черты машины, на примере коммерческого варианта Enigma, который, как известно, немцы использовали для дипломатической связи. Военные версии были достаточно разными, чтобы представить совершенно новую проблему. Сделав это, по-прежнему необходимо было проверять каждый из потенциальных ежедневных ключей для взлома зашифрованного сообщения (то есть «зашифрованного текста»). При наличии многих тысяч таких возможных ключей и растущей сложности машины Enigma и ее процедур ввода это становилось все более сложной задачей.

Чтобы механизировать и ускорить процесс, Реевский, гражданский математик, работавший в Шифровальном бюро Польского Генерального штаба в Варшаве, изобрел «bomba kryptologiczna» (криптологическая бомба), вероятно в октябре 1938 года. Каждая бомба (шесть из них были построены в Варшаве для бюро шифров до сентября 1939 года) по существу представляла собой электрическую совокупность из шести Enigmas и заменяла около сотни рабочих.

Это усовершенствование значительно повысило безопасность системы.

Метод бомбы был основан, как и более ранний метод «решетки» поляков, на том факте, что разъемные соединения в коммутаторе («коммутационной панели») не работали. поменять все буквы. Но в то время как метод гриля требовал неизменных пар букв, метод бомбы требовал только неизмененных букв. Следовательно, его можно было применять, даже если количество подключений в этот период составляло от пяти до восьми. В середине ноября 1938 года бомбы были готовы, и восстановление ежедневных ключей теперь заняло около двух часов.

До 25 июля 1939 года поляки взламывали сообщения Enigma более шести с половиной лет. не сообщая своим французским и британским союзникам. 15 декабря 1938 года были представлены два новых ротора, IV и V (три из пяти роторов, выбранных для использования в машине одновременно). Как писал Реевский в 1979 году в критике Приложения 1, том 1 (1979), к официальной истории британской разведки во Второй мировой войне, «мы быстро обнаружили [проводку] внутри [новых роторов], но [их] введение [...] увеличили количество возможных последовательностей барабанов с 6 до 60 [...] и, следовательно, также в десять раз увеличили работу по поиску ключей. Таким образом, изменение было не качественным, а количественным. Нам пришлось бы заметно увеличить персонал для работы с бомбами, для производства перфорированных листов (теперь требовалось 60 серий по 26 листов в каждой, тогда как до встречи 25 июля 1939 года у нас было готово только две таких серии) и манипулировать листами ».

Гарри Хинсли предположил в британской разведке... что поляки решили поделиться своими методами и оборудованием по разгадке загадок с французами и британцами в июле 1939 года, потому что они столкнулись с непреодолимыми техническими трудностями. Реевский отверг это: «Нет, не [криптологические] трудности [...] побудили нас работать с британцами и французами, а только ухудшающаяся политическая ситуация. Если бы у нас не было никаких трудностей, мы бы все равно, или более того, мы поделились нашими достижениями с нашими союзниками как нашим вкладом в борьбу против Германии."

Процедура удвоения ключа править

Для расшифровки сообщений с помощью Энигмы требовалось знать несколько параметров: порядок роторов, их начальные позиции, положения колец роторов и соединения коммутационной панели. Позиции роторов представляли собой ключ из трёх букв (например, «PDN») и являлись частью дневного ключа. Для дополнительной безопасности, тем не менее, каждое индивидуальное сообщение было зашифровано с использованием дополнительной модификации ключа. Оператор случайно выбирал настройки ротора для каждого сообщения (например, «PDN»). Ключ этого сообщения набирался дважды («PDNPDN») и зашифровывался с использованием дневного ключа. Затем оператор сбрасывал машину на ключ сообщения, который использовался в дальнейшем[1]. Поскольку внутренняя разводка проводов Энигмы изменялась с каждым нажатием клавиши, повторение не будет очевидным в шифртексте, так как одни и те же буквы открытого текста будут зашифрованы в различные буквы шифртекста (например, «PDNPDN» может стать «ZRSJVL»).

Вместо повторения ключа и затем его шифрования немцы могли просто шифровать ключ сообщения и отправлять его два раза подряд (например, «ZRSZRS») или в начале и в конце сообщения. При этом все равно будет достигнута желаемая избыточность для возможности детектирования ошибок. Однако это бы стало очевидным недостатком, поскольку подозрительное повторение будет привлекать внимание криптоаналитиков. Для предотвращения такой ситуации они стали применять, на первый взгляд, надёжный вариант с копированием ключа и его последующим шифрованием, поскольку повторение в шифртексте не было заметным. В действительности такой метод привёл к грубой криптографической ошибке.

Оператор устройства мог свободно выбирать ключ. Они, особенно в стрессовых ситуациях, выбирали очень простые ключи. Вместо желаемого случайного ключа часто выбирались простые сочетания букв вроде «AAA», «ABC» или «ASD» (рядом расположенные клавиши на клавиатуре устройства), которые взломщики могли просто отгадать[4]. Кроме того, выбранный ключ шифровался самой Энигмой, что раскрывало выбранную конфигурацию устройства. С другой стороны, если бы использовался независимый метод шифрования ключа сообщения, внутреннее устройство Энигмы определить бы не удалось. На самом деле, шифрования ключа вообще не требовалось. Он мог транслироваться в незашифрованном виде, повторённый дважды или даже трижды (в этом случае была бы возможность не только детектировать помехи, но и устранять их). Из-за неизвестного положения колец роторов положение самих роторов не несёт какой-либо важной информации для криптоаналитика. Вместо этого процедура удвоения ключа позволила польским криптоаналитикам дешифровать сообщения[5].

Циклометр как предшественник править

 
Циклометр

До сентября 1938 года все ключи сообщения, переданные за один день, шифровались одним и тем же дневным ключом. В радиоэфире ежедневно были доступны десятки, если не сотни сообщений, все зашифрованные одинаковым ключом. Используя две процедурные ошибки, допущенные немцами, польские криптоаналитики сконструировали устройство, названное циклометром, состоящее из двух последовательно соединённых Энигм, с позициями роторов, смещёнными на три друг относительно друга.

Циклометр позволил полякам определить для каждого из шести возможных порядков роторов характерные перестановки для каждой из 263 = 17 576 начальной позиции роторов. Циклометр существенно упрощал утомительную и затратную по времени работу по поиску характеристик в каждом из 6 × 17 576 = 105 456 возможных случаев. Полученные характеристики записывались в каталог. Работа по разработке каталога характеристик, как заметил Реевский, «была утомительной и заняла больше года, но после её завершения дневные ключи могли быть определены за 15 минут»[6].

После замены рефлектора UKW-A на UKW-B 1 ноября 1937 года[7] польским криптоаналитикам пришлось составлять новый каталог характеристик. Но перед тем, как они смогли завершить этот процесс, немцы изменили протокол передачи ключа сообщения[5]. Вместо определённого положения роторов для зашифровки ключа сообщения теперь оператор мог выбрать его произвольно и передавал в незашифрованном виде в начале сообщения[8]. Внезапно каталог характеристик стал бесполезным, и Бюро шифров стало работать над новыми методами атаки на шифр Энигмы. Это привело к созданию листов Зыгальского и бомбы Реевского.

Происхождение названия править

Происхождение названия «бомба» остаётся загадкой. Даже после войны Мариан Реевски не мог этого вспомнить[9]. По рассказам Тадеуша Лисицкого, Реевский, Рожицкий и Зыгальский ели пирожное «бомба», когда Рожицкий предложил название устройства. По другой версии, звук, издаваемый устройством во время его работы напоминал тиканье часового механизма бомбы, что стало причиной такого названия. Поскольку до наших дней не сохранилось ни одной машины, эту версию проверить невозможно. По утверждению самого Реевского, «из-за отсутствия лучшего варианта мы называли их бомбами»[1].

В сверхсекретном отчете армии США от 15 июня 1945 года говорилось: Машина под названием «бомба» используется для ускорения решения. Первая машина была построена поляками и представляла собой ручную машину с множеством Энигм. Когда возможное решение было найдено, деталь с громким шумом падала с машины на пол. Отсюда и название «бомба».

Приведенное выше описание польской бомбы армией США расплывчато и неточно, как видно из описания устройства в конце второго абзаца «Истории» раздел ниже: «Каждая бомба... по существу представляет собой совокупность шести Энигм...»

Устройство править

Идея бомбы основывается исключительно на ненадёжной процедуре удвоения ключа. Поляки не знали ни позиций роторов, ни позиций колец. Кроме того, начальная позиция роторов не была однозначной, а выбиралась свободно шифровальщиком. Несмотря на это, оставалось ясным, что сессионный ключ сначала удваивался, а затем шифровался. Отсюда польские криптоаналитики могли заключить что первой и четвёртой, второй и пятой, а также третей и шестой буквам шифртекста соответствовали одинаковые буквы открытого текста. Это важное замечание позволило провести поиск по шаблону «123123»[10].

 
Схематичное изображение бомбы:
1 — роторы (один установленный набор роторов и пять шпинделей для установки других наборов)
2 — электромотор
3 — три набора переключателей

Техническое исполнение атаки на шифр Энигмы заключалось в создании электромеханической машины, включающей шесть наборов роторов Энигмы. Поляки смогли не только быстро разработать концепт бомбы, но и собрать и ввести их в работу при поддержке AVA (AVA Wytwórnia Radiotechniczna). Поскольку на тот момент существовало шесть различных порядков роторов Энигмы, шесть бомб было построено, по одной на каждый порядок. Приводящаяся в движение от электрического мотора, бомба проходила через все 17576 различных позиций роторов (от «AAA» до «ZZZ») за примерно 110 минут[11].

Атака заключалась в поиске позиций, в которых при вводе определённой тестовой буквы, выходная буква совпадала с выходной буквой для позиции, смещённой на три вперёд. Поскольку каждая бомба имела шесть наборов роторов, можно было проверять три сообщения одновременно. Искали позиции в которых во всех трёх парах были одинаковые буквы[1].

Такое совпадение случалось довольно редко, и было сильным признаком успеха, то есть правильно определённых порядка роторов и положения колец. Но следовало ожидать и неудач, таких настроек, которые тоже дают попарные совпадения букв, но не являющихся ключом[10]. В среднем на одну позицию роторов приходилась одна неудача. Польские криптоаналитики использовали специально спроектрированные реплики Энигм для определения неудач и поиска правильных соединений коммутационной панели. Они были настроены с использованием полученных с помощью бомбы возможного порядка роторов и положения колец[10].

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

Пример править

Конкретное применение бомбы может быть продемонстрировано на следующем примере. Предположим, что применялась процедура удвоения ключа, как это было в период с 15 сентября 1938 года. Пусть в качестве дневного ключа порядок роторов был «B123», положение колец роторов «abc», а штекеры коммутационной панели были «DE», «FG», «HI», «JK» и «LM». Оператор случайно выбирал начальную позицию, например «BVH», и ключ сообщения, например «WIK». Как объяснялось ранее, ключ сообщения удваивался и шифровался при выбранных дневном ключе и начальном положении роторов. В результате (что может быть проверено свободно доступными симуляторами Энигмы) получается зашифрованный ключ сообщения, который отправляется вместе с незашифрованной начальной позицией, как индикатор шифртекста, в данном примере «BVH BPLBKM».

Криптоаналитикам сначала необходимо было перехватить как можно больше сообщений и рассмотреть индикаторы в каждом случае. Целью было найти три зашифрованных ключа сообщения, в которых первая и четвёртая, вторая и пятая и, наконец, третья и шестая буквы совпадали[1]. Пример выше удовлетворяет данному условия. Осталось найти ещё два индикатора, где вторая и пятая или третья и шестая буквы тоже «B».

В принципе, вместо поиска трёх одинаковых неподвижных точек (как называли парные буквы в удвоенном и зашифрованном ключе)[10] можно было использовать три различные точки. Это упростило бы поиск подходящих индикаторов, поскольку индикаторы с тремя различными парами встречаются чаще. Однако из-за наличия коммутаторной панели, пары преобразуются до и после прохода панели неизвестным полякам образом. Вставала необходимость удачно выбрать букву, не изменяющуюся в панели (self-plugged)[12], в противном случае дешифровка бы не удалась. При пяти-восьми проводах панели, как это было принято в 1938 году, вероятность удачного взлома составляет 50 %. С другой стороны, при использовании трёх различных пар, эта вероятность падает до 12,5 %[10]. По этой причине поляки выбрали более редкую, но более эффективную комбинацию из трёх одинаковых неподвижных точек.

Пусть после перехвата нескольких немецких сообщений были также найдены индикаторы «DCM WBVHBM» и «EJX NVBUUB». Таким образом имеется набор из трёх совпадающих неподвижных точек:

1) BVH BPLBKM
2) DCM WBVHBM
3) EJX NVBUUB

Для дальнейшего понимания следует ввести понятие разности (или расстояния) между двумя позициями роторов. Доподлинно неизвестно, как нумеровались позиции в Бюро шифров. Британцы в Блетчли-парк использовали следующее соглашение: каждой позиции соответствовало трёхзначное число в двадцатишестиричной системе счисления, где «Z» была нулём, «A» — единицей и так далее до «Y» — 25[13]. Тогда разностью между двумя позициями была разность соответствующих им чисел. В нашем примере разность между позициями «BVH» и «DCM» будет «AGE», а между «DCM» и «EJX» — «AGK».

Для взлома Энигмы, криптоаналитики настраивали бомбы следующим образом. Каждая из шести машин соответствовала различным порядкам роторов, один из которых — нужный вариант «B123». Шесть наборов роторов на одной бомбе образовывали три пары. Расстояние между роторами в одной паре равнялось трём, а расстояние между парами соответствовало расстояниям между конфигурациями в перехваченных сообщениях[14]. Затем запускался мотор, и все 17576 позиций проходились меньше, чем за два часа.

Целью был поиск таких позиций, в которых все наборы роторов в бомбе дают одинаковую букву на соответствующей позиции. Такое совпадение проверялось с помощью простого реле[10]. Для примера выше с роторами «B123» и тестовой буквой «B» получаются только две позиции. Первая оказывается промахом, а вторая даёт три начальных позиции (все ещё нормированных на положение колец «aaa») «BUF», «DBK» and «EIV».

Простым поиском разности между найденными позициями и позициями в перехваченных индикаторах и её суммированием с «aaa» можно определить положение колец роторов[15]. В примере выше во всех трёх случаях получается «abc».

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

1) BVH BPLBKM → WHHWSF
2) DCM WBVHBM → HPDIPZ
3) EJX NVBUUB → EHAEHA

Искомый шаблон «123123» уже виден в третьем случае, но пока результат необязательно правильный. Причиной этому является все ещё пустая коммутаторная панель. Последней задачей осталось определение этой настройки, использованной немцами (от пяти до восьми проводов). Чёткий алгоритм поиска отсутствовал, вместо этого применялся метод проб и ошибок с целью нахождения такой настройки, при которой во всех трёх случаях получалось сообщение вида «123123»[14]. Хорошим ходом действий будет соединение ещё не совпадающих букв в парах, например «H» и «I» во втором случае. Это улучшает возможный ключ сообщения от «HPDIPZ» до «IPDIPZ». Теперь имеется две совпадающих пары вместо одной. Это сильный признак правильно определённого соединения. Другой многообещающей попыткой является соединений соответствующих букв шифртекста вместо букв открытого текста. Как известно, ток проходит через панель дважды, один раз в форме открытого текста, один раз после прохода роторов. Например, в первом случае, третья («H») и шестая («F») возможного ключа сообщения «WHHWSF» не совпадают. Соединение «FH» ситуации не улучшает. С другой стороны, соединение третьей и шестой буквы шифртекста («L» и «M») приводит к результату «WHYWSY». Опять, паре одинаковых букв шифртекста теперь соответствует пара одинаковых букв открытого текста, а значит, ещё было правильно определено ещё одно соединение панели. Теперь при соединённых парах «HI» и «LM» расшифровка в первом случае даёт текст «WIJWSJ», а во втором — «IPDIPD» где уже прослеживается шаблон «123123». Правильно определив соединение «JK», которое может быть отгадано из получившихся букв, первое сообщение при расшифровке также будет удовлетворять нужному шаблону, и ключ сообщения «WIKWIK» будет окончательно взломан. Два последних соединения «DE» и «FG» могут быть найдены при попытке дешифровки сообщения с начальной позицией роторов «WIK», после чего окончательно будут найдены дневные настройки Энигмы, и расшифровка остальных сообщений не составит труда.

Конец бомбы править

Шесть бомб помогли полякам продолжить расшифровывать сообщения после введения свободного начального состояния роторов 15 сентября 1938 года. Однако 15 декабря 1938 года появилась новая проблема. Немцы стали использовать два новых ротора (IV и V). Следовательно, число различных позиций роторов увеличилось с шести (=3•2•1) до шестидесяти (=5•4•3)[5]. Вместо 6•17'576=105'456 возможных позиций, их число увеличилось в десять раз и стало превышать миллион. Внезапно стало необходимым использование 60 бомб, что значительно превышало возможности поляков.

Всего через две недели, на стыке 1938/39 годов стало иметь место ещё одно осложнение дел, которое не только стало причиной количественных проблем поляков, но и качественных. Вместо использования от пяти до восьми соединений коммутаторной панели (а значит, меняя от 10 до 16 букв), с 1 января 1939 года, немцы стали использовать 7-10 соединений. Значит, из 26 букв Энигмы, только от шести до двенадцати букв оставались несоединенными. Учитывая, что панель используется дважды в преобразовании, это значительно ухудшило (в два раза) вероятность «улова» незатронутой панелью буквы, что значительно снизило эффективность бомб, и с начала 1939 года они едва вносили вклад в определение дневных ключей Энигмы. В конце концов, с отказом от удвоения ключа сообщения 1 мая 1940 года, идея «бомбы» стала окончательно бесполезной[10][16].

В это время, однако, «бомбы» больше не существовали: в сентябре 1939 после немецкого вторжения в Польшу криптоаналитики были вынуждены уничтожить машины и бежать из Варшавы[7].

Turing bombe как преемник править

26-27 июля 1939 года состоялась встреча польских, французских и британских криптоаналитиков в Пырах, в 20 км к югу от Варшавы[17]. На ней поляки поделились со своими коллегами своими методами атаки на шифр «Энигмы», двумя репликами устройства и чертежами циклометра и бомбы. На основе этих знаний Алан Тьюринг разработал новую машину для взлома Энигмы, названную bombe. В отличие от польской «бомбы», её принцип работы основывался не на уязвимостях в немецком протоколе передачи сообщений, а на уязвимостях самой «Энигмы». Bombe, в отличие от польских машин, имела бо́льшую вычислительную мощность и работала по более эффективному алгоритму, нежели полный перебор, а также могла расшифровывать сообщения, даже если были бы использованы все 13 соединений коммутационной панели[18].

Примечания править

  1. 1 2 3 4 5 Marian Rejewski. How Polish Mathematicians Broke the Enigma Cipher // IEEE Annals of the History of Computing. — 1981. — Т. 3, вып. 3. — С. 213–234. — ISSN 1058-6180. — doi:10.1109/mahc.1981.10033. Архивировано 7 декабря 2017 года.
  2. Саймон Сингх. Книга шифров. Тайная история шифров и их расшифровки. — Москва: АСТ, 2007. — 447 с. — ISBN 5170384777.
  3. Marian Rejewski. An Application of the Theory of Permutations in Breaking the Enigma Cipher // Applicationes Mathematicae. — 1980. — № 16 (4). — С. 543—559. Архивировано 17 января 2021 года.
  4. RICHARD A. WOYTAK. A Conversation with Marian Rejewski // Cryptologia. — 1982-01-01. — Т. 6, вып. 1. — С. 50–60. — ISSN 0161-1194. — doi:10.1080/0161-118291856830.
  5. 1 2 3 Welchman, Gordon. The Hut Six story : breaking the Enigma codes. — Cleobury Mortimer, Shropshire: M&M Baldwin, 1997. — xiv, 263 p. с. — ISBN 0947712348.
  6. Marian Rejewski, "Summary of Our Methods for Reconstructing ENIGMA and Reconstructing Daily Keys, and of German Efforts to Frustrate Those Methods, " Appendix C to Władysław Kozaczuk, Enigma: How the German Machine Cipher Was Broken, and How It Was Read by the Allies in World War Two, 1984, pp. 241-45.
  7. 1 2 Kippenhahn, Rudolf, 1926-. Code breaking : a history and exploration. — Revised and updated ed. — New York: Overlook Duckworth, 2012. — 301 pages с. — ISBN 1468300741.
  8. Sebag-Montefiore, Hugh. Enigma : the battle for the code. — London: Cassell Military, 2004. — С. 355. — 491 с. — ISBN 0304366625.
  9. Sebag-Montefiore, Hugh. Enigma : the battle for the code. — London: Cassell Military, 2004. — С. 46. — 491 с. — ISBN 0304366625.
  10. 1 2 3 4 5 6 7 Bauer, Friedrich Ludwig, 1924-. Decrypted secrets : methods and maxims of cryptology. — 3rd, rev. and updated ed. — Berlin: Springer, 2002. — С. 439-443. — 473 с. — ISBN 3540426744. Архивировано 1 мая 2021 года.
  11. Sebag-Montefiore, Hugh. Enigma : the battle for the code. — London: Cassell Military, 2004. — С. 434. — 491 с. — ISBN 0304366625.
  12. Sebag-Montefiore, Hugh. Enigma : the battle for the code. — London: Cassell Military, 2004. — С. 422. — 491 с. — ISBN 0304366625.
  13. Carter, Frank. July 1999. The First Breaking of Enigma. Some of the Pioneering Techniques Developed by the Polish Cipher Bureau. Bletchley Park Report No. 10. Milton Keynes: Bletchley Park Trust.
  14. 1 2 David Link. Resurrecting Bomba Kryptologiczna: Archaeology of Algorithmic Artefacts, I (англ.) // Cryptologia. — Vol. 33, iss. 2. — P. 166–182. — doi:10.1080/01611190802562809.
  15. Marian Rejewski, "How Polish mathematicians broke the Enigma cipher", Appendix D to Władysław Kozaczuk, Enigma: How the German Machine Cipher Was Broken, and How It Was Read by the Allies in World War Two, 1984, pp. 241-45.
  16. Sebag-Montefiore, Hugh. Enigma : the battle for the code. — London: Cassell Military, 2004. — С. 357. — 491 с. — ISBN 0304366625.
  17. Ralph Erskine. The Poles Reveal their Secrets: Alastair Denniston's Account of the July 1939 Meeting at Pyry // Cryptologia. — 2006-12-01. — Т. 30, вып. 4. — С. 294–305. — ISSN 0161-1194. — doi:10.1080/01611190600920944.
  18. Sebag-Montefiore, Hugh. Enigma : the battle for the code. — London: Cassell Military, 2004. — С. 391. — 491 с. — ISBN 0304366625.

Ссылки править

Литература править