Выбрать главу

Квадрат Виженера

В шифре Цезаря используется одноалфавитный шифр подстановки; один шифроалфавит соответствует алфавиту открытого текста, так что одна зашифрованная буква соответствует одной и той же букве исходного текста. (В классическом шифре Цезаря буква D всегда соответствует букве А, Е — В, и так далее).

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

Обратите внимание на симметрию в расположении букв. Пара (A, R) = (R, А), и это же соотношение справедливо для всех букв.

Мы видим, что квадрат Виженера содержит стандартный алфавит из n букв, повторяющийся n раз с различными увеличивающимися параметрами. Так, первый шифроалфавит получается применением шифра Цезаря с параметрами а = 1 и b = 2; второй — эквивалентен шифру Цезаря с Ь = 3 и так далее. Ключом к квадрату Виженера является правило для каждой буквы, которое указывает, на сколько строк вниз надо спуститься, чтобы найти зашифрованное значение, соответствующее этой букве. Простейший ключ состоит из движения вниз на одну строку при переходе от одной буквы исходного сообщения к другой.

Таким образом, наша классическая фраза VENI VIDI VICI будет зашифрована следующим образом:

Для шифрования первой V мы найдем соответствующую букву в строке 2: W.

Для шифрования Е мы найдем соответствующую букву в строке 3: G.

Для шифрования N мы найдем соответствующую букву в строке 4: Q.

I (строка 5): М.

V (строка 6): А.

I (строка 7): О.

D (строка 8): К.

I (строка 9): Q.

V (строка 10): Е.

I (строка 11): S.

С (строка 12): N.

I (строка 13): U.

* * *

ИГРА С ДИСКАМИ

На практике для полиалфавитного шифрования используется устройство, известное как шифровальный диск Альберти. Этот портативный прибор состоит из двух концентрических дисков: один — фиксированный, с выгравированным на нем стандартным алфавитом, второй — подвижный, с другим алфавитом. Отправитель, поворачивая подвижный диск, может сопоставить стандартный алфавит с разными шифроалфавитами в зависимости от числа поворотов диска, максимальное количество которых равно числу букв используемого алфавита. Шифр, полученный с помощью диска Альберти, очень устойчив к частотному анализу. Чтобы расшифровать сообщение, получатель должен сделать то же число оборотов, что и отправитель. Безопасность этого шифра, как всегда, зависит от сохранения в тайне кода, а именно — от расположения алфавита на подвижном диске плюс число необходимых поворотов. Диск Альберти с одним подвижным кольцом, на котором выгравирован стандартный алфавит, дает шифр Цезаря при каждом повороте. Аналогичные устройства использовались во время Гражданской войны в США, и сегодня их можно встретить в детских шпионских играх.

Диск Альберти, используемый Конфедерацией во время американской гражданской войны.

В результате наша фраза превратится в WGQM AOKQ ESNU. При этом повторяющиеся буквы исходного сообщения исчезнут. Однако каждый криптограф стремится к тому, чтобы генерировать шифры, которые легко запомнить, распространять и обновлять. Тогда стали брать ключевые слова с таким же или меньшим количеством букв, что и в исходном сообщении, чтобы строить более короткие и легкие в использовании квадраты Виженера. Ключевое слово дает первые буквы каждой строки (см. стр. 47), и строки продолжаются остатком алфавита (как они представлены в полном квадрате). Затем ключевое слово, повторенное нужное количество раз, пишется под буквами сообщения, которое необходимо было зашифровать. Буква ключевого слова под каждым символом сообщения подсказывала криптографу строку в матрице, из которой нужно было взять зашифрованное значение этой буквы.

* * *

ДИПЛОМАТ И КРИПТОГРАФ

Блез де Виженер родился во Франции в 1523 г. В 1549 г. он был послан французским правительством с дипломатической миссией в Рим, где заинтересовался криптографией и шифрованием сообщений. В 1585 г. он написал основополагающий трактат о шифрах, Traicte des Chiffres, где описывалась система шифрования, которой он дал свое имя. Эта система шифрования оставалась неподдающейся взлому на протяжении почти трех столетий, пока британцу Чарльзу Бэббиджу не удалось взломать ее в 1854 г. Любопытно, что этот факт стал известен лишь в XX в., когда группа ученых разбирала вычисления и личные заметки Бэббиджа.

* * *

Например, если мы хотим зашифровать сообщение BUY MILK TODAY («Купи сегодня молоко») с помощью ключевого слова JACKSON:

Зашифрованное сообщение будет KUAWAZXCOFKQ.

Квадрат Виженера со строками, определенными ключевым словом JACKSON.

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

Давайте посмотрим на первый столбик. Мы хотим найти неизвестную букву «?», зная, что (? W) = W. Для этого мы посмотрим на строку W квадрата Виженера на стр. 44, найдем в этой строке букву W и определим, какому столбцу она соответствует; получим букву А. Аналогично мы ищем вторую букву «?», зная, что (? I) = Z, и получаем букву R и так далее. Таким образом мы получим исходное сообщение ARCHIMEDES («Архимед»).

Историческое значение квадрата Виженера, которое он разделяет и с другими полиалфавитными шифрами, например, с шифром Гронсфельда (разработанным примерно в то же время; мы приводим его подробное описание в Приложении), состоит в устойчивости к частотному анализу. Если одна и та же буква может быть зашифрована несколькими способами с возможностью тем не менее ее впоследствии расшифровать, как же можно такой шифр взломать? Этот вопрос оставался без ответа более 300 лет.