logo
Коды и шифры

Шифры простой замены

В шифре простой замены обычный алфавит заменяется переставленным ("перетасованным"). Это означает, что каждая буква обычного алфавита заменяется на букву, имеющую тот же порядковый номер в переставленном алфавите.

Вот пример перестановки алфавита: первая строчка - обычный латинский алфавит, вторая - переставленный.

AáBáCáDáEáFáGáHáIáJáKáLáMáNáOáPáQáRáSáTáUáVáWáXáYáZ

YáMáIáHáBáAáWáCáXáVáDáNáOáJáKáUáQáPáRáTáFáEáLáGáZáS

Если использовать шифр простой замены с этим алфавитом шифрования для зашифрования открытого сообщения

COME AT ONCE,

которое мы приводили ранее, то получится шифрованный текст

IKOB YT KJIB.

Попытка дешифровать его как шифр Юлия Цезаря к успеху не приведет.

Допустим, криптоаналитик решил, что перед ним шифр простой замены. Сможет ли он дешифровать его? Он наверняка заметит, что сообщение состоит из трех слов из 4-х, 2-х и 4-х букв соответственно, что буквы 1 и 9, 2 и 7, 4 и 10 совпадают. Таким образом, хотя всего здесь десять букв, различных среди них только семь. Отсюда следует, что любое множество из трех слов на английском, или любом другом языке, которое удовлетворяет этим условиям, является возможным решением. Поэтому, наряду с другими возможностями, решениями в равной степени могут оказаться следующие сообщения:

GIVE TO INGE

HAVE TO ACHE

или

SECT IN EAST.

Ни один из этих текстов не выглядит достаточно правдоподобным, но каждый из них является решением. Это показывает, что короткое сообщение, зашифрованное простой заменой, может быть дешифровано неоднозначно. И снова мы возвращаемся к очевидному вопросу, который уже ставился нами ранее: "Из скольких знаков должно состоять сообщение, зашифрованное таким способом, чтобы решение было единственным?" В случае шифра простой замены нужно, по-видимому, иметь не меньше 50 знаков, чтобы гарантировать единственность решения в большинстве случаев, но дешифрование столь короткого сообщения - это отнюдь не простая задача. Как показывает опыт, чтобы решение было не только единственным, но и его было бы нетрудно получить, необходимо около двухсот знаков текста. К этому вопросу мы еще вернемся позднее.

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

COMEATONCE

IKOBYTKJIB

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

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

COMEXATXONCE

IKOBGYTGKJIB,

поскольку буква X переходит в G в алфавите шифрования, а в исходном сообщении X не встречается.

Криптоаналитик может догадаться, что G обозначает пробел, и после этого найти длины слов. Как мы вскоре убедимся, с текстом большей длины так и произойдет. И хотя, с одной стороны, получателю в данном случае не нужно беспокоиться насчет двусмысленностей в тексте, но, с другой стороны, задача криптоаналитика теперь гораздо легче, чем при первом способе.

Развивая эту мысль, можно добавить в алфавит несколько знаков, чтобы можно было учесть и пробелы, и символы пунктуации, такие как точка и запятая. В этом случае в алфавит шифрованного текста придется добавить новые символы. В качестве таковых подойдут любые неалфавитные знаки. Типичная тройка знаков может выглядеть, например, так: $, % и &. И например, может оказаться, что в 29‑буквенном алфавите шифрованного текста буква D будет представлена знаком &, буква J - знаком $, буква S - знаком %, а пробел, точка и запятая - знаками H, F и V. Числа при этом можно записывать словами, а можно, наоборот (если это предпочтительнее), расширить алфавит и дальше, включив в него также и цифры. Такие дополнительные знаки, может быть, и придают шифрованному тексту "неприступный вид", но на практике стойкость шифра возрастает очень незначительно.

Второе замечание: заметим, что в приведенном примере шифра простой замены две буквы (Q и T) не изменяются. Часто студенты, изучающие криптографию, думают вначале, что этого следует избегать. На самом деле бояться этого не следует, если таких букв всего одна или две. Можно математически точно доказать, что в случайно выбранном алфавите замены с вероятностью около 63% встретится хотя бы одна неизменяемая буква (см. M1). Известно, например, что карточные шулеры делали на этом деньги: если два игрока перетасуют по колоде карт, а затем будут сравнивать свои карты, доставая их по одной из каждой колоды, то с вероятностью около 63% в определенный момент они оба вытянут одинаковые карты, прежде чем колоды закончатся. Шулер, который знал это, предлагал своему противнику игру с равными ставками, причем сам он ставил на то, что карты когда-нибудь совпадут, а его противник - что этого не случится. Шансы в пользу шулера были 63:37. (Может показаться удивительным, что вероятность совпадения составляет 63% как для 26-буквенного алфавита, так и для колоды из 52 карт. На самом деле эти вероятности не совсем одинаковы, но они совпадают по крайней мере в 20 десятичных разрядах.)