Введение
В криптографии роторная машина — это электромеханическое устройство потокового шифрования, используемое для шифрования и дешифрования сообщений. Роторные машины на протяжении большей части XX века являлись передовыми криптографическими системами и широко применялись в 1920-х – 1970-х годах. Наиболее известным примером является немецкая машина «Энигма», результаты расшифровки которой союзниками во время Второй мировой войны позволили получить разведывательные данные под кодовым названием «Ультра».
Описание
Основной компонент роторной машины — набор роторов, также называемых колесами или барабанами, представляющих собой вращающиеся диски с массивом электрических контактов с обеих сторон. Электрические соединения между контактами реализуют фиксированную подстановку букв, заменяя их сложным образом. Само по себе это не обеспечило бы достаточной безопасности; однако перед или после шифрования каждой буквы роторы сдвигаются, изменяя подстановку. Таким образом, роторная машина генерирует сложный полиалфавитный шифр подстановки, который меняется с каждым нажатием клавиши.
Предыстория
В классической криптографии одним из самых ранних методов шифрования был простой шифр подстановки, где буквы в сообщении систематически заменялись с помощью некоторой секретной схемы. Моноалфавитные шифры подстановки использовали только одну схему замещения, иногда называемую "алфавитом"; их можно было легко взломать, например, с помощью частотного анализа. Более безопасными были схемы, включавшие несколько алфавитов – полиалфавитные шифры. Поскольку такие схемы выполнялись вручную, использовать можно было лишь небольшое количество различных алфавитов; все более сложные были бы непрактичны. Однако использование всего нескольких алфавитов делало шифры уязвимыми для атак. Изобретение роторных машин механизировало полиалфавитное шифрование, обеспечивая практический способ использования гораздо большего числа алфавитов. Самым ранним криптоаналитическим методом был частотный анализ, в котором закономерности букв, уникальные для каждого языка, могли быть использованы для получения информации о заменном алфавите (алфавитах), используемом в моноалфавитном шифре подстановки. Например, в английском языке буквы E, T, A, O, I, N и S обычно легко идентифицировать в зашифрованном тексте, поскольку, будучи очень часто встречающимися, их соответствующие зашифрованные буквы также будут столь же часто встречаться. Кроме того, сочетания биграмм, такие как NG, ST и другие, также очень распространены, в то время как другие действительно редки (например, Q, за которым следует что-либо, кроме U). Самый простой частотный анализ основан на том, что одна буква шифротекста всегда заменяется на одну букву открытого текста в шифре: если это не так, дешифрование сообщения становится сложнее. В течение многих лет криптографы пытались скрыть частоты, используя несколько различных замен для часто встречающихся букв, но эта техника не смогла полностью скрыть закономерности в замене букв открытого текста. К XVI веку такие схемы широко взламывались. В середине XV века Альберти изобрел новую технику, теперь известную как полиалфавитные шифры, которая признавала преимущество использования более одного алфавита замещения; он также изобрел простой метод для "создания" множества шаблонов замещения для использования в сообщении. Две стороны обменивались небольшим объемом информации (называемой ключом) и использовали его для создания множества алфавитов замещения и, следовательно, множества различных замен для каждой буквы открытого текста в течение одного сообщения. Идея проста и эффективна, но оказалась сложнее в использовании, чем можно было ожидать. Многие шифры были лишь частичной реализацией идеи Альберти и поэтому их было легче взломать, чем они могли бы быть (например, шифр Виженера). Только в 1840-х годах (Бэббидж) была известна техника, способная надежно взломать любой из полиалфавитных шифров. Его метод также искал повторяющиеся закономерности в шифротексте, которые дают подсказки о длине ключа. Как только это известно, сообщение по сути превращается в серию сообщений, каждое из которых имеет длину ключа, к которым можно применить обычный частотный анализ. Чарльз Бэббидж, Фридрих Касиски и Уильям Фридман – одни из тех, кто внес наибольший вклад в разработку этих методов. Конструкторы шифров пытались заставить пользователей использовать разную замену для каждой буквы, но это обычно означало очень длинный ключ, что создавало ряд проблем. Длинный ключ требует больше времени для передачи (безопасной) сторонам, которым он нужен, и поэтому ошибки при распространении ключа более вероятны. Кроме того, многие пользователи не обладают терпением для выполнения длительных, безупречных преобразований букв, и уж тем более под давлением времени или в стрессовой ситуации на поле боя. "Идеальный" шифр такого типа был бы тем, в котором такой "длинный" ключ можно было бы генерировать из простого шаблона (в идеале автоматически), создавая шифр, в котором было бы так много алфавитов замещения, что подсчет частоты и статистические атаки были бы фактически невозможны. Энигма и роторные машины в целом были именно тем, что было необходимо, поскольку они были серьезно полиалфавитными, используя разные алфавиты замещения для каждой буквы открытого текста, и автоматическими, не требующими от пользователей каких-либо необычных способностей. Их сообщения, как правило, было сложнее взломать, чем любые предыдущие шифры.
Механизация
Создать машину для выполнения простой подстановки – несложно. В электрической системе с 26 выключателями, подключенными к 26 лампочкам, каждый выключатель зажигает одну из лампочек. Если каждым выключателем управляет клавиша на пишущей машинке, а лампочки помечены буквами, то такая система может быть использована для шифрования путем выбора соединений между клавишами и лампочками: например, ввод буквы заставит лампочку с соответствующей буквой загореться. Однако соединения фиксированы, что обеспечивает небольшую безопасность. Роторные машины изменяют соединения с каждым нажатием клавиши. Соединения размещаются внутри ротора, который затем вращается с помощью шестерен при каждом нажатии буквы. Таким образом, при первом нажатии может получиться , а при следующем – . Каждое нажатие клавиши сдвигает положение ротора, обеспечивая новую подстановку и реализуя полиалфавитный шифр. В зависимости от размера ротора, это может быть более или менее безопасно, чем ручные шифры. Если ротор имеет всего 26 позиций, по одной для каждой буквы, то все сообщения будут иметь (повторяющийся) ключ длиной 26 букв. Хотя сам ключ (в основном скрытый в проводке ротора) может быть неизвестен, методы взлома таких шифров не требуют этой информации. Таким образом, хотя такая однороторная машина, безусловно, проста в использовании, она не более безопасна, чем любая другая система частичной полиалфавитной подстановки. Но это легко исправить. Просто установите несколько роторов рядом друг с другом и соедините их шестернями. После того, как первый ротор совершит полный оборот, следующий ротор сдвинется на одну позицию. Теперь для повторения ключа потребуется ввести 26 × 26 = 676 букв (для латинского алфавита), и при этом для настройки системы достаточно сообщить ключ из двух букв/цифр. Если ключа длиной 676 букв недостаточно, можно добавить еще один ротор, что приведет к периоду длиной 17 576 букв. Чтобы шифрование было столь же простым, как и дешифрование, некоторые роторные машины, в частности Enigma, использовали алгоритм симметричного ключа, то есть двойное шифрование с одними и теми же настройками восстанавливает исходное сообщение (см. инволюцию).
Изобретение
Концепция роторной машины возникла у нескольких изобретателей независимо друг от друга примерно в одно и то же время. В 2003 году выяснилось, что первыми изобретателями были два голландских морских офицера, Тео А. ван Хенгель (1875–1939) и Р. П. С. Шпенглер (1875–1955) в 1915 году (De Leeuw, 2003). Ранее изобретение приписывалось четырем изобретателям, работавшим независимо и почти одновременно: Эдварду Хеберну, Арвиду Дамму, Хьюго Коху и Артуру Шербиусу. В США Эдвард Хью Хеберн построил роторную машину с одним ротором в 1917 году. Он был убежден, что сможет разбогатеть, продав такую систему военным, и создал серию различных машин с одним до пяти роторов. Однако его успех был ограничен, и в 1920-х годах он обанкротился. В 1931 году он продал небольшое количество машин ВМС США. В машинах Хеберна роторы можно было открыть и изменить проводку всего за несколько минут, что позволяло продать одну серийно выпускаемую систему нескольким пользователям, которые затем могли создавать собственные ключи роторов. Расшифровка заключалась в извлечении ротора (роторов) и их переворачивании для изменения схемы. Неизвестно Хеберну, Уильям Ф. Фридман из SIS армии США быстро продемонстрировал уязвимость системы, которая позволяла взламывать шифры, полученные с ее помощью, а также с любой машины с аналогичными конструктивными особенностями, при достаточном объеме работы. Другим ранним изобретателем роторной машины был голландец Хьюго Кох, который подал заявку на патент на роторную машину в 1919 году. Примерно в то же время в Швеции Арвид Герхард Дамм изобрел и запатентовал другую конструкцию ротора. Однако роторная машина стала широко известной благодаря Артуру Шербиусу, который подал патент на роторную машину в 1918 году. Позже Шербиус разработал и вывел на рынок машину «Энигма».
Машина Энигма
Наиболее известным роторным шифровальным устройством является немецкая машина «Энигма», использовавшаяся во время Второй мировой войны, и существовало несколько её вариантов. Стандартная модель «Энигмы», «Энигма I», использовала три ротора. В конце стека роторов располагался дополнительный, не вращающийся диск – «рефлектор», соединённый таким образом, что входной сигнал электрически замыкался на другой контакт с той же стороны и, таким образом, «отражался» обратно через стек из трёх роторов для получения шифротекста. В большинстве других роторных шифровальных машин ток проходил через роторы и выходил на другую сторону к лампам. Однако в «Энигме» он «отражался» обратно через диски перед тем, как достичь ламп. Преимущество заключалось в том, что для расшифровки сообщения не требовалось никаких изменений в настройках; машина была «симметричной». Рефлектор «Энигмы» гарантировал, что ни одна буква не может быть зашифрована в саму себя, то есть буква А никогда не превращалась обратно в А. Это способствовало усилиям польских, а затем и британских криптографов по взлому шифра. (См. Криптоанализ «Энигмы».) Шербиус объединился с инженером-механиком по имени Риттер и основал Chiffriermaschinen AG в Берлине, прежде чем продемонстрировать «Энигму» публике в Берне в 1923 году, а затем в 1924 году на Всемирном почтовом конгрессе в Стокгольме. В 1927 году Шербиус выкупил патенты Коха, а в 1928 году они добавили плагборд – по сути, не вращающийся, вручную перекоммутируемый четвёртый ротор – на переднюю панель машины. После смерти Шербиуса в 1929 году Вилли Корн возглавил дальнейшую техническую разработку «Энигмы». Как и другие ранние разработки роторных машин, «Энигма» Шербиуса не имела большого коммерческого успеха. Однако немецкие вооружённые силы, отчасти в ответ на сообщения о взломе их кодов во время Первой мировой войны, приняли «Энигму» для защиты своих коммуникаций. Рейхсмарине приняло «Энигму» на вооружение в 1926 году, а немецкая армия начала использовать другой вариант примерно в 1928 году. «Энигма» (в нескольких вариантах) была роторной машиной, которую компания Шербиуса и её преемник, Heimsoth & Reinke, поставляли немецким военным и таким организациям, как служба безопасности нацистской партии, СД. Польские криптографы взломали «Энигму» немецкой армии в декабре 1932 года, вскоре после её ввода в эксплуатацию. 25 июля 1939 года, всего за пять недель до вторжения Гитлера в Польшу, польское Шифровальное бюро Генерального штаба поделилось своими методами и оборудованием для дешифровки «Энигмы» с французами и британцами в качестве вклада Польши в общую оборону против нацистской Германии. Дилли Нокс уже взломал сообщения испанских националистов на коммерческой «Энигме» в 1937 году во время гражданской войны в Испании. Через несколько месяцев, используя польские методы, британцы начали расшифровывать сообщения «Энигмы» в сотрудничестве с польскими криптологами, которые бежали из оккупированной немцами Польши в Париж. Польские криптографы продолжали взламывать «Энигму» немецкой армии, а также перехватывать сообщения Люфтваффе, пока работа на станции ПК «Бруно» во Франции не была прекращена в результате немецкого вторжения в мае-июне 1940 года. Британцы продолжили взлом «Энигмы» и, в конечном итоге при содействии Соединённых Штатов, расширили работу на немецкий военно-морской трафик «Энигмы» (который поляки расшифровывали ещё до войны), особенно сообщения с и на подводные лодки во время битвы за Атлантику.
Различные машины
Во время Второй мировой войны (ВВВ) как немцы, так и союзники разработали дополнительные роторные машины. Немцы использовали машины Lorenz SZ 40/42 и Siemens и Halske T52 для шифрования телеграфного трафика, использующего код Бодо; этот трафик был известен союзникам как "Fish". Союзники разработали Typex (британскую) и SIGABA (американскую). Во время войны швейцарцы начали разработку усовершенствования "Энигмы", которое привело к созданию машины NEMA, поступившей на вооружение после Второй мировой войны. Существовал даже японский вариант "Энигмы", в котором роторы располагались горизонтально; по-видимому, он так и не был введен в эксплуатацию. Японская машина PURPLE не была роторной, она была построена на основе электрических шаговых переключателей, но была концептуально схожей. Роторные машины продолжали использоваться даже в компьютерную эпоху. KL 7 (ADONIS), машина шифрования с 8 роторами, широко использовалась США и их союзниками с 1950-х по 1980-е годы. Последнее канадское сообщение, зашифрованное с помощью KL 7, было отправлено 30 июня 1983 года. Советский Союз и его союзники использовали 10-роторную машину под названием "Фиалка" вплоть до 1970-х годов. Уникальный роторный аппарат под названием Cryptograph был создан в 2002 году Татьяной ван Варк из Нидерландов. Это необычное устройство вдохновлено "Энигмой", но использует 40-позиционные роторы, позволяющие шифровать буквы, цифры и некоторые знаки препинания; каждый ротор состоит из 509 деталей. Программная реализация роторной машины использовалась в команде crypt, которая входила в состав ранних операционных систем UNIX. Она стала одной из первых программ, нарушивших экспортные правила США, которые классифицировали криптографические реализации как вооружение.