Среди различных кандидатов на такой шифр был поразительно эффективный омофонический шифр замены. Здесь каждая буква заменяется различными подставляемыми символами, причем количество возможных подставляемых символов для какой-либо буквы пропорционально частотности этой буквы. К примеру, частота появления буквы а в английских текстах составляет около 8 процентов, поэтому мы поставим в соответствие этой букве восемь символов. Всякий раз, как в открытом тексте появится буква а, она будет заменена в шифртексте одним из восьми выбираемых случайным образом символов, так что к концу зашифровывания частотность каждого символа в зашифрованном тексте будет составлять примерно 1 процент.
Для сравнения, частотность буквы b составляет всего 2 процента, поэтому этой букве будут соответствовать только два символа. Каждый раз, как в открытом тексте появляется буква b, для ее замены будет выбираться один из двух символов, и к концу зашифровывания частотность каждого символа в зашифрованном тексте также будет составлять около 1 процента. Данный способ назначения каждой букве различного количества символов, заменяющих эти буквы, проводится для всего алфавита, пока мы не доберемся до буквы z, которая появляется настолько редко, что для ее замены потребуется всего один символ. В примере, приведенном в таблице 5, подставляемыми символами в шифралфавите служат двузначные числа, и для каждой буквы в алфавите открытого текста имеется от одного до двенадцати подставляемых символов в зависимости от распространенности каждой из букв.
Мы можем считать, что все двузначные числа, которые соответствуют букве а открытого текста, фактически представляют собой один и тот же звук в шифртексте, то есть звук, соответствующий букве а. Поэтому в названии этого шифра — омофонический — homos по-гречески означает «тот же самый», a phonos — «звук». Смысл использования нескольких вариантов замены для часто встречающихся букв заключается в том, чтобы уравнять частотность появления символов в шифртексте.
Если мы зашифровали сообщение с помощью шифралфавита из таблицы 5, то частота появления каждого из чисел в тексте будет составлять примерно 1 процент. Если ни один из символов не появляется чаще остальных, то любая возможная атака с использованием частотного анализа окажется безуспешной. Абсолютная стойкость? Не совсем.
Для искусного криптоаналитика в шифртексте по-прежнему содержится множество тончайших нитей, ведущих к разгадке. Как мы видели в главе 1, каждая буква в английском языке имеет свои индивидуальные особенности, определяемые ее связью со всеми другими буквами, и эти черты можно разглядеть, даже если шифрование осуществляется путем омофонической замены. В английском языке самым наглядным примером буквы с ярко выраженной особенностью является буква q, после которой всегда стоит только одна буква u.
Таблица 5 Пример омофонического шифра замены. В верхней строке приведен алфавит открытого текста, строки ниже представляют собой шифралфавит с различными вариантами замены для часто встречающихся букв.
Если бы мы попытались дешифровать шифртекст, то мы могли бы начать с того, что подметили бы, что q является редко встречающейся буквой, и поэтому она, по всей видимости, представлена только одним символом; мы также знаем, что u, которая появляется примерно в 3 процентах, представляется тремя символами. Поэтому если мы найдем символ в шифртексте, за которым всегда следуют три определенных символа, то целесообразно предположить, что первым символом является q, а три остальных представляют собой u. Другие буквы распознать сложнее, но и их также можно определить по тому, как они связаны одна с другой. Хотя омофонический шифр можно взломать, но он гораздо более надежен, чем простой одноалфавитный шифр.