Выбрать главу
1 (mod 27), а именно 14. И действительно:

14∙2 = 28  1.

Итак, мы имеем

x = 14∙(у 3).

Теперь мы можем расшифровать сообщение YSFMG.

Буква Y стоит на позиции 25, ей соответствует расшифрованная буква, стоящая на позиции

14∙(25—3) = 308  11 (mod 27).

Буква, стоящая в алфавите на позиции 11, — это L.

Для буквы S имеем 14∙(19—3) = 224  8 (mod 27), эта позиция соответствует букве I.

Для буквы F имеем 14∙(5–3) = 28  1 (mod 27), что соответствует букве В.

Для буквы М имеем 14∙(12—3) = 126  18 (mod 27), что соответствует букве R.

Для буквы G имеем 14∙(6–3) = 42  15 (mod 27), что соответствует букве О.

Расшифрованное сообщение является испанским словом LIBRO, что означает «книга».

За пределами аффинного шифра

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

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

Если мы снимем какие-либо ограничения относительно порядка букв шифроалфавита, то потенциальное количество ключей резко возрастет. Количество ключей для стандартного алфавита из 26 символов (расположенных в произвольном порядке) составляет 26! = 403291461126605635584000000, то есть более 403 септиллионов ключей. Криптоаналитику, который тратит на проверку одного ключа всего лишь одну секунду, потребуется в миллиард раз больше времени, чем ожидаемое время существования Вселенной, чтобы исчерпать все возможности!

Вот один из примеров такого обобщенного шифра подстановки:

Строка (1) — алфавит открытого сообщения. Строка (2) — шифроалфавит.

Первые шесть букв шифроалфавита дают подсказку к выбранному порядку букв: он соответствует порядку букв на клавиатуре в стандарте QWERTY. Чтобы зашифровать известное высказывание Цезаря VENI VIDI VICI («Пришел, увидел, победил») шифром QWERTY, для каждой буквы алфавита открытого сообщения мы найдем соответствующую в шифроалфавите.

Мы получим следующее зашифрованное послание:

CTFO CORO СОЕО

Существует очень простой способ для генерации почти неисчерпаемого количества легко запоминающихся шифров для шифрования этим методом. Достаточно выбрать любое ключевое слово (это может быть даже фраза), поместить его в начале шифроалфавита и, начиная с последней буквы ключевого слова, завершить ряд буквами стандартного алфавита, следующими в обычном порядке, исключив лишь повторяющиеся буквы. Возьмем в качестве примера ключевую фразу JANUARY CIPHER («январский шифр»). Сначала мы избавимся от пробела и одинаковых букв, получив ключевое слово JNUYCIPHE. В результате наш шифроалфавит будет выглядеть так:

Сообщение VENI VIDI VICI теперь будет зашифровано как ХСМЕ XEYE XEUE. Такая система генерации шифров легко обновляется и почти исключает ошибки со стороны отправителя и получателя. В нашем примере было бы достаточно менять ключевое слово каждый месяц — JANUARY CIPHER (январский шифр), FEBRUARY CIPHER (февральский шифр), MARCH CIPHER (мартовский шифр) и т. д. — то есть после изначального выбора шифра стороны могут обойтись без дополнительных соглашений.

Надежность и простота алгоритма шифра подстановки с использованием ключевых слов сделали его самой распространенной системой шифрования на протяжении многих веков. В прежние времена считалось, что криптографы все-таки взяли верх над криптоаналитиками.

* * *

ШИФРОВАНИЕ СЛОВА БОЖЬЕГО

Средневековые криптоаналитики считали, что в Ветхом Завете тоже использовались шифры, и они не ошиблись. Существует несколько фрагментов из священных текстов, которые зашифрованы с помощью шифра подстановки, называемого атбаш. Этот шифр состоит в замене каждой буквы (n) другой буквой, которая находится в алфавите на таком же расстоянии от конца алфавита, как оригинальная буква — от начала. Например, в латинском алфавите буква А заменяется на Z, буква В — на Y и т. д. В оригинальном Ветхом Завете использовались буквы еврейского алфавита. Так, в книге пророка Иеремии (25:26) слово «Бабель» (Вавилон) зашифровано как «Шешах».

Еврейская Библия начала XVIII в.

Частотный криптоанализ

Коран состоит из 114 глав, каждая из которых соответствует одному из откровений, полученных пророком Мухаммедом. Эти откровения были записаны во время жизни пророка различными его спутниками и позднее собраны воедино по решению первого халифа Абу Бакра. Умар и Усман, второй и третий халифы соответственно, завершили проект. Фрагментарный характер оригинальных писаний привел к рождению области богословия, посвященной точной датировке различных откровений.

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

Рукопись Корана. XIV в.

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

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

До недавнего времени очень мало было известно о новаторской роли Аль-Кинди.

В1987 г. в одном из архивов Стамбула была обнаружена копия его трактата «Манускрипт о дешифровке криптографических сообщений». Он содержит краткое изложение революционного метода:

«Чтобы расшифровать зашифрованное сообщение, если мы знаем, на каком языке оно было написано, надо взять достаточно длинный текст, написанный на том же языке, а затем подсчитать, сколько раз каждая буква встречается в этом отрывке. Назовем наиболее часто встречающуюся букву «первой», вторую по частоте — «второй», и так далее, пока не переберем все буквы этого отрывка. Затем вернемся к криптограмме, которую мы хотим расшифровать, и классифицируем ее символы тем же образом: найдем в криптограмме символ, встречающийся чаще всех, и заменим его на «первую» букву из проанализированного текста, затем перейдем ко второму по частоте символу и заменим его на «вторую» букву, и так далее, пока не переберем все символы, используемые в криптограмме».