3.4 Многоалфавитные шифры

Более чем за 100 лет до трагедии Марии Стюарт и ее сторонников криптография, благодаря усилиям целых поколений создателей шифров, достигла сравнительно высокого уровня развития. Именно в этот период в Европе было придумано большое количество довольно интересных шифров, особое место среди которых занимают так называемые многоалфавитные шифры. Особую роль в создании и дальнейшем развитии таких шифров сыграли итальянец Л. Альберти, немец И. Тритемиус и француз Б. де Виженер.

Шифры итальянского архитектора

Одним из самых известных создателей шифров эпохи Возрождения был итальянский архитектор Леон Батиста Альберти (Leon Battista Alberti, 1404–1472). Именно он в 60-х годах XV столетия придумал один из наиболее совершенных вариантов шифра замены и считается одним из изобретателей шифров многоалфавитной замены, обеспечивших криптограммам сравнительно высокую устойчивость к вскрытию.

При применении шифра, придуманного Л. Альберти в 1466 году и называвшегося им не иначе, как «шифр, достойный королей», для зашифровки сообщения использовались два отдельных алфавита. Так, например, в слове, состоящем из пяти букв, первая, третья и пятая буквы шифровались обычной перестановкой на несколько позиций с помощью первого алфавита. А вторая и четвертая буквы шифровались также перестановкой, но уже с использованием второго алфавита. Таким образом, система шифрования заключается в том, что в шифре Альберти используются несколько замен в соответствии со специальным ключом.

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

Таинственный монах

В развитие криптографии свой посильный вклад в Средние века вносили не только итальянские изобретатели, но и ученые других стран. Так, например, немец Иоганнес Тритемиус (Johannes Trithemius, 1462–1516) опубликовал в 1508 году первую печатную книгу по криптологии, называвшуюся «Полиграфия». В этой книге, как и в некоторых других, приводилось описание некоторых популярных в то время шифров, один из которых представлял собой усовершенствованный вариант шифра многоалфавитной замены.

Изучив шифр Л. Альберти, немецкий аббат решил, что не следует ограничиваться использованием только двух алфавитов. Поэтому шифр Тритемиуса действительно стал многоалфавитным. При использовании этого шифра необходимо подготовить специальную таблицу, в которой в первой строке записывается обычный алфавит, во второй строке алфавит записывается со сдвигом на одну букву, в третьей строке — со сдвигом на две буквы и так далее. Именно такое расположение алфавитов впоследствии было использовано французом Блэйсом де Виженером при создании всемирно известного шифра, получившего его имя.

Многие специалисты вполне обоснованно считают, что И. Тритемиус первым дал описание шифра с использованием таблицы, в которой ячейки заполняются буквами алфавита в случайном порядке. При использовании такого шифра, например для шифрования открытого текста в русском языке, потребуется таблица с пятью строками и шестью столбцами. В эту таблицу записывается какое-либо известное отправителю и получателю слово, которое является ключом или паролем.

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

Шифр Виженера и метод Казисски

Через несколько десятков лет после смерти Л. Альберти французский дипломат Блэйс де Виженер (Blaise de Vigenere, 1532–1596) сделал следующий вполне предсказуемый шаг в развитии шифрования. Он предложил использовать для создания зашифрованных сообщений 26 алфавитов, размещенных в прямоугольной таблице. В верхнем ряду, который, кстати, не имеет номера, Виженер вписал алфавит от «а» до «z». Этот алфавит должен использоваться для работы с открытым текстом. В ячейки в крайнем левом столбце таблицы следует вписать цифры от 1 до 26, а в каждую пронумерованную строку таблицы — алфавит для шифрования. При этом алфавит в первом ряду начинался с буквы «В», алфавит во втором ряду — с буквы «С» и так далее до ряда 26, который начинался с буквы «А».

В окончательном виде такая таблица представляет собой ряд шифров Цезаря, в которых первый ряд перемещает букву на одну позицию в алфавите, второй ряд — на две, и так далее до 26 ряда, в котором буквы обоих алфавитов совпадают. Эго означает, что разные буквы могут быть зашифрованы с помощью алфавитов, расположенных в разных рядах. Однако порядок использования отдельных строк и алфавитов должен определяться каким-то паролем.

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

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

О стойкости шифра Виженера свидетельствует тот факт, что заслуживающая внимания методика его взлома была разработана лишь почти через триста лет, в 1863 году. Именно тогда была опубликована книга под названием «Искусство тайнописи и дешифрования». Ее автор, офицер прусской армии майор Фридрих Казисски, изложил метод вскрытия многоалфавитного шифра с повторяющимся паролем на примере считавшегося недешифруемым шифра Виженера. Таким образом, шифр, придуманный французским дипломатом, разгадал немецкий офицер.

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