Светлый фон

— Вы вроде только что объяснили.

— Потому что наша техника была лучше?

— Разве вы не то же перед этим сказали?

— Но почему наша техника была лучше, Рэнди?

— Думаю, мне слабо ответить. Я недостаточно хорошо знаю этот период.

— Краткий ответ таков: потому что немцы поклонялись Аресу, а мы — Афине.

— Должен ли я понимать, что вы или ваша организация имеете к этому какое-то отношение?

— Ой, Рэнди! Давайте не будем скатываться на теорию заговора.

— Простите. Я устал.

— Я тоже. Спокойной ночи.

И Енох Роот засыпает. В одно мгновение.

Рэнди — нет.

За «Криптономикон»!

 

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

Все было бы гораздо проще, знай Рэнди открытый текст хотя бы части сообщений. Знай он весь открытый текст, надобность в расшифровке отпала бы, превратилась в чисто академическое упражнение. Есть компромисс между этими двумя крайностями — не знать открытого текста вообще или знать его весь. В криптографии это зовется «зацепкой». «Зацепка» — предположение о том, какие слова или фразы может содержать шифртекст. Например, расшифровывая немецкие сообщения времен Второй мировой, можно предположить, что в них есть слова «ХАЙЛЬ ГИТЛЕР» или «ЗИГ ХАЙЛЬ». Можно случайным образом выбрать одиннадцать последовательных букв и сказать: «Предположим, здесь написано ХАЙЛЬ ГИТЛЕР. Что это будет означать для остального текста?».

Рэнди не рассчитывает найти ХАЙЛЬ ГИТЛЕР в сообщениях «Аретузы», но есть другие предсказуемые слова. Он мысленно составляет список зацепок: «МАНИЛА» — наверняка. «УОТЕРХАУЗ» — возможно. Тут в голову ему приходят еще два слова: «ЗОЛОТО» и «СЛИТКИ». Значит, в случае «МАНИЛЫ» можно взять любые последовательные шесть букв, сказать: «Что, если ими зашифровано слово МАНИЛА?» и строить на этом дальнейшую работу. Работай он с перехватом длиною в шесть букв, надо было бы выбирать из одной шестибуквенной цепочки. Семибуквенное сообщение предоставляет две возможности: первые и последние шесть. Для сообщения длиной n букв число вариантов равно (n – 5). В стопятибуквенном сообщении слово МАНИЛА может прятаться ста различными способами, вернее, даже сто одним, поскольку возможно — и даже вполне вероятно, — что слова МАНИЛА там нет. И каждое из этих ста предположений порождает свои варианты толкований основного текста. Какие именно — зависит от той гипотезы, которую Рэнди примет в отношении алгоритма.