Криптономикон

22
18
20
22
24
26
28
30

— Нет. Шифртекст не лишен закономерностей, — говорит Уотерхауз.

— Н-да? — отзывается Алан, встрепенувшись.

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

— Как в коде Бодо[40], — говорит Алан. Он вновь проявляет сдержанный интерес.

— Поэтому я перевел каждую букву в число от одного до тридцати двух по коду Бодо. У меня получились длинные ряды маленьких чисел. Однако я хотел перевести все числа ряда в одно большое, просто чтобы узнать, есть ли в нем интересные закономерности. Но это проще пареной репы! Если первая буква R, и код Бодо для нее — 01011, а вторая — F, и для нее код — 10111, то я могу просто составить их в десятизначное двоичное число, 0101110111. Потом могу взять код следующей буквы, приставить его сзади и получить пятнадцатизначное число. И так далее. Буквы написаны группами по пять — двадцатипятизначное двоичное число на группу. Шесть групп в строке — сто пятьдесят двоичных разрядов на строку. Двадцать строк на странице, всего три тысячи двоичных цифр. То есть о каждой странице можно думать не как о ряде из шестисот букв, но как о закодированном представлении одного числа, порядка двух в трехтысячной степени, или примерно десяти в девятисотой.

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

— Не знаю, — сознается Уотерхауз. — Просто я интуитивно чувствую, что мы имеем дело с новой схемой шифровки, основанной на чисто математическом алгоритме. Иначе какой смысл переходить на тридцатидвухбуквенный алфавит? Подумай: тридцать две буквы годятся и даже необходимы для телетайпа, поскольку там нужны специальные символы, вроде возврата каретки или перевода строки.

— Ты прав, — говорит Алан, — очень странно, что они используют тридцать две буквы в схеме, которая явно шифруется с помощью карандаша и бумаги.

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

— Тогда ты ничего не добьешься, — говорит Алан. — Одноразовый шифрблокнот взломать нельзя.

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

— Почему? В их шифрблокнотах закономерности?

— Может быть. Только намеки.

— Так почему ты думаешь, что они не случайны?

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

— Так в чем, по-твоему, ее смысл? — Алан явно забавляется.

— Неудобство одноразового шифрблокнота в том, что надо составить два экземпляра и переправить их отправителю и получателю. Положим, ты в Берлине и хочешь послать сообщение кому-то на Дальнем Востоке! На подлодке, которую мы нашли, был груз — золото и много всего другого — из Японии. Представляешь, какая морока для Оси.

— Ага. — До Алана наконец дошло. Однако Уотерхауз все равно заканчивает мысль:

— Предположим, ты нашел математический алгоритм для генерации очень больших случайных чисел — во всяком случае, таких, которые выглядят случайными.

— Псевдослучайных.