Среди различных кандидатов на такой шифр был поразительно эффективный омофонический шифр замены. Здесь каждая буква заменяется различными подставляемыми символами, причем количество возможных подставляемых символов для какой-либо буквы пропорционально частотности этой буквы. К примеру, частота появления буквы а в английских текстах составляет около 8 процентов, поэтому мы поставим в соответствие этой букве восемь символов. Всякий раз, как в открытом тексте появится буква а, она будет заменена в шифртексте одним из восьми выбираемых случайным образом символов, так что к концу зашифровывания частотность каждого символа в зашифрованном тексте будет составлять примерно 1 процент.
Для сравнения, частотность буквы b составляет всего 2 процента, поэтому этой букве будут соответствовать только два символа. Каждый раз, как в открытом тексте появляется буква b, для ее замены будет выбираться один из двух символов, и к концу зашифровывания частотность каждого символа в зашифрованном тексте также будет составлять около 1 процента. Данный способ назначения каждой букве различного количества символов, заменяющих эти буквы, проводится для всего алфавита, пока мы не доберемся до буквы z, которая появляется настолько редко, что для ее замены потребуется всего один символ. В примере, приведенном в таблице 5, подставляемыми символами в шифралфавите служат двузначные числа, и для каждой буквы в алфавите открытого текста имеется от одного до двенадцати подставляемых символов в зависимости от распространенности каждой из букв.
Мы можем считать, что все двузначные числа, которые соответствуют букве а открытого текста, фактически представляют собой один и тот же звук в шифртексте, то есть звук, соответствующий букве а. Поэтому в названии этого шифра — омофонический — homos по-гречески означает «тот же самый», a phonos — «звук». Смысл использования нескольких вариантов замены для часто встречающихся букв заключается в том, чтобы уравнять частотность появления символов в шифртексте.
Если мы зашифровали сообщение с помощью шифралфавита из таблицы 5, то частота появления каждого из чисел в тексте будет составлять примерно 1 процент. Если ни один из символов не появляется чаще остальных, то любая возможная атака с использованием частотного анализа окажется безуспешной. Абсолютная стойкость? Не совсем.
Для искусного криптоаналитика в шифртексте по-прежнему содержится множество тончайших нитей, ведущих к разгадке. Как мы видели в главе 1, каждая буква в английском языке имеет свои индивидуальные особенности, определяемые ее связью со всеми другими буквами, и эти черты можно разглядеть, даже если шифрование осуществляется путем омофонической замены. В английском языке самым наглядным примером буквы с ярко выраженной особенностью является буква q, после которой всегда стоит только одна буква u.
Таблица 5 Пример омофонического шифра замены. В верхней строке приведен алфавит открытого текста, строки ниже представляют собой шифралфавит с различными вариантами замены для часто встречающихся букв.
Если бы мы попытались дешифровать шифртекст, то мы могли бы начать с того, что подметили бы, что q является редко встречающейся буквой, и поэтому она, по всей видимости, представлена только одним символом; мы также знаем, что u, которая появляется примерно в 3 процентах, представляется тремя символами. Поэтому если мы найдем символ в шифртексте, за которым всегда следуют три определенных символа, то целесообразно предположить, что первым символом является q, а три остальных представляют собой u. Другие буквы распознать сложнее, но и их также можно определить по тому, как они связаны одна с другой. Хотя омофонический шифр можно взломать, но он гораздо более надежен, чем простой одноалфавитный шифр.
Омофонический шифр, возможно, и выглядит как многоалфавитный, поскольку каждая буква открытого текста может быть зашифрована множеством способов, но тут есть одно принципиальное отличие, и в действительности омофонический шифр является одним из видов одноалфавитного шифра. В таблице омофонов, приведенной выше, буква а может быть представлена восемью числами. Существенно то, что эти восемь чисел являются обозначением только буквы а. Другими словами, буква открытого текста может быть представлена несколькими символами, но каждый символ может представлять только одну букву. В многоалфавитном же шифре буква открытого текста также будет представлена различными символами, но больше всего в замешательство приводит тот факт, что в процессе шифрования эти символы будут представлять собой различные буквы.
Пожалуй, основная причина, почему омофонический шифр считается одноалфавитным, заключается в том, что после того, как шифралфавит был определен, он не меняется на протяжении всего процесса шифрования. То, что в шифралфавите заложено несколько возможных вариантов зашифровывания каждой буквы, несущественно. В то же время криптограф, применяющий многоалфавитный шифр, в процессе шифрования должен постоянно переходить от одного шифралфавита к другому.
Улучшив базовый одноалфавитный шифр различными способами, например, добавляя омофоны, становится возможным надежно зашифровать сообщения, не прибегая к сложностям многоалфавитного шифра. Одним из наиболее ярких примеров усовершенствованного одноалфавитного шифра был «великий шифр»[11] Людовика XIV.
«Великий шифр» применялся для зашифровывания наиболее секретных сообщений короля, скрывая детали его планов, замыслов и политических интриг. В одном из этих сообщений упоминалась одна из наиболее загадочных личностей во французской истории, человек в железной маске, но стойкость «Великого шифра» означала, что сообщение останется нерасшифрованным и непрочитанным в течение двух столетий.
«Великий шифр» был придуман Россиньолями, отцом и сыном, Антуаном и Бонавентуром. Антуан впервые приобрел известность в 1626 году. Ему передали зашифрованное письмо, захваченное у курьера, пробирающегося из осажденного города Реальмон, и к концу дня он дешифровал его; из письма стало ясно, что армия гугенотов, которая удерживала город, находится на грани гибели. Французы, которые до этого не подозревали об отчаянном положении гугенотов, вернули письмо вместе с его расшифровкой. Теперь гугеноты знали, что их противник не отступит, и немедленно сдались. Так победа французов явилась результатом дешифрования.
Могущество криптографии стало очевидным, и Россиньоли получили Высокие должности при дворе. После службы у Людовика XIII они продолжали трудиться криптоаналитиками и при Людовике XIV, на которого их работа произвела такое впечатление, что он предоставил им кабинеты рядом со своими апартаментами с тем, чтобы Россиньоли, и отец и сын, могли активно участвовать в формировании французской дипломатической политики. Данью всеобщего восхищения их умению взламывать шифры явилось то, что слово россиньолъ стало французским жаргонным названием отмычки.
Выдающееся мастерство и накопленный опыт по взламыванию шифров позволило Россиньолям понять, как создать более стойкий шифр, и они придумали так называемый «великий шифр». «Великий шифр» оказался настолько надежен, что сумел противостоять усилиям всех криптоаналитиков той эпохи, пытающихся выведать французские секреты, и даже последующих поколений дешифровальщиков. К сожалению, после смерти отца и сына «великий шифр» перестал применяться, а его подробности были быстро утеряны, что означало, что зашифрованные бумаги во французских архивах больше нельзя было прочесть.
Историки понимали, что бумаги, зашифрованные «великим шифром», могли бы дать уникальную возможность разгадать интриги Франции семнадцатого века, но даже к концу девятнадцатого столетия они по-прежнему не могли дешифровать их. В 1890 году Виктор Гендрон, военный историк, изучавший кампании Людовика XIV, разыскал новую серию писем, зашифрованных «великим шифром». Не сумев разобраться в них, он передал их Этьену Базери, выдающемуся эксперту в шифровальном отделе французской армии. Базери расценил эти письма как вызов и потратил следующие три года в попытках дешифровать их.
Зашифрованные страницы содержали тысячи чисел, но только 587 из них были разными. Стало ясно, что «великий шифр» более сложен, чем обычный шифр замены, поскольку для него требовалось всего лишь 26 различных чисел, по одному на каждую букву. Первоначально Базери полагал, что остальные числа являются омофонами и что некоторые числа представляют собой одну и ту же букву. Проверка этого направления заняла месяцы кропотливого труда, но все оказалось напрасным. «Великий шифр» не был омофоническим шифром.