Шрифт:
Интервал:
Закладка:
Все эти мысли пронеслись у меня в голове вихрем. Я подумал, что не зря я столько времени провёл, расшифровывая папины старые послания, ведь именно эта работа позволила мне сейчас так просто отвергнуть некоторые методы выбора символов для ключей. Ведь наличие всяких закономерностей, которые мне удавалось находить, и позволяло мне расшифровывать тексты. Чем меньше закономерностей использовать, тем труднее будет тому, кто захочет взломать мои секреты. Поэтому лучше всего использовать самые случайные последовательности. Но как их получить?
Как раз Марк закончил рисовать свою таблицу. Он спросил меня:
– Зачем нам нужна такая мощная таблица?
– Всё просто. Видишь, тут по одной ячейке на каждый день года. В каждую ячейку мы напишем ключ для этого дня, и этот ключ будем использовать для шифровки сообщений в этот день. Теперь осталось придумать, как выбрать такие ключи. Они должны быть полностью случайны.
– Почему? Давай сделаем ещё проще. Пусть ключ при помощи какой-нибудь мудрёной формулы создаётся из даты.
– Да ты что! Это будет фиаско. Как только кто-нибудь распознает формулу для создания ключа, мы сразу же потеряем всю секретность.
Марк задумался, а я продолжил:
– Пока я вот здесь занимался расшифровкой старых папиных посланий, я понял, что чем меньше всяких закономерностей в шифре, тем сложнее его взломать. Когда ты расшифровываешь шифровку, то пытаешься зацепиться за малейшие подсказки, которые находишь. А если их нет, то и зацепиться не за что. Поэтому ключи должны быть случайны. Но я не могу придумать, как это сделать.
Марк заметил, что для получения случайных букв надо воспользоваться каким-нибудь случайным процессом. У него в наборе для электротехники есть микросхема, которая генерирует случайные сигналы, и можно было бы воспользоваться ею. Однако я зацепился за фразу «случайный процесс» и стал обдумывать её. В конце концов, можно придумать что-то более простое.
На подоконнике лежали разные монеты, и мой взгляд упёрся в них. Я взял одну и подкинул. Она упала орлом вверх. Я подкинул её ещё раз, и снова орёл. Потом опять, и на этот раз выпала решка. Я сказал Марку:
– А вот и случайный процесс. Мы можем выбирать буквы при помощи монетки.
Марк поинтересовался, как можно при помощи одной монетки выбрать одну из тридцати букв. Тогда я взял лист бумаги и написал в нижней его части в ряд все буквы алфавита, которые использовались в шифровальной машине. Потом я соединил дугой первую букву со второй, третью с четвёртой, пятую с шестой и так далее до конца. Получилось шестнадцать дуг.
Затем я соединил вершину первой дуги с вершиной второй дуги новой дугой, более широкой. И также я поступил с третьей и четвёртой дугой, пятой и шестой и опять до конца, соединив пятнадцатую дугу с шестнадцатой. Получилось восемь более широких дуг. Затем были нарисованы четыре ещё более широкие дуги, попарно соединявшие восемь дуг. И затем две ещё более широкие дуги и, наконец, одна самая широкая дуга. Получился вот такой занятный рисунок:
После того как всё было нарисовано, я пометил каждую дугу на рисунке двумя буквами. Слева от вершины каждая дуга была помечена буквой «О» (которая обозначала орёл монетки), а справа – буквой «Р» (решка). От вершины самой широкой дуги к каждой букве алфавита вёл путь, состоящий из пяти пометок от «ООООО» для буквы «А» до «РРРРР» для буквы «Я».
Теперь для получения случайной буквы можно было кинуть пять раз монетку и пройтись по нарисованной диаграмме, чтобы понять, что за буква выпала. Но для облегчения нашей работы я продолжил рисовать и начертил вот такую таблицу:
Теперь оставалось бросить монетку пять раз, выписать результат и выбрать букву из таблицы. Более того, можно было взять пять монеток и бросать их одновременно, а потом смотреть, что получилось. При этом последовательность выбора монеток не имеет значения, поскольку все они выпадают случайно. Только нельзя группировать результаты выпадения монеток, отбирая сначала орлы, а потом решки, иначе из-за этого будут использованы только буквы «А», «Б», «В», «З», «П» и «Я».
Впрочем, мы сделали ещё проще. Я попросил у деда Трофима монетки достоинством «5 рублей», «2 рубля», «1 рубль», «50 копеек» и «10 копеек». Мы начали их кидать и выписывали выпавшие на них стороны именно в этой последовательности от пяти рублей к десяти копейкам. Выпадало что-то вроде: РОРРО, ОРРРО, ООРОР и так далее, а мы вместо этого записывали каждый в свою таблицу: «ЦОЕ» и далее на каждый день по трёхбуквенному коду.
Эта деятельность по составлению таблицы ключей на каждый день года заняла у нас остаток дня. Разошлись мы только тогда, когда наступил вечер, и на улице стало темно. Марк ушёл к себе, и я тоже залез к себе на второй этаж и уснул.
А на следующий день вечером приехал отец. Я был очень рад и от счастья прыгал и скакал. Они с дедом Трофимом долго беседовали на терраске уже под светом тусклой лампочки, которая привлекала мотыльков, а я сидел в углу и сквозь дремоту слушал, что они обсуждают. Потом мы пошли ко мне в штаб, и он расположился на первом этаже.
На следующий день я начал рассказывать отцу о своих приключениях. Он слушал внимательно, иногда переспрашивал кое-какие подробности. Затем приехал Марк, и я познакомил их друг с другом. Папа внимательно посмотрел на него, а потом спросил, как зовут его отца. Марк рассказал, и папа заявил, что он даже припоминает его. Вроде как они в детстве иногда пересекались в этой деревне, но нельзя сказать, что водили знакомство или занимались совместными предприятиями.
Марк охотно присоединился к моему рассказу, и вместе мы иногда даже разыгрывали сценки, показывая, как всё было на самом деле. Отец улыбался и говорил, что мы молодцы и здорово позанимались. И он рад, что у меня появился товарищ, который также заинтересованно подошёл к этой загадке.
В конце концов, отец внимательно изучил сделанные нами шифровальные машины и подготовленные коды на каждый день в году. Потом он спросил, как мы будем шифровать послания друг другу, скажем, 29 августа. Я ответил, что вот код на этот день: «ОГШ», и все послания будут зашифрованы с его помощью. Отец рассмеялся и сказал, что это будет полный провал, поскольку ничем этот способ шифрования от шифра многоалфавитной замены отличаться не будет – достаточно будет перехватить большое количество сообщений, посланных в один день, и это позволит расшифровать их все после небольшого анализа и подбора кода.