Вратата на лабораторията на Джон Марис беше отворена, но въпреки това Ашър почука.
— Влез — каза криптологът.
Лабораторията на Марис беше най-чистата и подредената в Базата. Не се забелязваше нито прашинка. С изключение на няколкото наръчника, старателно натрупани на купчина в ъгъла, на бюрото нямаше нищо освен клавиатура и компютър с плосък екран. Нямаше снимки, нито плакати или лични спомени. От друга страна, това беше типично за Марис — стеснителен, сдържан, затворен и потаен за личния си живот и мнението си. Изцяло отдаден на работата си. Идеалните качества за криптолог.
Жалко, че сегашният му проект — кратък и очевидно лесен за разбиване шифър, се оказваше толкова труден и сложен.
Ашър затвори вратата, седна на единствения стол за посетители и каза:
— Получих съобщението ти. Успя ли да разбереш нещо от атаките с груба сила?
Марис поклати глава.
— А с филтрите за хаотични байтове?
— Нищо смислено.
— Разбирам. — Ашър прегърби рамене. Когато бе получил имейла от Марис да се отбие при него при първа възможност, той почувства прилив на надежда, че криптологът е разгадал шифъра. В устата на флегматичния Марис обаче думите „при първа възможност“ всъщност бяха крещяща молба за незабавна консултация.
Марис го погледна, после отмести очи.
— Питах се дали не подхождаме към шифъра от погрешен ъгъл.
Ашър се намръщи.
— В смисъл?
— Снощи четох една книга за живота на Алън Тюринг.
Ашър не се изненада. Марис беше опитен, стремящ се към съвършенство учен и работеше върху втора докторска степен по история на компютрите, а Алън Тюринг беше култова фигура в първите компютърни теории.
— Продължавай.
— Ами… Знаеш ли какво представлява машината на Тюринг?
— Опресни паметта ми, ако обичаш.
— През тридесетте години на двадесети век Алън Тюринг конструира теоретичен, абстрактен компютър, известен като машината на Тюринг. Състои се от хартиена лента с произволна дължина, изпъстрена със символи от някаква крайна азбука. Върху нея минава „глава“, която разчита символите въз основа на таблица. Положението на главата се променя в зависимост от символите, които разчита. Лентата записва или информация, или краен списък от инструкции, кратки програми. В съвременните компютри лентата е паметта, а главата микропроцесорът. Тюринг твърди, че теоретичният компютър може да изчисли всичко. Той е първият.
— Продължавай — повтори Ашър.
— Замислих се за шифъра, който се опитваме да разкодираме. — Марис посочи екрана на компютъра, където светлинните пулсации на маркера излъчваха сигнала — той сякаш им се подиграваше с краткотрайността и загадъчността си.
1111100000101010001101011001110010000101
0001001100010100011010011000010000000000
— Запитах се дали това не е лента на Тюринг — продължи Марис. — И какво ще направят нулите и единиците, ако ги пуснем през машината на Тюринг?
Ашър бавно се наведе напред.
— Мислиш, че тези осемдесет бита са компютърна програма?
— Знам, че звучи налудничаво, сър.
— Съвсем не. — „Не по-налудничаво от факта, че сме тук — помисли си Ашър. — На дъното на морето и копаем“. — Продължавай — каза на глас за трети път.
— Добре. Първо трябваше да разбия редицата нули и единици на отделни команди. Предположих, че първите стойности 00000 и 11111 са указания, които обозначават дължината на всяка инструкция и че всяка дигитална „дума“ е дълга пет бита. Така ми останаха четиринадесет петбитови инструкции. — Марис натисна един клавиш и дългата редица цифри изчезна. На нейно място се появиха серии кратки редове:
10101
00011
01011
00111
00100
00101
00010
01100
01010
00110
10011
00001
00000
00000
Ашър се втренчи в екрана.
— Кратка е за компютърна програма.
— Да. Трябва да е много елементарна компютърна програма. И на машинен език — основният, универсален, дигитален език.
Ашър кимна.
— И после?
— Сутринта съставих кратка програма, която да сравни тези стойности с крайния списък инструкции, написани на стандартния машинен език. Програмата даде всевъзможни инструкции на стойностите, една по една, и после провери дали ще се появи компютърна програма, с която може да работи.
— Какво те кара да мислиш, че подателите на посланието използват същия машинен език за инструкции като нашия?
— На бинарно ниво има някои дигитални инструкции, които са общи за всяко въобразимо компютърно устройство — инкремент, декремент, прескочи, пропусни, ако е нула, и булеан логика. Затова оставих програмата да върви и продължих с другата си работа.
Ашър кимна.
— Преди двадесетина минути програмата завърши проверката.
— И четиринадесетте реда преведоха ли се в някоя компютърна програма?
— Да. В една.
— Сериозно?
— Програма за прост математически израз. Ето я. Марис натисна друг клавиш и на монитора се появиха редици инструкции.
Ашър нетърпеливо се наведе напред.
ЛИНИЯ № | МНЕМОНИКА | ЗАБЕЛЕЖКИ |
---|---|---|
00101 | ADD | /Зареди установена единица /от числото в позиция 13 (десетична дроб) |
00011 | 00011 | |
01011 | CNM | /Сложи обратен знак на числото. |
00111 | PLC | /Въведи полученото число /в позиция 14. |
00110 | 00100 | |
00101 | ADD | /Извади от /числото в позиция 12. |
00010 | 00010 | |
01100 | ISZ | /Инкремент и пропусни, ако е нула. |
01010 | JMP | /Върни програмния контрол /на стъпка 6. |
00110 | 00110 | |
10011 | КРАЙ | /Затвори програмата. |
00001 | /Позиция 12 | |
00000 | /Позиция 13 | |
00000 | /Позиция 14 |
— Какво прави програмата? — попита Ашър.
— Ще забележите, че е написана като серия от повтарящи се изваждания, закодирани в кръг. Така се извършва делението на машинен език — чрез повтарящо се изваждане. Е, поне единият от начините. Може също да използваш десния SHIFT за аритметически действия, но това изисква по-специализирана компютърна система.
— Тогава е деление.
Марис кимна.
Ашър почувства изненада и озадаченост, примесени с внезапно силно вълнение.
— Не се колебай. Кое число се дели?
— Едно.
— Едно. И на какво се дели едно?
Марис облиза устни.
— Ами, проблемът е там, че…