На основе этих успешных расшифровок Рэнди за несколько дней взламывает «Аретузу». Другими словами, он находит А(х) = К, такую, что для любой даты х может получить К – гамму данного дня. Просто чтобы доказать это, он поручает компьютеру рассчитать К для каждого дня 1944 и 1954 годов и с их помощью раскодировать соответствующие перехваты «Аретузы» (не выводя их на экран), просчитывает частоты встречаемости и убеждается, что все работает.
Теперь он расшифровал все сообщения, но не может их прочесть, не раскрыв содержание генералу Ину. И здесь в игру вступает неявный канал передачи данных.
На жаргоне криптографов неявный канал передачи данных – это такой трюк, при котором секретная информация хитроумно прячется в потоке чего-то другого. Например, вы меняете младшие биты в графическом файле так, чтобы они несли текстовое сообщение. Рэнди почерпнул вдохновение из своей работы в тюрьме. Да, он расшифровывал «Аретузу», то есть возился с огромным количеством файлов и писал бесконечные программы. За последние недели он, вероятно, открыл, создал или отредактировал несколько тысяч файлов. Ни у одного из них нет сверху полоски с именем; ребята, которые его прослушивают, вероятно, давно запутались. Рэнди может открыть файл, напечатав название в окне и нажав «ввод» – так быстро, что вряд ли они успеют уследить. Это дает некоторую свободу маневра. В промежутках между другой работой Рэнди подготовил неявный канал передачи данных: написал несколько программ, не связанных с расшифровкой «Аретузы».
Идея пришла, когда он, перелистывая «Криптономикон», наткнулся на приложение с азбукой Морзе. Рэнди учил морзянку дважды: в бытность бойскаутом и несколько лет назад, когда получал лицензию на любительский радиопередатчик; сейчас освежить ее в памяти – пара пустяков. Такое же плевое дело – написать программку, превращающую клавишу «пробел» в телеграфный ключ, чтобы разговаривать с компьютером, выстукивая большим пальцем точки и тире. Это могло бы вызвать подозрения, если бы Рэнди половину времени не читал файлы в текстовом окне. В UNIX’е страницы перелистываются нажатием клавиши «пробел». Надо только делать это в определенном ритме, что наверняка ускользнет от внимания наблюдателей. Результаты идут в буфер, который не выводится на экран, и записываются в файл с бессмысленным именем. Скажем, притворяясь, будто читает большой раздел «Криптономикона», Рэнди может выстучать:
– тире точка точка (пауза) точка тире (пауза) тире точка (пауза) тире точка точка (пауза) тире тире тире (пауза) тире точка тире
– что должно читаться «БАНДОК». Он не хочет открывать результирующий файл на экране, но потом, между двумя загадочными командами, может набрать:
grep ндо (бессмысленное имя файла) > (другое бессмысленное имя файла)
и grep откроет первый файл, проверит, есть ли в нем сочетание «ндо», и занесет результат во второй файл, который Рэнди сможет посмотреть позже. Он может также ввести «grep бан» и «grep док», и в результате всех этих grep’ов убедиться, что и впрямь записал в файл слово «БАНДОК». Таким же образом он может ввести «КООРДИНАТЫ» в другой файл, «ШИРОТА» в третий и различные цифры в четвертый, пятый и так далее, а потом с помощью команды «cat» медленно объединять однословные файлы в более длинные. Терпение требуется такое же идиотское, как на то, чтобы вырыть подземный ход чайной ложкой или перепилить решетку пилочкой для ногтей.
Примерно через месяц пребывания в тюрьме он может вывести на экран окно со следующим сообщением:
КООРДИНАТЫ ОСНОВНЫХ ХРАНИЛИЩ
УЧАСТОК БАНДОК: СОРОК ДВА ГРАДУСА ТРИДЦАТЬ ДВЕ МИНУТЫ… СЕВЕРНОЙ ШИРОТЫ, НОЛЬ ДВАДЦАТЬ ГРАДУСОВ ПЯТЬДЕСЯТ ШЕСТЬ МИНУТ… ВОСТОЧНОЙ ДОЛГОТЫ
УЧАСТОК МАКАТИ: (и т. д.)
УЧАСТОК ЭЛЬДОРАДО: (и т. д.)
Все это – полная лажа, которую он только что сочинил. Координаты участка «Макати» на самом деле относятся к шикарному отелю, стоящему на перекрестке, где прежде была японская военная база. Цифры сохранились в компьютере с тех пор, как Рэнди ходил по Маниле с джи-пи-эской, собирая данные для эпифитовских антенн. Координаты участка «Эльдорадо» – местоположение золотых слитков, которые они с Дугом Шафто ездили смотреть, плюс небольшая погрешность. А для участка «Бандок» он вывел настоящие координаты Голгофы с некоторой случайной погрешностью, благодаря которой генерал Ин выкопает глубокую яму примерно в двадцати километрах от нужного места.
Как Рэнди узнал про Голгофу и откуда ему известны настоящие координаты? Все это сообщил ему компьютер точками и тире. На компьютерах есть светодиоды, вообще-то не очень нужные: один показывает, что включен NUM LOCK, другой – что CAPS LOCK, а зачем нужен третий, Рэнди даже не помнит. Исключительно из убежденности, что пользователь должен контролировать все, кто-то когда-то написал библиотечную программу под названием XLEDS, которая позволяет включать и выключать их по собственному желанию. Весь месяц Рэнди урывками писал программку, которая с помощью XLEDS выводит текстовый файл морзянкой, включая и выключая светодиод. Покуда по экрану для отвода глаз ползла всякая муть, Рэнди, сгорбившись над неявным каналом передачи данных – мигающим светодиодом, читал расшифровки «Аретузы». Одна из них гласила:
КОДОВОЕ НАЗВАНИЕ ОСНОВНОГО ХРАНИЛИЩА ГОЛГОФА. КООРДИНАТЫ УСТЬЯ ОСНОВНОЙ ШТОЛЬНИ (и т. д.)
Подвал
В данный исторический момент (апрель 1945 года) людей, которые сидят и выполняют арифметические действия, принято называть вычислителями. Уотерхауз только что нашел целую комнату мертвых вычислителей. Любой вменяемый человек (кроме Уотерхауза и некоторых его старых друзей по Блетчли-парку вроде Алана Тьюринга) взглянул бы на этих вычислителей и заключил, что здесь была бухгалтерия и каждый раб самостоятельно щелкал на счетах. Уотерхауз не вправе отбросить это предположение, поскольку оно очевидно. Однако с самого начала у него возникла другая гипотеза, куда более интересная и необычная: что рабы коллективно действовали как шестеренки в большой вычислительной машине и каждый выполнял лишь небольшую долю общей работы – получал числа от другого вычислителя, производил над ними какие-то арифметические действия и передавал результат следующему.
Центральное бюро смогло установить личность нескольких мертвых рабов. Они оказались уроженцами Сайгона, Сингапура, Манилы и Явы, но имели то общее, что все были этническими китайцами и лавочниками по профессии. Очевидно, японцы собрали опытных счетоводов со всей зоны Совместного Процветания.
Лоуренс Уотерхауз отыскивает на развалинах Манилы собственного вычислителя, мистера Гу, чей маленький экспортно-импортный бизнес совсем захирел в войну (трудно торговать, когда каждый корабль, вышедший в море или подходящий к порту, топят американцы). Уотерхауз показывает мистеру Гу фотографии счётов, оставшихся после мертвых вычислителей. Мистер Гу объясняет, какие числа зашифрованы положением костяшек, и два дня обучает его основным навыкам работы на счётах. Главное, что выносит Уотерхауз из краткого курса, – не столько умение щелкать костяшками, сколько понимание, с какой удивительной скоростью и точностью вычислитель вроде мистера Гу способен производить арифметические действия.
Теперь Уотерхауз свел задачу к чисто математическим данным. Половина данных у него в голове, вторая половина разложена на столе – черновики, оставшиеся от вычислителей. Сопоставить числа на листках с числами на счётах и получить моментальный снимок вычислений, шедших в комнате на момент апокалипсиса, не так трудно, во всяком случае, по меркам военного времени, когда, например, доставить на отдаленный остров несколько тысяч людей, тонны снаряжения и ценою лишь в несколько десятков жизней отбить его у вооруженных до зубов озверелых японцев-смертников считается легкой задачей.
Далее возможно (хотя и не совсем просто) перейти к обобщению и определить алгоритм, по которому получились числа на счётах. Уотерхауз узнает почерк отдельных вычислителей и устанавливает, как путешествовали листки. Рядом с некоторыми рабами лежали логарифмические таблицы – это важная подсказка. В итоге он может нарисовать схему, на которой вычислители отмечены цифрами, а множество пересекающихся стрелок показывает, как двигались листки. Теперь он может представить коллективные вычисления в целом и восстановить, что считали в бункере.
Поначалу это обрывочные намеки, потом что-то щелкает в голове у Лоуренса Уотерхауза и возникает подсознательное чувство, что решение близко. Он работает двадцать четыре часа кряду, получает множество подтверждений и ни одного опровержения гипотезы, что эти расчеты – вариант дзета-функции. Спит часов шесть, встает и работает еще тридцать. Теперь он уже точно определил, что это дзета-функция, вычислил некоторые ее коэффициенты и члены. Все почти готово. Он спит двенадцать часов, выходит погулять по Маниле, чтобы проветрить голову, возвращается и вкалывает еще полтора суток без перерыва. Это самое упоительное, когда большие куски головоломки, мучительно воссозданные по фрагментам, внезапно начинают складываться, и проступает общая картина.
Итоговое уравнение записывается в одну строчку. Один его вид пробуждает ностальгию: очень похожие они писали в Принстоне с Аланом и Руди.
Еще один перерыв на сон, и Уотерхауз готов к заключительному рывку.
Заключительный рывок таков: он идет в подвал некоего здания в Маниле. Теперь там штаб радиоразведки армии США. Уотерхауз – один из шести людей на планете, у которых есть допуск в это конкретное помещение. Оно занимает чуть больше четверти подвала в здании, где есть кабинеты побольше, а есть и такие, в которых сидят офицеры рангом повыше Уотерхауза. Однако у его комнаты есть несколько отличительных черт:
(1) В любой момент у входа торчат не меньше трех морских пехотинцев с обрезами и прочими вещицами, полезными для уничтожения противника в ближнем бою.
(2) В нее тянется множество силовых кабелей и есть собственный распределительный щит, отдельный от энергосистемы всего здания.