Книга: Из глубины
Назад: 24
Дальше: 26

25

Дверь в лабораторию Джона Мэрриса была открыта, но Ашер все равно постучал.
— Входите, — отозвался криптолог.
У Мэрриса была самая аккуратная лаборатория на станции. Нигде ни пятнышка, ни пылинки. На углу стола лежала только небольшая стопочка инструкций да стояли клавиатура и плоский монитор. Не было ни фотографий, ни плакатов, ни каких-либо других личных вещей. Но, подумал Ашер, для Мэрриса это вообще типично — он застенчив, неохотно говорит о себе или высказывает личное мнение, замкнут. Целиком погружен в работу. Самое лучшее свойство для криптолога.
Жаль, однако, что его настоящая работа — короткий и явно простой код — оказалась такой трудной.
Ашер закрыл за собой дверь и сел в единственное кресло для посетителей.
— Я получил ваше сообщение, — сказал он. — Какие-нибудь результаты лобовой атаки есть?
Мэррис покачал головой.
— Фильтры произвольного доступа?
— Ничего вразумительного.
— Понятно.
Ашер осел в кресле. Получив от Мэрриса сообщение по электронной почте (тот приглашал его зайти, как только появится возможность), он ощутил прилив надежды, решив, что специалист разгадал загадку. Просьба «зайти, как только появится возможность» от флегматичного Мэрриса означала призыв к немедленной встрече.
— Тогда какие новости?
Мэррис посмотрел на него и снова отвел взгляд.
— Я подумал — может, мы подходим к расшифровке не с той стороны?
Ашер нахмурился.
— Объясните.
— Хорошо. Вчера вечером я читал биографию Алана Туринга.
Ашера это нисколько не удивило. Мэррис, действительный член академии, сейчас работал над второй докторской диссертацией — по истории компьютеров, а Алан Туринг был выдающейся фигурой раннего периода развития электронных машин.
— Продолжайте.
— Ну… вы знаете, что такое машина Туринга?
— Лучше будет, если вы мне еще раз напомните.
— В тридцатых годах Алан Туринг создал теоретический компьютер, известный под названием «машина Туринга». Он состоял из ленты — полоски бумаги произвольной длины. На ней были написаны символы некоего алфавита — конечное число. По ленте бежала головка, считывая символы и интерпретируя их в соответствии с таблицей преобразования. Состояние головки менялось в зависимости от сведений, которые она принимала. Сама полоска могла хранить либо данные, либо «переходы» — так он называл небольшие программы. В нынешних компьютерах вместо ленты может быть память, а вместо головки — микропроцессор. Туринг заявлял, что его теоретический компьютер может произвести любой расчет. Он был первым, кто пришел к этому.
— Продолжайте.
— Я стал думать об этом коде, который мы пытаемся взломать.
Мэррис махнул рукой в сторону компьютерного экрана, где был представлен испускаемый артефактом сигнал, чуть ли не нахальный в своей краткости и неразрешимости:
0000011111001010001101011001110010000101
0001001100010100011010011000010000000000
— Я предположил: а вдруг это и есть лента Туринга? — продолжал Мэррис. — Во что бы превратились единицы и нули, если бы мы пропустили их через машину Туринга?
Ашер подался вперед.
— Вы допускаете, что эти восемьдесят бит — компьютерная программа?
— Я знаю, сэр, что звучит это дико…
— Нисколько.
«Ничуть не более дико, чем сам факт нашего присутствия здесь, — подумал Ашер. — Сидим на дне моря, копаем…»
— Продолжайте, пожалуйста, — произнес он вслух.
— Да, конечно. Сначала я должен был разбить эту последовательность единиц и нулей на отдельные команды. Я сделал допущение, что исходные значения, 00000 и 11111, — заполнители, отмечающие длину каждой команды. Значит, получается, что каждое цифровое «слово» имеет длину в пять бит. Таким образом, у меня получилось четырнадцать пятибитовых команд.
Мэррис нажал на клавишу, и длинная строка цифр исчезла, сменившись вертикальным столбцом:
10101
00011
01011
00111
00100
00101
00010
01100
01010
00110
10011
00001
00000
00000
Ашер внимательно смотрел на экран.
— Слишком коротко для компьютерной программы.
— Да. Ясно, что она должна быть очень простой. И на машинном языке — самом основном, универсальном из цифровых языков.
Ашер кивнул.
— И?
— Когда я сегодня утром пришел к себе, я составил небольшую методику, которая сравнила эти значения с перечнем базовых команд машинного языка. Методика соотнесла все возможные команды со значениями, одну за другой, и проверила, не получилось ли связной последовательности.
— А почему вы решили, что они… кто бы они ни были — те, кто оставил это сообщение, используют машинный язык того же типа, что и мы?
— На бинарном уровне, сэр, существуют определенные цифровые команды, которые являются общими для любого мыслимого счетного устройства — увеличение, уменьшение, переход, пропуск, если нуль — булева логика. И вот я запустил программу и занялся другими делами.
Ашер кивнул.
— Минут двадцать тому назад работа закончилась.
— И что, эти четырнадцать линий бинарного кода удалось перевести в какие-нибудь программы?
— Да. В одну.
— Неужели? — заволновался Ашер.
— Это алгоритм для простого математического действия. Вот, смотрите.
Мэррис нажал еще одну клавишу, и на мониторе появилась цепочка команд.
Ашер вгляделся:

 

 

— А что делает программа? — спросил Ашер.
— Вы можете заметить, что она написана как последовательность повторяющихся вычитаний, замкнутых в цикл. Таким же образом производится деление на машинном языке — повторяющимся вычитанием. Ну, это один способ. Еще вы можете делать арифметический сдвиг вправо, но для этого потребуется более специализированная компьютерная система.
— Значит, это задача на деление.
Мэррис кивнул.
Ашер ощутил, что удивление и интерес смешиваются с внезапным радостным возбуждением.
— Не тяните. Какое число они делят?
— Единицу.
— Единицу. И на что ее делят?
— Видите ли, сэр, в этом-то и проблема…
Назад: 24
Дальше: 26