Смайли снимает с правой ноги ботинок, поднимает стельку над подошвой и извлекает из тайника сложенный листок бумаги, который он кладет перед собой на стол и аккуратно расправляет. На листке бумаги записана такая последовательность цифр:
1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7 9 5 0 2 8 8…
Ниже этой строки Смайли цифру за цифрой вписывает свое донесение:
Теперь Смайли складывает написанные друг под другом цифры, но не обычным способом, а «по модулю десять». Делается это так: записывается лишь число единиц полученной суммы; если сумма превышает десять, то единицу просто отбрасывают. Например, результат сложения 9 и 5 записывают в виде 4, то есть число единиц суммы 14. Под конец лист бумаги выглядит так:
Нижняя последовательность, укороченная до длины послания, то есть
1 4 8 5 9 9 6 5 0,
и есть зашифрованное донесение. Его Смайли по радио передает в Цирк, после чего сжигает листок бумаги, так как никогда больше не будет использовать его для шифрования донесений{18}. В подкладку его пальто зашит еще один лист бумаги с другой последовательностью цифр.
Тоби Эстерхази в лондонской штаб-квартире Цирка уже сидит у радиоприемника и ждет донесения Смайли. У него есть лист бумаги с такой последовательностью цифр:
9 6 9 5 1 8 4 5 7 5 2 1 3 1 7 8 7 2 6 4 8 4 6 7 7 2 7 8 3 1 5 0 8 2 2…
Почему именно такая последовательность? Если мы запишем под этой последовательностью цифр ту, которую Смайли хранил в подошве своего ботинка, то сразу угадаем ответ:
1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7 9 5 0 2 8 8…
9 6 9 5 1 8 4 5 7 5 2 1 3 1 7 8 7 2 6 4 8 4 6 7 7 2 7 8 3 1 5 0 8 2 2…
Каждая цифра нижней последовательности при сложении с соответствующей верхней цифрой по модулю десять дает в результате ноль. Если последовательность из подошвы ботинка Смайли — это та последовательность, которую он применил для шифрования, то последовательность цифр из письменного стола Тоби Эстерхази — это та последовательность, с помощью которой Эстерхази намерен расшифровать донесение, присланное Смайли. Для этого Тоби старательно записывает присланный Смайли шифр под последовательностью своих цифр.
и складывает опять-таки по модулю десять нижних цифр с верхними, как это делал Смайли за железным занавесом:
Очевидно, что если нижнюю последовательность цифр сократить до длины донесения Смайли, то мы получим его в расшифрованном виде — 0 0 7 0 0 7 0 0 7.
Случайность — залог надежности
Альфа и омега успешного шифрования по способу одноразового блокнота заключается в том, что в последовательности цифр
1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7 9 5 0 2 8 8…,
записанной на клочке бумаги, спрятанной в подошве ботинка Смайли, нет никакой закономерности. Цифры следуют друг за другом совершенно случайным образом. Эта последовательность эквивалентна шуму, который мы слышим из динамика радиоприемника, когда он не настроен на волну определенной радиостанции. Осмысленное донесение Смайли начальству Цирка теряется в этом белом шуме только благодаря тому, что из значимого числа — а значимое число и есть донесение — путем сложения по модулю десять осмысленного числа с числовой последовательностью, записанной на листке Джорджа Смайли, получается лишенная какой-либо закономерности цифровая последовательность.
Очевидно поэтому, что агенты Карлы едва ли смогут что-то сделать с перехваченным сообщением
1 4 8 5 9 9 6 5 0,
ибо как они смогут даже приступить к дешифровке? Цифры следуют друг за другом в таком же случайном порядке, как и цифры из листка, извлеченного из подошвы ботинка. Естественно, Карла может приказать своим подчиненным написать над этой последовательностью все возможные последовательности чисел, а затем сложить цифры друг с другом по модулю десять — в надежде, что в каком-нибудь результате проступит какая-то закономерная последовательность, которая и позволит расшифровать послание Смайли. Но затея эта абсолютно безнадежна и бесперспективна, ибо даже если бы все граждане Советского Союза, надрываясь из последних сил, стали бы выполнять этот безумный приказ Карлы, то и они не смогли бы перебрать все возможные варианты, ибо число возможных последовательностей практически бесконечно.
Но даже если бы удалось выявить какую-то закономерность, то и это ничего не дало бы Карле.
Вообразим, что один из подчиненных Карлы, обреченный на безнадежную расшифровку послания Смайли, внезапно вскакивает с места и бежит в кабинет Карлы, чтобы показать ему результат — 3 3 3 3 3 3 3 3 3, полученный из зашифрованного сообщения. Оказалось, что существует случайная последовательность цифр, при использовании которой донесение 3 3 3 3 3 3 3 3 3 кодируется в перехваченную последовательность. Однако, когда шифровальщик врывается в скудно обставленный и насквозь прокуренный кабинет Карлы, он видит там дюжину своих коллег, которые тоже хотят показать Карле полученные ими результаты. У каждого из шифровальщиков на руках последовательность, которая с равной вероятностью может быть закодированным донесением Смайли. Однако у Карлы нет исходной точки, опираясь на которую он мог бы решить, какой из результатов верен. Можно смело заключать пари, что среди полученных результатов верного-то как раз и нет.
Если известна последовательность цифр, в которой они располагаются случайным образом, то это знание позволяет закодировать донесение по методу одноразового блокнота шифром, который абсолютно невозможно «расколоть». Во всяком случае, если донесение было одно. Если же надо зашифровать несколько донесений, то для каждого из них надо составлять новую последовательность цифр, в которой они появляются друг за другом в абсолютно случайном порядке.
Но как получают такие последовательности цифр? Можно подумать, что нет ничего проще: садишься за клавиатуру компьютера и хаотично нажимаешь цифровые клавиши. Но такая методика ненадежна, и полагаться на нее нельзя. Нельзя, даже если на клавиши будут нажимать индейцы племени хопи, которые представляют совершенно чуждую нам культуру, не знают наших цифр и будут совершенно наугад нажимать на клавиши с непонятными символами. Эта методика будет ненадежна и в том случае, если стереть с клавиш символы цифр, убрать экран монитора и человек действительно вслепую будет ударять по клавишам. Не будет такой метод надежным, даже если за клавиатуру посадить не человека, а животное. Собственно, не важно, как конкретно будет исполнено это действо, — если нажимать на клавиши достаточно долго, то в последовательности чисел (или иных символов) неизбежно появится закономерность. Закономерность же — это злейший враг случайности.
На ум сразу приходит мысль — позаимствовать какой-нибудь случайный процесс у природы. Например, можно воспользоваться небольшими колебаниями напряжения, которые неизбежно возникают в электрических цепях. Или, например, распадом радиоактивных веществ, ибо квантовая теория учит, что такой распад непредсказуем и в принципе является случайным процессом.
Таким образом, квантовая механика сулит по меньшей мере теоретическую возможность кодирования, которое невозможно расшифровать. Однако, как говорил Гёте: «Теории — это обыкновенно результаты чрезмерной поспешности нетерпеливого рассудка, который хотел бы избавиться от явлений и подсовывает поэтому на их место образы, понятия, часто даже одни слова»(13). Рожденные в головах блестящие теории сильно отличаются от их воплощения на неподатливом материале.
Математика более надежна, нежели природа.
Нормальные числа
Если разделить на карманном калькуляторе 22 на 7, то на восьмиразрядном дисплее появится следующий результат:
22 ÷ 7 = 3,1428571.
Если воспользоваться более мощным прибором с 16-разрядным дисплеем, то получится:
22 ÷ 7 = 3,142857142857143.
Это наводит на предположение о том, что цифровая последовательность после числа 3 и запятой, а именно
1 4 2 8 5 7 1 4 2 8 5 7 1 4 2 8 5 7 1 4 2 8 5 7 1 4 2 8 5 7 1 4 2 8 5 7 1 4 2 8 5 7…
представляет собой бесконечную последовательность. Следовательно, математики уже путем простого арифметического действия, деления, могут производить бесконечные цифровые последовательности. Правда, данная последовательность не годится для шифрования по методу одноразового блокнота. В этой последовательности с первого взгляда прослеживается закономерность, уничтожающая всякую случайность.
Вероятно, предположит проницательный читатель, все дело в том, что для деления были взяты слишком малые числа, — и будет прав. Если, например, разделить 355 на 113, то, проявив терпение, можно получить следующее число:
355 ÷ 113 = 3,141 592 920 353 982 300 884 955 752 212 389 380 530 973 451 327 433 628 318 584 070 796 460 176 991 150 442 477 876 106 194 690 265 486 725 663 716 814 159 292 035 398…
Эта последовательность выглядит абсолютно случайной, но только на первый взгляд. Если присмотреться внимательно, то можно заметить, что в последней строке, начиная со 112-го места после запятой, снова появляется последовательность 14 159 292 035 398…, которая уже стоит сразу после запятой. При делении возникновение таких периодичностей неизбежно{19}. Делить придется на огромные, специально приспособленные для десятичной системы числа{20}, для получения периодов длинных настолько, чтобы на практике они не возникали. Однако отыскание подходящих делителей и выполнение самого деления являются очень трудоемкими, если надо получить действительно длинные периоды.