"Встреча" - читать интересную книгу автора (Бабенко Виталий)

14

Перейдя в «Стратопорт», я прошел на свое место 9-В, задернул шторку и сразу занялся компьютером. Вид матрицы на индикаторе нагонял тоску. Передо мной был код, который никак нельзя назвать однозначно декодируемым. Я понятия не имел, каким образом разбить эту последовательность кодовых символов на кодовые слова, да еще так, чтобы разбиение оказалось единственно верным. Но отступать некуда.

Для начала я прогнал матрицу через те криптоаналитические программы, которые мог припомнить: подстановочная программа, перестановочная программа, шифр Цезаря, шифр Тритемиуса…

Маловато. Конечно, у моего компа огромные возможности, но я-то почти полный профан в криптоанализе. Напрягшись, припомнил правила кодирования по Хеммингу, но и тут незадача: откуда мне знать длину кодового слова в той шифровке, что скучно светилась на индикаторе. Я поиграл немного с компом, перебрав длины 3, 4, 5, 6, 7, 8, и понял, что зашел в тупик.

Надо мной замаячил призрак Клода Шеннона, отца теории информации. Он давным-давно показал, как можно построить криптограмму, которая не поддается расшифровке, если, конечно, не известен способ ее составления. И все же я продолжал игру. Наверное, во всей последующей истории главную роль сыграло именно то, что я — полный профан в криптоанализе. Ну и еще уязвленное самолюбие: я не мог себе простить, что я не знаю, с какого конца подобраться к криптограмме. И решил брать ее в лоб. А мой дилетантизм побудил меня задуматься над формой матрицы.

До сих пор я свято полагал, что матрица кода должна быть строго квадратной, — не иначе как отголоски почти забытого университетского курса матричной алгебры. Действительно, квадратную матрицу удобно транспонировать, или если хотите проще, то симметрично преобразовать относительно диагонали. Но кто сказал, что в моем случае вообще требуется транспонирование?

Коль скоро передо мной прямоугольная матрица, размышлял я, да еще с хвостиком, это непорядок. Ее надо преобразовать так, чтобы остался квадрат, а хвостик исчез. На верную дорогу я вышел случайно; принципиально же это в корне неверно и могло увести меня неведомо куда.

Я сосчитал число знаков в строке — их было тридцать два — и решил сжать матрицу, объединив знаки по два. То есть разбил текст на кодовые слова с длиной два. Но в двоичном коде двумя знаками можно записать лишь четыре цифры — 0(00), 1(01), 2(10) и 3(11).

Таким образом я перевел получившийся текст в четвертичную систему; теперь он выглядел так:

112231213231111323322312332323123111323122233233132312323123311212311113131323323313233132122231311223122211213131332222313232123321113123213233112313233221111212223323111132123231112231121231113111123323332323131331332311323111113233233311122333222233212321311233233232331222332232331313З213221222232223232222332133232132333123231323333332321122313111
221

Матрица осталась прямоугольной, но она была вытянута уже по вертикали. И вот какая штука: во всей матрице не было ни единого пуля. Я счел это добрым знаком, потому что из полной неразберихи начала проглядывать какая-то система…

Навязчивая идея о квадратной матрице преследовала меня. Недолго думая, я разделил криптограмму на две неравные части: вверху остался квадрат из 256 (16х16) знаков, а внизу — прямоугольная таблица с корявым хвостом.

Уже час я находился на борту «Стратопорта», а решение задачи даже не забрезжило. Но с мертвой точки дело сдвинулось: неверной дорожкой я как-то приближался к цели. Только минут через сорок меня осенило: нижняя часть может оказаться ключом к верхней. А вдруг передо мною редкий код с переменной длиной кодового слова? Тогда указание на то, как варьировать длину, надо искать в самой криптограмме.

Предположим, что длина меняется от 1 до 3 и нижняя часть матрицы — это запись длин, а четвертичный код выбран для того, чтобы затруднить работу дешифровщика: в этой криптограмме и основной текст, и ключ записаны всего тремя цифрами, и не так-то просто распознать, что есть что. К тому же кодовый текст выглядит абсолютно бессмысленным, и отличить префиксы кодовых слов, отделить слова друг от друга на первый взгляд невозможно.

Я попробовал прочитать квадратную матрицу с помощью ключа; его образ наполнился у меня буквальным содержанием — хвостик превратился в «бородку». В ключе первая цифра была 1 — значит, первое кодовое слово состоит из одной цифры — единицы. Вторая цифра ключа — двойка, поэтому второе слово матрицы содержит два знака, то есть 12. И так далее.

В конце концов из квадратной матрицы получилось.

1 12 23 121 323 11113 23 32 23 123 32323 1 23 111 32 3 1222 3 32 331 323 12323 123 31 121 23111 131 3 13 23 32331 323 31 32 122 23131 122 3 122 2 112131 31 3 322 22 31 323 21 23 32 111 3123 21 323 31 123 1323 З2 21 111 212 223 323 111 13 212 323 111 22 311 212 3111 31 111 23 323 3323 23 131 331 332311 323 111 11 32332 3 3 31 12 323 2323 1 3 2 23 12 3

И теперь у меня не осталось никаких сомнений: передо мной типичная! простейшая! примитивнейшая! подстановочная криптограмма. Классика литературы: «Золотой жук» Эдгара По. Такой орешек мой компьютер расколет мгновенно. Я ввел программу частотного анализа и откинулся на спинку кресла. Сейчас я увижу текст.

И текст появился. Передо мной была абракадабра, начинавшаяся строчкой prefabyemenaepebmow…

Через несколько минут, проклиная себя за нечеткое знание американских и британских военных аббревиатур, я разбил текст на слова: Prefab Yemen AE PEB mow…