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