Книга: Основы классической криптологии. Секреты шифров и кодов
5.3. Многоалфавитные шифры
5.3. Многоалфавитные шифры
Необходимо отметить, что использование простейших шифров замены не гарантирует пользователю тогочто зашифрованные, например, с помощью шифра Цезаря, записи в тайном дневнике не будут прочитаны после вскрытия шифра.
Дело в том, что любой сообразительный несанкционированный пользователь, заподозрив, что в качестве шифра использовался шифр Цезаря, может сравнительно быстро, испробовав, например, для текста на русском языке всего не более 33 вариантов замены, расшифровать в конце концов такое послание. Задача взломщика упрощается, если любая буква открытого текста перемещается на одно и то же число позиций в алфавите.
Помимо этого, взлом шифра Цезаря облегчается тем, что часто употребляемые в зашифрованном сообщении комбинации букв могут скрывать наиболее часто употребляемые буквенные сочетания. Так, например, для английского языка комбинация букв VWX может означать слово «the» или «and». Аналогичные комбинации букв существуют и в русском языке. После обнаружения таких явных подсказок расшифровщик может попробовать подставлять некоторые другие буквы и заполнить пробелы. В результате расшифровка сообщения станет похожа на разгадывание кроссворда.
Однако задача несанкционированного пользователя значительно усложнится, если сообщение будет зашифровано с помощью более сложных шифров перестановки. К таким шифрам относятся, например, многоалфавитные шифры, такие как шифр Виженера и шифр Гронсфельда.
Французский дипломат Блэйс де Виженер в XVI веке предложил использовать для создания зашифрованных сообщений не один, а несколько алфавитов, размещенных в прямоугольной таблице. Количество алфавитов для каждого языка определяется количеством букв в этом алфавите. Так, например, для русского языка следует использовать 32 или 33 алфавита, а для английского — 26 алфавитов.
При составлении шифровальной таблицы для использования шифра Виженера следует соблюдать определенные правила. Для русского языка в верхней строке, которая не имеет номера, необходимо вписать буквы алфавита от а до я. Этот алфавит будет использоваться для работы с открытым текстом. В ячейки в крайнем левом столбце таблицы следует вписать цифры от 1 до 32, а в каждую пронумерованную строку таблицы — алфавит для шифрования. При этом алфавит в первом ряду начинается с буквы Б, алфавит во втором ряду — с буквы В и так далее до ряда 32, который начинается с буквы А.
В результате шифровальная таблица для русского языка примет следующий вид:
Нетрудно заметить, что в окончательном виде такая таблица представляет собой ряд шифров Цезаря, в которых первый ряд перемешает букву на од ну позицию в алфавите, второй ряд — на две и так далее до 32 ряда, в котором буквы обоих алфавитов совпадают. Эго означает, что разные буквы могут быть зашифрованы с помощью алфавитов, расположенных в разных рядах. Порядок использования отдельных строк и алфавитов определяется паролем или ключевым словом, которое должен выбрать пользователь.
Таким ключом может быть, например, слово РОДИНА. В качестве примера с помощью этого ключа зашифруем шифром Виженера открытый текст СЕКРЕТНОЕ СООБЩЕНИЕ.
Сначала на листе бумаги следует записать открытый текст без пробелов:
СЕКРЕТНОЕСООБЩЕНИЕ
Затем строго над буквами этого текста записываются буквы пароля. Для облегчения работы можно составить вот такую вспомогательную таблицу:
После этого в соответствии с правилами шифрования, применяемыми при использовании шифра Виженера, первая буква должна шифроваться в том ряду или в той строке приведенной ранее шифровальной таблицы, которая начинается с буквы Р. Для нашего случая это строка 16.
В верхней строке шифровальной таблицы мы должны найти букву, соответствующую первой букве нашего сообщения, то есть букву С.
В клетке, находящейся на пересечении столбца, начинающегося с этой буквы, и шестнадцатой строки мы найдем первую букву шифрованного сообщения. В нашем случае это будет буква Б.
Вторая буква открытого текста должна шифроваться в той строке, которая начинается с буквы О. Это строка 14. На пересечении столбца Е и строки 14 находится клеточка с буквой У.
Третья буква открытого текста должна шифроваться в той строке, которая начинается с буквы Д Эго строка 4 На пересечении столбца К и строки 4 находится клеточка с буквой О.
Аналогичным образом должны быть зашифрованы все буквы открытого текста. По окончании шифрования открытый текст СЕКРЕТНОЕ СООБЩЕНИЕ будет преобразован в криптограмму, которая имеет следующий вид:
БУОШТТЭЬЙ ЩЫОСЗЙХХЕ
Для большей скрытности этот текст можно произвольно разделить на группы букв:
БУ ОШТ ТЭЬЙ ЩЫ ОСЗЙ ХХЕ
Расшифровка такого текста производится в обратном порядке. После получения шифрованного сообщения необходимо строго над буквами криптограммы записать буквы пароля, если он, конечно, известен получателю.
Для облегчения работы можно составить вот такую вспомогательную таблицу:
Теперь для определения первой буквы открытого текста надо в строке, начинающейся на букву Р (первая буква пароля), найти клеточку с буквой Б (первая буква шифрованного текста). После этого определяется буква, с которой начинается открытый текст. Эго буква, с которой начинается данный столбец.
В рассматриваемом примере столбец таблицы, в шестнадцатой строке которого находится буква Б, начинается с буквы С. Это и есть первая буква открытого текста.
Для определения второй буквы открытого текста необходимо в строке, начинающейся на букву О (вторая буква пароля), найти клеточку с буквой У (вторая буква шифрованного текста).
Первая буква столбца, на пересечении которого с 14-й строкой находится буква У, будет второй буквой открытого текста. В нашей таблице это буква Е
Таким же образом осуществляется замена всех букв криптограммы до окончательной расшифровки всего текста В рассматриваемом примере в результате преобразования вновь получится первоначальный открытый текст СЕКРЕТНОЕ СООБЩЕНИЕ Наблюдательный читатель заметит, что при работе с шифром Виженера используются не все строки таблицы, а только те из них, которые начинаются с букв, входящих в состав ключевого слова или пароля. Поэтому при желании можно воспользоваться упрощенным вариантом шифровальной таблицы с ограниченным числом строк Так например, для пароля РОДИНА упрощенная шифровальная таблица будет иметь следующий вид:
Полную шифровальную таблицу можно использовать при шифровании с любым паролем.