Мы сели на скамейку, и я положил собранную головоломку перед нами. По элементам бежали строки чисел, и мы с Катей переписали их в свои рабочие блокноты. Уже тут я понял, что с этим набором чисел что-то не то. Он был слишком непохож на шифр одноалфавитной замены. Может быть, это многоалфавитная замена?
Тогда папа взял у меня блокнот и перепечатал числа в компьютер. Через пару минут он показал нам гистограмму распределения частот встречающихся чисел, и эта гистограмма состояла из большого числа столбиков примерно одинаковой высоты. Сразу же стало понятно, что если это какой-то шифр, то это совсем не шифр одноалфавитной или многоалфавитной замены, поскольку использовалось очень много чисел — намного больше, чем букв в русском языке. Или это не русский язык? Но всё равно очень много различных чисел. В каком языке так много различных символов? Я смог вспомнить только японский или китайский. Но откуда в тамбовских деревнях позапрошлого века взялись японцы? Конечно, надо проверять все гипотезы. Однако больше всего беспокоило примерно одинаковое количество каждого из используемых чисел.
Между тем папа сказал, что он примерно представляет, что это такое. По его словам, это вполне может оказаться так называемый пропорциональный шифр для русского языка, поскольку гистограммы именно такого вида обычно соответствуют пропорциональным шифрам, которые как раз были очень распространены в русском шифровальном деле до двадцатого века. Мы с Катей чуть ли не в один голос попросили рассказать, что это за шифры такие. И тогда папа начал новое занятие.
— Как я понял, Кирилл рассказал тебе, Екатерина, что простой шифр одноалфавитной замены можно очень легко взломать. Почему это можно сделать?
Катя ответила:
— Потому что количество разных букв в текстах разное.
— Да, примерно так. Но ты очень смутно выразилась. На самом деле потому, что у каждого символа есть определённая частота появления в текстах, и при помощи сравнения частот в шифрограмме со статистически установленными частотами букв шифрограмму можно взломать. Это понятно?
Мы с Катей согласно кивнули. Ну, мне-то это было давно известно, а Катя, надеюсь, поняла мои объяснения. Отец продолжил:
— А теперь давайте сделаем такой финт. Возьмём, скажем, сто чисел от 00 до 99, то есть все двузначные числа. Для каждого символа русского языка, то есть всех букв и пробела, как мы договорились, назначим случайным образом такое количество символов, которое примерно соответствует частоте символа. Например, пробел имеет частоту 14,55 %, так что пятнадцать случайно выбранных чисел из множества от 00 до 99 будут обозначать пробел. Буква «О» имеет частоту 9,96 %, поэтому этой букве будет соответствовать десять случайно выбранных чисел, которые не совпадают с числами для пробела. Екатерина, если буква «Е» встречается в языке с частотой 6,62 %, то сколько случайно выбранных чисел ей будет соответствовать?
— Семь.
— Верно. И так далее — мы выбираем числа в соответствии с округлённым значением частоты. Если для букв в конце алфавита не хватает чисел, то мы берём их у самых часто используемых символов, то есть пробела, букв «О», «Е», «А» и т. д. Если же в конце остались числа, которые не получили в соответствие какую-нибудь букву, то такие числа называются «пустышками». Они тоже используются — для того, чтобы ещё больше запутать того, кто попытается такой шифр взломать.
Мы с Катей внимательно слушали, я даже записывал в свой блокнот. Между тем папа продолжил:
— Теперь представьте, что нужно зашифровать какой-то текст. Мы берём первую букву этого текста, получаем множество соответствующих ей чисел и опять случайно — именно случайно! — выбираем одно из чисел. Это число будет первым символом в шифрограмме. Таким образом шифруются все буквы. Кирилл, что получится в итоге?
Я задумался. Если всё делать так, как разъяснил папа, то получается, что для частых букв будет использоваться больше различных чисел, а для редких букв вообще всегда может использоваться одно и то же число. Но что это значит? Я предположил:
— Может быть, частоты всех символов из шифрограммы будут примерно одинаковы?
— Точно! Абсолютно верно! И потому гистограмма будет выглядеть как столбики примерно одинаковой частоты. Надо учесть, что среди этих столбиков могут попадаться пустышки, которые шифровальщик будет равномерно расставлять в тексте. Это очень затруднит дешифровку. А как производится расшифровка, Екатерина?
Катя нахмурилась и долго размышляла. Потом сказала:
— Каждому числу соответствует одна буква. Значит, надо просто брать число, находить соответствующую ему букву и выписывать. В итоге получится тот текст, который был зашифрован.
Папа даже вскинул руки в восторге и воскликнул:
— Конечно! Если каждой букве соответствует множество чисел, то каждому числу соответствует одна и только одна буква, а потому расшифровка происходит очень просто. А вот дешифровка связана с серьёзными затруднениями. Кирилл, к слову, ты можешь пояснить разницу между расшифровкой и дешифровкой?
— Расшифровка — это когда у нас есть ключ, и мы по нему переводим шифрограмму в открытый текст. А дешифровка — это когда у нас нет ключа, но мы взламываем шифрограмму и находим открытый текст.
Отец улыбнулся и сказал:
— Я смотрю, ты используешь правильную терминологию. Наши занятия пошли впрок. Ты — молодец! Катя, ты тоже умница. Просто мы с Кириллом уже занимались этими вопросами, поэтому он может многое знать из того, что тебе ещё неизвестно.