«Химия и жизнь». Фантастика и детектив. 1985-1994 - Борис Гедальевич Штерн
Шрифт:
Интервал:
⠀⠀ ⠀⠀ ⠀⠀
⠀⠀ ⠀⠀ ⠀⠀
XIII⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀
⠀⠀ ⠀⠀ ⠀⠀
Через полчаса я летел в челноке. Ближайшие пассажиры никаких подозрительных эмоций у меня не вызвали. Я вытащил из кармана комп и задал программу перевода рентгеновской голограммы в матрицу двоичного кода.
Вообще говоря, задание было намного сложнее. Для начала компьютеру пришлось вычленить из голограммы небольшую часть — микросхему оперативной памяти, поэтому мой прибор думал довольно долго. Прошло девять минут, прежде чем на индикаторе зажегся цифровой текст. Тот самый. Выглядел он так:
Бросив взгляд на индикатор, сразу понял, что работенка предстоит трудная. Интуиция подсказывала, что будут затруднения с этим двоичным кодом, да и сам вид матрицы свидетельствовал о сложности задачи: она была неуместно прямоугольной, да еще с каким-то неприличным хвостиком внизу. Неужели шифровка? По логике вещей, Олаву не нужно было записывать в памяти машины кодированное сообщение: абсолютную секретность обеспечивал скрэмблер, который включался при передаче. Мой компьютер с его необъятной памятью и быстродествием обязан был во всем разобраться и выдать на экран сразу буквенный текст. Но этого не произошло. Значит, сообщение Олава изначально было кодировано. Либо противник знал о возможностях нашего ридара, либо сообщение настолько раскрывало все карты, что для перестраховки Олав принял двойные меры безопасности.
До стыковки со «Стратопортом» оставались минуты. Надо как можно скорее переправить матрицу своим: пусть они тоже поищут решение. Да и мало ли что может со мной случиться.
Я вызвал на экран компа расписание спутников связи над точкой с координатами Галифакса. Проклятье! Спутник был над головой пять минут назад. Придется посылать сигнал вдогонку. Я собрал матрицу в информпакет и поставил передатчик в режим самонаведения.
Чувства облегчения мне это не принесло. Спутник мог уйти слишком далеко — раз. Меня мог экранировать челнок — два. Мог экранировать корпус крейсера — три. Впрочем, иного выхода все равно не было. В надувном шлюзе, по которому переходили из челнока в «Стратопорт», я включил передатчик. Попадет ли мой сигнал в точку? Как бы то ни было, теперь дело чести расшифровать матрицу самому.
Я выключил комп, спрятал его в карман и огляделся. Вроде бы все спокойно. И все же какую-то ошибку я допустил. Скорее всего, еще в челноке, когда изучал матрицу. Чей-то непраздный взгляд мог упасть на индикатор моего компьютера, ведь на пассажирских местах в челноках нет шторок. Впрочем, кто-то мог засечь меня и позже; уже в шлюзе, или раньше, когда я целился из ридара, сгорбившись в тесной будке. Но кто? Ведь на крыше галифаксского аэровокзала, кроме нас с Олавом, не было никого…
⠀⠀ ⠀⠀ ⠀⠀
⠀⠀ ⠀⠀ ⠀⠀
XIV⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀ ⠀⠀
⠀⠀ ⠀⠀ ⠀⠀
Перейдя в «Стратопорт», я прошел на свое место 9-В, задернул шторку и сразу занялся компьютером. Вид матрицы на индикаторе нагонял тоску. Передо мной был код, который никак нельзя назвать однозначно декодируемым. Я понятия не имел, каким образом разбить эту последовательность кодовых символов на кодовые слова, да еще так, чтобы разбиение оказалось единственно верным. Но отступать некуда.
Для начала я прогнал матрицу через те криптоаналитические программы, которые мог припомнить: подстановочная программа, перестановочная программа, шифр Цезаря, шифр Тритемиуса…
Маловато. Конечно, у моего компа огромные возможности, но я-то почти полный профан в криптоанализе. Напрягшись, припомнил правила кодирования по Хеммингу, но и тут незадача: откуда мне знать длину кодового слова в той шифровке, что скучно светилась на индикаторе. Я поиграл немного с компом, перебрав длины 3, 4, 5, 6, 7, 8,— и понял, что зашел в тупик.
Надо мной замаячил призрак Клода Шеннона, отца теории информации. Он давным-давно показал, как можно построить криптограмму, которая не поддается расшифровке, если, конечно, неизвестен способ ее составления. И все же я продолжал игру. Наверное, во всей последующей истории главную роль сыграло именно то, что я — полный профан в криптоанализе. Ну, и еще уязвленное самолюбие: я не мог себе простить, что не знаю, с какого конца подобраться к криптограмме. И решил брать ее в лоб. А мой дилетантизм побудил меня задуматься над формой матрицы.
До сих пор я свято полагал, что матрица кода должна быть строго квадратной, — не иначе как отголоски почти забытого университетского курса матричной алгебры. Действительно, квадратную матрицу удобно транспонировать, или, если хотите проще, то симметрично преобразовать относительно диагонали. Но кто сказал, что в моем случае вообще требуется транспонирование?
Коль скоро передо мной прямоугольная матрица, размышлял я, да еще с хвостиком, значит, это непорядок. Ее надо преобразовать так, чтобы остался квадрат, а хвостик исчез. На верную дорогу я вышел случайно; принципиально же это в корне неверно и могло увести меня неведомо куда.
Я сосчитал число знаков в строке — их было тридцать два — и решил сжать матрицу, объединив знаки по два. То есть разбил текст на кодовые слова с длиной два. Но в двоичном коде двумя знаками можно записать лишь четыре цифры — 0(00), 1 (01), 2(10) и 3(11). Таким образом я перевёл получившийся текст в четвертичную систему; теперь он выглядел так:
Матрица осталась прямоугольной, но она была вытянута уже по вертикали. И вот какая штука: во всей матрице не было ни единого нуля. Я счел это добрым знаком, потому что из полной неразберихи начала проглядывать какая-то система…
Навязчивая идея о квадратной матрице преследовала меня. Недолго думая, я разделил криптограмму на две неравные части: вверху остался квадрат из 256 (16X16) знаков, а внизу — прямоугольная таблица с корявым хвостом.
Уже час я находился на борту «Стратопорта», а решение задачи даже не забрезжило. Но с мертвой точки дело сдвинулось: неверной дорожкой я как-то приближался к цели. Только минут через сорок меня осенило: нижняя часть может оказаться ключом к верхней; А вдруг передо мною редкий код с переменной длиной кодового слова? Тогда указание на то, как варьировать длину, надо искать в самой криптограмме.
Предположим, что длина меняется от 1 до 3 и нижняя часть матрицы — это запись длин, а четвертичный код выбран для того, чтобы затруднить работу дешифровщика: в этой криптограмме и основной текст, и ключ записаны всего тремя цифрами, и
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!