Выбрать главу

При разгадывании вигенеровых шифров, в отличие от моноалфавитных, почти всегда приходится искать ключ, хотя «ключом» к вигенерову шифру обычно является какое-нибудь простое слово, а не целый рандомизированный алфавит. Однако сам шифр намного сложнее, и его невозможно разгадать теми же методами, что и моноалфавитные шифры.

В моноалфавитных используется лишь один шифровочный алфавит. Вот почему их легко разгадать: как только выясняется, какими буквами заменены «е» и «t», понять все прочее становится не сложнее, чем завершить партию игры в «виселицу». В полиалфавитных шифрах, однако, применяются сразу несколько алфавитов. Трудно описать, каким прорывом было предположение Альберти, что можно использовать несколько алфавитов в одной шифровке. Моноалфавитные шифры всегда поддаются разгадке благодаря частотному анализу — даже если не срабатывает метод Шерлока Холмса. Но что, если «исказить» частоты встречаемости букв, сделав так, что одной и той же букве исходника будут соответствовать разные буквы на всем протяжении шифрованного текста? Этот вопрос и задал себе Альберти. И придумал метод, который… ну, гениален, иначе не скажешь. Вы чертите квадрат, состоящий из двадцати шести различных вариантов алфавита — каждый сдвинут на одну букву по отношению к соседним (см. таблицу). Потом выбираете короткое слово-ключ — скажем, RAIN[36] — и пишете его снова и снова поверх текста, который хотите зашифровать, вот так:

Привет (англ.).

Самый трудный из всех (англ.).

Затем вы с помощью букв слова-ключа определяете, какую строчку «квадрата Вигенера» используете, чтобы зашифровать соответствующую букву сообщения. Буква «h» в слове «hello», зашифрованная по строчке «R», превратится в «Y», «Е», зашифрованная по строчке «А», так и будет «Е» (все, что попадает на строчку «А», остается без изменений, поэтому большинство слов-ключей буквы «А» не содержат). «L», зашифрованная по строчке «I», будет «Т». Однако следующая «l» будет шифроваться по строчке «N» и станет «Y». Таким образом, первое слово — «hello» — превратится в «YETYF», что совсем не похоже на моноалфавитную версию слова. Подсказки в виде сдвоенного диграфа больше нет, а «Y» означает две разные буквы.

Более длинное сообщение, приведенное выше, зашифруется так:

KHMURRLRJTWSKHMZRLT

Вам никогда этого не прочесть при помощи частотного анализа или дедукции. Вам нужно знать, что ключом было слово «RAIN». Это единственный способ справиться с вигенеровым шифром. Конечно, ключ иногда получается просто угадать. После нападения на Всемирный Торговый Центр одна фирма потеряла почти всех своих сотрудников. Немногие уцелевшие решили продолжить дела компании, но оказались перед проблемой: все пароли умерли вместе с теми, кто их знал. Тогда оставшиеся служащие сели и принялись копаться во всех аспектах жизни покойных коллег, записывая названия мест, куда те ездили по выходным, имена домашних животных и так далее, пока не угадали все пароли до единого. Эту историю мне рассказал кто-то на работе — его до глубины души тронул корпоративный дух, проявленный этими людьми. А я просто подумала, что это одна из самых жутких историй, какие я только слышала в жизни.

Хм-м… в общем, учитывая тот факт, что едва ли вы знаете слово-ключ к посланию, смысл которого от вас хотят скрыть, вам нужно пойти путем логики и искать в тексте закономерности — они могут подсказать, какое слово было ключом. Большинство шифровок, конечно, чудовищно сложнее любого учебного примера. Однако мы можем начать искать закономерности в нашем:

KHMURRLRJTWSKHMZRLT

В тексте вроде бы дважды повторен один и тот же триграф, из чего можно сделать два разных вывода. Либо это чисто случайный результат процесса шифровки, и тогда нам от него никакого проку, либо — возможно! — одно и то же слово исходника стояло под одними и теми же буквами ключа и поэтому дважды зашифровалось одинаково; если так, нам это колоссально поможет.

После того как Альберти впервые высказал свои идеи, еще добрых лет триста никто не мог понять, как «взламывать» вигенеровы шифры подобным способом. Это сделал Чарлз Бэббидж,[37] гениально-безумный изобретатель Разностного Двигателя — первой вычислительной машины. Все началось с того, что у него состоялся весьма необычный спор с одним чудаком, который считал, что первым придумал полиалфавитные шифры.

— Я изобрел новый, непробиваемый код!

— Ну, вообще-то он не столь уж нов. О нем известно уже…

— Говорят вам: мой код невозможно взломать!