Проходят две недели. Молитвы касательно горнила Пылающей Любви услышаны. Наступает короткое облегчение. Дня на два Рэнди может допустить в свои мысли концепцию Ами Шафто, но только в самой бесстрастной и строгой форме. Время от времени приходит адвокат Алехандро и говорит, что дела не очень хороши. Появились неожиданные препятствия. Все, кого он собирался подкупить, уже подкуплены Кем-то. Рэнди слушает и скучает. Он убежден, что во всем разобрался. Для начала, его упек сюда Ин, а не Дантист, и адвокат Алехандро ломится не в ту дверь.
Енох, когда звонил Рэнди в самолет, сказал, что его старый приятель из АНБ работает на кого-то из клиентов Крипты. Теперь более или менее ясно, что это Ин. Соответственно Ин знает, что «Аретуза» у Рэнди, и считает, что сообщения «Аретузы» содержат координаты Первоисточника. Ин хочет, чтобы Рэнди расшифровал перехваты, тогда он узнает, где копать. Отсюда вся история с ноутбуком. Адвокату Алехандро не вытащить Рэнди из тюрьмы, пока Ин не получит нужную информацию — или не будет думать, что получил. После этого внезапно образуется какая-нибудь юридическая лазейка, и Рэнди преспокойно выпустят на волю.
Рэнди настолько в этом убежден, что досадует на визиты защитника. Хочется все объяснить, чтобы адвокат Алехандро бросил бесполезные трепыхания и перестал являться со все более нудными и безрадостными отчетами. Но тогда Ин, чьи люди наверняка прослушивают встречи адвоката с клиентом, поймет, что Рэнди его раскусил, а это нежелательно. Поэтому Рэнди кивает на встречах с адвокатом, а пересказывая разговор Еноху Рооту, старается выглядеть убитым и недоумевающим — просто для подстраховки.
Сейчас он, концептуально, на том же уровне, на котором был его дед, когда начинал взламывать «Аретузу». То есть у него в голове есть теория, как «Аретуза» работает. Он не знает алгоритма, но знает, к какому семейству тот принадлежит, а это сокращает пространство поиска до куда меньшего, чем прежде, числа измерений. Современному компьютеру такое число вполне по зубам. Рэнди входит в сорокавосьмичасовой программистский запой. Боль в кистях достигла той степени, когда при ударе по клавишам из пальцев практически сыплются искры. Доктор велел ему никогда больше не работать на таких неэргономичных клавиатурах. Зрение тоже садится, приходится инвертировать экранные цвета и работать с белыми буквами на черном фоне, постепенно увеличивая размер шрифта по мере того, как глаза отказываются фокусироваться. Но наконец получается штука, которая вроде бы должна работать; Рэнди запускает ее обрабатывать перехваты «Аретузы» (те лежат в памяти компьютера, но ни разу не выводились на экран) и засыпает. Когда он просыпается, то у компьютера есть для него новость: одно из сообщений, возможно, удалось расшифровать. Вернее, целых три, отправленных четвертого апреля 1945 года и, следовательно, зашифрованных одним и тем же ключевым потоком.
В отличие от живых дешифровщиков компьютер не понимает человеческих языков. Он может выдавать возможные расшифровки с невероятной скоростью, но, получив последовательности
НЕМЕДЛЕННО ПРИШЛИТЕ ПОМОЩЬ
и
XUEBP TOAFF NMQPT
не определит первую как успешную расшифровку, а вторую — как провал. Однако он может посчитать частоту встречаемости букв. Если в английском тексте буква Е стоит чаще всего, за ней идет Т и так далее, велика вероятность, что это и впрямь осмысленное послание, а не случайная белиберда. Используя анализ частоты встречаемости и некоторые более сложные методы проверки, Рэнди составил программу, которая должна неплохо распознавать успешные расшифровки. Она говорит, что сообщения от четвертого апреля 1945 года взломаны. Рэнди боится вывести их на экран — вдруг там та самая информация, которая нужна генералу Ину, — поэтому не может прочесть, несмотря на жгучее любопытство. Однако, применяя команду grep, которая ищет в текстовых файлах желаемую последовательность, он, во всяком случае, убеждается, что слово МАНИЛА встречено дважды.
На основе этих успешных расшифровок Рэнди за несколько дней взламывает «Аретузу». Другими словами, он находит A(x) = K, такую, что для любой даты x может получить K — гамму данного дня. Просто чтобы доказать это, он поручает компьютеру рассчитать К для каждого дня 1944 и 1954 годов и с их помощью раскодировать соответствующие перехваты «Аретузы» (не выводя их на экран), просчитывает частоты встречаемости и убеждается, что все работает.
Теперь он расшифровал все сообщения, но не может их прочесть, не раскрыв содержание генералу Ину. И здесь в игру вступает неявный канал передачи данных.
На жаргоне криптографов неявный канал передачи данных — это такой трюк, при котором секретная информация хитроумно прячется в потоке чего-то другого. Например, вы меняете младшие биты в графическом файле так, чтобы они несли текстовое сообщение. Рэнди почерпнул вдохновение из своей работы в тюрьме. Да, он расшифровывал «Аретузу», то есть возился с огромным количеством файлов и писал бесконечные программы. За последние недели он, вероятно, открыл, создал или отредактировал несколько тысяч файлов. Ни у одного из них нет сверху полоски с именем; ребята, которые его прослушивают, вероятно, давно запутались. Рэнди может открыть файл, напечатав название в окне и нажав «ввод» — так быстро, что вряд ли они успеют уследить. Это дает некоторую свободу маневра. В промежутках между другой работой Рэнди подготовил неявный канал передачи данных: написал несколько программ, не связанных с расшифровкой «Аретузы».
Идея пришла, когда он, перелистывая «Криптономикон», наткнулся на приложение с азбукой Морзе. Рэнди учил морзянку дважды: в бытность бойскаутом и несколько лет назад, когда получал лицензию на любительский радиопередатчик; сейчас освежить ее в памяти — пара пустяков. Такое же плевое дело — написать программку, превращающую клавишу «пробел» в телеграфный ключ, чтобы разговаривать с компьютером, выстукивая большим пальцем точки и тире. Это могло бы вызвать подозрения, если бы Рэнди половину времени не читал файлы в текстовом окне. В UNIX'е страницы перелистываются нажатием клавиши «пробел». Надо только делать это в определенном ритме, что наверняка ускользнет от внимания наблюдателей. Результаты идут в буфер, который не выводится на экран, и записываются в файл с бессмысленным именем. Скажем, притворяясь, будто читает большой раздел «Криптономикона», Рэнди может выстучать: