Диск Альберти: как появилось первое шифровальное устройство эпохи Возрождения
Первое сохранившееся описание диска Альберти принадлежит Леону Батисте Альберти — итальянскому ученому эпохи Возрождения, который в 1466 году написал по заказу папы Римского Павла II «Трактат о шифрах». Несмотря на свой солидный возраст, шифровальные диски настолько удобны, что ими продолжали пользоваться и во второй половине ХХ века, когда уже появились полноценные компьютеры и электронные шифраторы.
Один алфавит хорошо, а много — лучше
Шифры можно разделить на две большие группы — шифры замены, где символы открытого сообщения (буквы, цифры, биты) заменяются на другие символы, и шифры перестановки, где символы открытого сообщения меняются местами. В Новое время появляются шифры, в которых эти принципы комбинируются. И даже в самых сложных современных шифрах можно проследить комбинации этих двух принципов, только операции замены и перестановки совершаются не с буквами, а с битами.
Самый простой шифр замены - шифр Цезаря. Чтобы им воспользоваться, нужно сначала написать алфавит в одну строку, а затем под этой строкой еще раз написать буквы по порядку, но уже сдвинув текст на несколько шагов — например, на три (именно такой сдвиг использовал Гай Юлий Цезарь).
- Алфавит открытого текста: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
- Алфавит замены: ГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВ
Вторая строка будет алфавитом замены. Чтобы зашифровать сообщение, нужно каждую букву открытого (незашифрованного) текста заменить на расположенную под ней букву из алфавита замены. Например, ТЕХИНСАЙДЕР превратится в ХЗШЛРФГМЖЗУ.
Шифр Цезаря относится к шифрам простой замены, или шифрам моноалфавитной замены, поскольку используется только один алфавит замены. Взломать такие шифры довольно просто, например, с помощью частотного анализа. Этот метод — самый первый метод криптоанализа в истории — был описан в 850 году арабским ученым и философом Абу Юсуф Якуб ибн Исхак аль-Кинди, известным как Аль-Кинди, в трактате «О дешифровке криптографических сообщений». Аль-Кинди заметил, что в любом тексте на определенном языке разные буквы алфавита употребляются в тексте с разной частотой, и предложил использовать частотный анализ текста для дешифровки сообщений. Например, в русском языке самой часто встречающейся буквой является буква О. И если в зашифрованном сообщении самой часто встречающейся буквой является буква Ж, можно предположить, что скорее всего за буквами Ж и скрывается буква О.
Шифр, достойный королей
Полиалфавитные шифры впервые упоминаются в XIII–XIV веках в трудах арабских ученых Ахмада ибн Фадлана и Ибн аль-Дурайхима, а с распространением арабского знания в Европу в Эпоху Возрождения появляются и первые европейские трактаты о полиалфавитных шифрах, одним из которых и стал «Трактат о шифрах» (1466) Леона Батиста Альберти. В трактате Альберти дал обзор существующих методов шифрования и предложил свой шифр, «достойный королей», с использованием одного из первых устройств для шифрования — шифровального диска.
Возможным вдохновением для Альберти могла послужить вольвелла средневекового богослова Раймунда Луллия — похожий на шифровальный диск инструмент для комбинаторных расчетов из скрепленных на одной оси бумажных дисков, который Луллий описал в 1290-е годы в трактате «Великое искусство» (Ars Magna).
Как устроен диск Альберти
Согласно описанию самого Альберти, устройство состояло из двух пластин в форме диска на одной оси. На внешнем неподвижном диске Stabilis были написаны цифры от 1 до 4 и 20 букв латинского алфавита (кроме букв J, U и W — их еще не существовало, и H, K и Y — они редко использовались и автор предложил их исключить). На внутреннем подвижном диске Mobilis — 23 буквы латинского алфавита (включая h, k и y, которых не было на внешнем диске), и символ &, обозначающий союз «и» (латинское et).
- Алфавит открытого текста: ABCDEFGILMNOPQRSTVXZ1234
- Алфавит зашифрованного текста: agqldfts&moebkxihcnzuryp
Альберти предложил вращать внутренний диск произвольно и помечать каждый сдвиг внутри зашифрованного текста заглавными буквами. То есть если при расшифровке видели в зашифрованном тексте заглавную букву, нужно было сдвинуть внутренний диск так, чтобы совместить букву-указатель на внутреннем диске с заглавной буквой на внешнем диске. Букву-указатель можно было выбрать любую, и она была частью ключа шифрования, как и порядок букв на внутреннем диске. Фактически, ключ шифрования прятался в самом сообщении.
Самым знаменитым шифром, который можно было реализовать с помощью диска Альберти, стал шифр Виженера, долгое время считавшийся невзламываемым.
В 1586 году французский дипломат и алхимик Блез де Виженер опубликовал трактат «О Шифрах и тайнописи», в котором предложил при шифровании с помощью диска Альберти использовать еще и ключевое слово, или пароль. Впервые подобную идею высказал Джованни Баттиста Белазо в 1553 году, однако публикация Виженера оказалась более популярной, поэтому в историю шифр вошел под его именем.
В трактате Виженер предлагал использовать специальную таблицу для шифрования — tabula recta, однако ее можно заменить на диск Альберти, если на внутреннем диске будет точно такой же алфавит, как и на внешнем.
Вместо того, чтобы совершать шифровальным диском произвольный шаг и записывать позицию диска внутри самого сообщения, как это предлагал делать Альберти, можно использовать ключевое слово (пароль) для управления вращением шифровального диска. Например, если используется ключевое слово КЛЮЧ, то для того, чтобы узнать первую букву зашифрованного сообщения, нужно букву К с внутреннего диска совместить с буквой А с внешнего, чтобы узнать вторую букву — нужно совместить букву Л с буквой А и так далее. Когда буквы ключевого слова закончатся, нужно снова использовать первую букву ключевого слова.
- Открытый текст: ТЕХИНСАЙДЕР
- Ключ: КЛЮЧКЛЮЧКЛЮ
- Зашифрованный текст: ЭРУАШЭЮБОРО
Шифр Бофора
Для расшифрования зашифрованного текста нужно проделать обратную операцию — найти на внутреннем вращающемся диске букву из зашифрованного текста. Так как его положение все время меняется, это неудобно. Эту проблему первым решил Джованни Сестри в XVIII веке, однако в историю эта вариация полиалфавитного шифра вошла под именем британского адмирала сэра Фрэнсиса Бофорта, который независимо изобрел и популяризовал этот шифр.
Шифр Бофора отличается от шифра Виженера тем, что один из алфавитов (обычно на внутреннем диске) записан в обратном порядке, от Z до A. Это делает процессы шифрования симметричными (если буква A на внутреннем диске соответствует букве Z на внешнем, то буква Z на внутреннем диске будет соответствовать букве A на внешнем), благодаря чему процесс шифрования и расшифрования идентичен — не важно, на каком именно диске мы ищем букву.
А в пакетном кодировщике CO/B-8, использовавшемся во время войны во Вьетнаме в 1955-1975 годах в армии США на внутреннем подвижном диске есть сразу два алфавита — обычный и инвертированный, как в шифре Бофора. Это устройство позволяло не только зашифровать сообщение, но и записать его с использованием азбуки Морзе на магнитную ленту, чтобы затем на большой скорости проиграть его по радио. Таким образом, можно было защититься не только от перехвата, но и от пеленгации — установления местоположения радиопередатчика.
Век шестеренок
На протяжении 300 лет шифр Виженера считался невзламываемым. Однако в ХIХ веке его независимо взломали прусский криптограф Фридрих Касиски и британский ученый Чарльз Бэббидж — тот самый, который придумал аналитическую и разностную машины, прообразы современных компьютеров. Их взлом, известный как метод Касиски, основывается на периодичности этого шифра. Поскольку при шифровании ключевое слово несколько раз повторяется, такой шифр можно представить не как полиалфавитный, а как, например, четыре моноалфавитных шифра — если посмотреть на пример с ключевым словом «КЛЮЧ». В таком случае стойкость шифра напрямую зависит от длины ключа. Фактически, шифровальные машины типа «Энигмы» или NEMA были изобретены для того, чтобы увеличить период ключа. Например, у «Энигмы» период ключа был равен 17 576.
В 1882 году американский банкир Фрэнк Миллер опубликовал книгу «Телеграфные коды, гарантирующие приватность и секретность при передаче телеграмм», в которой предложил использовать набор длинных случайных ключевых последовательностей для шифрования телеграмм. Идея Миллера не получила широкого применения, однако стала первой реализацией системы шифрования «одноразовый блокнот». А в 1941 году советский ученый Владимир Котельников доказал, что при выполнении определенных правил, шифр одноразовых блокнотов взломать невозможно.
- Ключ должен быть равен длине сообщения.
- Ключ должен состоять из случайной последовательности знаков.
- Ключ может использоваться только один раз, после чего должен быть уничтожен обеими сторонами.
- Ключ должен быть известен только отправителю и получателю.
- Если соблюдены все правила — такой шифр взломать невозможно.
Поэтому начиная с XIX века изобретатели стали искать способы, как увеличить период ключа с помощью механизмов — в первую очередь шестеренок. Одним из первых устройств такого типа стал «Криптограф» Чарльза Уитстона. Он был известен как создатель первой частной телеграфной сети и разработчик другого знаменитого шифра — шифра Плейфера.
Уитстон создал устройство еще в 1850-х, но не смог получить патент, поскольку выяснилось, что подобная конструкция была запатентована в 1817 году американским полковником Дециусом Уодсвортом, который, в свою очередь, опирался на черновики Томаса Джефферсона 1790 года. Тем не менее, Уитстон представил свой «Криптограф» на Парижской выставке 1867 года.
Внешне «Криптограф» напоминает часы: его лицевая часть состоит из двух концентрических колец с алфавитами и двух стрелок (длинной и короткой), которые указывают на буквы на внешнем и внутреннем кольце соответственно. Буквы на внутреннем кольце могут быть расположены в любом порядке — их на одну меньше, чем на внешнем. Стрелки соединены шестеренками, но внутренняя движется быстрее внешней. Причем так, что когда внешняя стрелка совершает полный оборот (26 шагов), внутренняя совершает на один шаг больше (27 шагов). Для того, чтобы зашифровать какую-то букву, нужно указать на нее на внешнем алфавитном кольце с помощью большой стрелки. Тогда маленькая при вращении укажет на соответствующую букву зашифрованного текста, и так далее. Вращение производится только по часовой стрелке, то есть, например, при шифровании буквы «А» после буквы «Б» стрелка не возвращается назад, а делает полный оборот.
Устройство Уитстона реализует полиалфавитный шифр, который отличается от классического шифра Виженера тем, что ключ не повторяется циклически, поскольку предыдущие буквы сообщения влияют на то, как будут зашифрованы последующие буквы. Метод Касиски становится бесполезным, ведь в процессе шифрования сообщение становится частью ключа. Фактически, «Криптограф» Уитстона представляет собой своеобразный шифр с автоключом. Однако именно эта особенность является и уязвимостью шифра: поскольку сообщение — это часть ключа, то ключ подчиняется тем же закономерностям, что и текст на естественном языке. Поэтому ключ можно подобрать, используя словарь часто встречающихся слов, биграмм, триграмм и наиболее вероятный вариант открытого текста. Стойкость этого шифратора была бы гораздо выше, если бы внутренняя стрелка делала бы большее количество шагов за раз, а также если бы ее вращение было неравномерным.
Другим примером использования принципа работы диска Альберти стали устройства Александра фон Крихе, продававшиеся под маркой «Криха» в 1920-1950-х годах, в частности «Криха-Лилипут», которое можно увидеть в экспозиции Музея криптографии. В этом приборе — компактном форм-факторе карманных часов Александр фон Крихе смог спрятать сложную систему шестеренок, на одной из которых можно было «программировать» зубцы-пины — менять их положение, что влияло на неравномерный шаг внутреннего алфавитного диска и фактически являлось частью ключа шифрования. Также как и в «Криптографе» Уитстона, порядок букв на шифровальных дисках можно было произвольно менять, что по задумке фон Крихе должно было повышать стойкость шифра.
Борис Хагелин — один из самых успешных разработчиков шифровальных машин в истории, первый криптомиллионер в мире (разбогател, сотрудничая с армией и спецслужбами США). В настольных версиях машин Хагелина зашифрованная буква печаталась на бумажной ленте, а вот в портативных механических машинах Хагелина CD-57 используется два алфавитных диска, один из которых инвертирован, как в шифре Бофора. Внутри устройства скрыт рычаг и система шестеренок, которая управляет неравномерным движением внутреннего алфавита.
Устройства Хагелина отличались механической сложностью и по стойкости шифрования были сравнимы с электромеханическими шифровальными машинами того периода, например, со знаменитой немецкой «Энигмой». Однако в отличие от «Энигмы» не требовали электропитания.
Для CD-57 и ее более ранней настольной версии CX-52 Хагелин разработал приставки RT, которые позволяли управлять движением алфавитного диска с помощью ключа, нанесенного на бумажную перфоленту. Механизм считывал отверстия на перфоленте как двоичное число от 0 до 31 и вращал алфавитный диск на соответствующее количество шагов. Использовался принцип одноразовых блокнотов: если на перфоленту, длина которой больше или равна длине сообщения, нанесена случайная последовательность отверстий, она используется только один раз и хранится только в двух экземплярах (у отправителя и получателя). Такой шифр взломать невозможно, даже обладая неограниченными вычислительными мощностями. Фактически, это чисто механическая реализация шифра Вернама, который используется до сих пор.