Chaocipher [1] — метод шифрования, изобретенный Джоном Фрэнсисом Бирном в 1918 году и описанный в его автобиографической книге Silent Years 1953 года . [2] Он считал, что Chaocipher прост, но не поддается взлому. Бирн утверждал, что машина, которую он использовал для шифрования своих сообщений, могла поместиться в коробке из-под сигар . Он предлагал денежное вознаграждение тому, кто сможет ее разгадать.
Бирн безуспешно пытался заинтересовать своей системой Корпус связи и ВМС США. Хотя многочисленные студенты классического криптоанализа пытались решить вызовные сообщения на протяжении многих лет, никому это не удалось. В течение 90 лет алгоритм Chaocipher был тщательно охраняемым секретом, известным лишь горстке людей.
В мае 2010 года невестка Бирна, Патрисия Бирн , передала все документы и артефакты, связанные с Chaocipher [3], в Национальный криптологический музей в Форт-Миде, штат Мэриленд, США. Это привело к раскрытию алгоритма Chaocipher. [4]
В воплощении Хаокрипта Бирна система состоит из двух дисков, называемых левым и правым дисками, каждый из которых имеет 26 съемных язычков одинакового размера по периферии. Эти съемные язычки содержат 26 букв алфавита (т. е. от A до Z) в некотором заранее установленном порядке. По окружности каждого диска находятся штифты, которые позволяют двум дискам «взаимодействовать» или блокироваться. При включении поворот одного диска в одном направлении (например, по часовой стрелке) заставит другое колесо вращаться в противоположном направлении (например, против часовой стрелки). Язычки являются съемными, что означает, что язычок можно удалить с периферии, сдвинуть другой блок язычков и вставить извлеченный язычок в пустое место на периферии.
В любой момент времени диски могут быть зацеплены друг с другом так, что перемещение одного из них приведет к перемещению другого в противоположном направлении. Аналогично, зацепленные диски могут быть расцеплены, и в этот момент диск может быть повернут без перемещения другого диска. Зацепление и расцепление, вероятно, могут быть выполнены путем помещения рычага в одно из двух положений.
Два вышеупомянутых диска установлены на платформе, состоящей из двух шпинделей.
На платформе вокруг каждого диска есть две отметки, известные как «зенит» и «надир». Зенит можно представить как 12 часов на аналоговых часах, а надир — как 6 часов.
В своей классической форме система Chaocipher состоит из двух алфавитов, причем правый алфавит используется для поиска буквы открытого текста, а другой («левый») алфавит используется для чтения соответствующей буквы шифртекста. Базовый алгоритм связан с концепцией динамической подстановки [5] , при которой два алфавита слегка изменяются после того, как каждая входная буква открытого текста зашифрована. Это приводит к нелинейным и сильно рассеянным алфавитам по мере продвижения шифрования.
Расшифровка идентична шифрованию, при этом буква зашифрованного текста располагается в «левом» алфавите, а соответствующая буква открытого текста считывается из «правого» алфавита.
Подробное описание алгоритма Chaocipher доступно [4], а также обсуждения расшифрованных открытых текстов [6] и решения проблемы Бирна. [7]
При наличии левого и правого дисков шифрование открытого текста состоит из пяти этапов:
Эти пять шагов выполняются непрерывно до тех пор, пока не будет исчерпан входной открытый текст. Чтобы проиллюстрировать процесс, мы зашифруем первую букву открытого текста из Приложения 1 Бирна, используя те же алфавиты и настройки диска, которые он использовал, как показано на рисунке 1.
Предположим, мы хотим зашифровать букву «A». Найдите «A» на периферии диска открытого текста (справа). Вы можете увидеть выделенную букву открытого текста на рисунке 2.
Пока диски задействованы, вращайте правый диск, чтобы привести букву открытого текста «А» в зенит (рисунок 3). Обратите внимание, как левый (шифровальный) диск вращается соответственно в противоположном направлении.
Буква в зените на шифровальном (левом) диске — это наша буква шифртекста (т. е. «С»).
На этом этапе мы завершили шифрование открытого текста в зашифрованный текст, т.е. «A» (pt) было зашифровано в «C» (ct).
Инструкции по выполнению уникальной перестановки двух дисков Chaocipher для подготовки к шифрованию следующей буквы открытого текста см. в следующем разделе.
Теперь, когда известны буква открытого текста и соответствующая ей буква шифртекста, приступаем к перестановке алфавитов на обоих дисках, готовясь к шифрованию следующей буквы открытого текста.
Перестановка алфавита левого колеса включает в себя следующие общие шаги (рисунок 4):
Перед выполнением шага перестановки левый диск должен выглядеть так, как показано на рисунке 4а.
Выполняя шаг (1), извлеките букву в позиции зенит-1 (т.е. «P»), оставив кратковременную «дырку» в этой позиции (рисунок 4b).
Для шага (2) сдвиньте все буквы в последовательности против часовой стрелки, начиная с зенита-2 («E») вниз до надира («O») включительно, перемещая последовательность («EDQRSTIXYLMO») как полный блок на одну позицию по часовой стрелке (рисунок 4c).
На последнем этапе (3) вставьте извлеченную букву ("P") обратно в алфавит в позицию надира. Левая часть теперь переставлена и должна выглядеть как на рисунке 4d.
Перестановка правого диска похожа на перестановку левого диска, с небольшими, но существенными отличиями. Она состоит из следующих общих шагов (рисунок 5):
Давайте выполним вышеуказанные шаги на правом диске, используя наш пример. Правый диск должен выглядеть как схема на рисунке 5a. В этой конфигурации буква в зените — «A».
На шаге (1) сначала отсоедините два диска. Это позволит вращать правый диск (см. следующий шаг), не перемещая левый диск. Затем поверните диск на одну позицию против часовой стрелки, переместив букву «Y» в положение зенита (рисунок 5b). Наконец, снова соедините два диска.
На шаге (2) извлеките букву в позиции зенит+2 («N») из диска, временно оставив «отверстие» (рисунок 5c).
На шаге (3) сдвиньте одиннадцать буквенных вкладок от зенита+3 до зенита+13 (т.е. 'BQDSEFGHLWI') на одну позицию против часовой стрелки. Это закроет 'дыру' в зените-2, одновременно открыв новую 'дыру' в надире (рисунок 5d).
Для последнего шага (4) вставьте ранее извлеченную буквенную вкладку ("N") обратно в диск в положение надира. Это завершает перестановку правого диска, который теперь должен выглядеть как на рисунке 5e.
Повторное включение дисков подготавливает систему к шифрованию следующей буквы открытого текста (рисунок 6).
Расшифровка сообщения, зашифрованного Chaocipher, идентична шагам, используемым для шифрования. Единственное отличие состоит в том, что дешифровщик находит известную букву шифртекста на левом (шифровальном) диске, считывая букву открытого текста с правого (простого) диска. Перестановка левого/правого диска идентична при шифровании и расшифровке.
Генри Э. Ланген [8] , редактор информационного бюллетеня Американской ассоциации криптограмм «The Cryptogram» в 1952–1956 годах, сказал: «Он объяснил, что машина устроена как нечто вроде пишущей машинки с двумя вращающимися дисками, алфавиты которых расположены по периферии в полном беспорядке [...] При использовании всего двух дисков я немного сбит с толку тем, как это может привести к такой полной хаотизации открытого текста сообщения». [9]
Хотя Джон Ф. Бирн представил сообщения о вызовах Chaocipher в своей автобиографической книге "Silent Years", он никогда не описывал, как работала система. Любой, кто брался за сообщения о вызовах, должен был делать это, не имея никаких знаний о системе.
До 2010 года по крайней мере три человека знали, как это работает: сын Бирна Джон и двое редакторов Cryptologia , которым Джон поделился базовым методом в 1990 году (то есть Лу Кру и Сайфер Девурс). [10]
В августе 2009 года Моше Рубин нашел невестку Бирна Патрисию Бирн (урожденную Ньюэй) , которая в мае 2010 года передала артефакты и документы Chaocipher своего свекра в Национальный криптологический музей. [11]