Читать книгу "Математика и криптография. Тайны шифров и логическое мышление - Роман Душкин"
Шрифт:
Интервал:
Закладка:
Использовать такой шифр будет просто. Весь открытый текст разбивается на пары символов. Например, пусть надо зашифровать текст «СЕГОДНЯ Я ДОДЕЛАЮ ЭТО ДЕЛО». Разбиение на пары символов происходит следующим образом: «СЕ-ГО-ДН-Я_-Я_-ДО-ДЕ-ЛА-Ю_-ЭТ-О_-ДЕ-ЛО». Каждой паре символов соответствует один символ замены из твоей таблицы.
Выбирать символ замены надо по строке и столбцу. Первая буква в паре соответствует столбцу, а вторая — строке. Соответственно, в шифрограмме будет в два раза меньше символов, чем в открытом тексте, а разнообразие символов будет больше.
Всего в твоей таблице будет 1024 ячейки, которые надо заполнить. Но подумай, все ли ячейки стоит заполнять. Какие комбинации букв в русском языке отсутствуют? После того как ты сделаешь эту таблицу и потренируешься шифровать свои сообщения с её помощью, рекомендую тебе поразмышлять над тем, как взломать этот шифр. Это не так сложно, как кажется на первый взгляд. Свои идеи можешь присылать мне для проверки и обсуждения на адрес электронной почты: [email protected].
Когда-то давным-давно, после того как я обучил своих одноклассников методу частотного анализа, и для них перестало быть секретом то, как я взламывал их секретные послания, я составил для себя такую таблицу и писал свои секретные сообщения при помощи шифра подстановки для пар символов. Это, конечно же, снова привело к тому, что никто не мог взломать мои шифровки. Более того, никто даже не мог понять, что за шифр я использую. Так-то…
Теперь я предлагаю тебе сделать механическое устройство для очень стойкого шифрования. Это будет практически одноразовый блокнот — если этим устройством пользоваться правильно и никогда не нарушать установленные принципы. Такое устройство для шифрования было создано в Германии между мировыми войнами и известно под кодовым названием «Энигма». Это была довольно компактная для тех времён электромеханическая машина, которая позволяла шифровать сообщения при помощи очень стойкого шифра. И только безалаберность немцев, допускавших ошибки и погрешности при её использовании, а также немного везения позволили полякам и затем англичанам взломать её.
Мы не будем делать полную копию немецкой «Энигмы», поскольку это не слишком-то просто. Я опишу тебе принцип действия и дам чертежи простой бумажной версии. Ты сможешь сделать облегчённую модель, которой будет вполне достаточно для твоих нужд. Но, зная принципы, заложенные в эту машину, ты сможешь создать и более серьёзную модель. Так что давай с ней ознакомимся.
Я не буду рассказывать про то, как устроена немецкая шифровальная машина «Энигма», а лучше в списке литературы дам ссылки на книги, в которых это прекрасно описывается. Вместо этого сразу обратимся к принципам, на которых «Энигма» (и та машина, которую мы сделаем) работает. Вот они:
1. Использование машины представляет собой применение шифра простой одноалфавитной замены.
2. Машина состоит из нескольких роторов, то есть вращающихся дисков, каждый из которых представляет собой шифр одноалфавитной замены.
3. Нюанс заключается в том, что этот шифр меняется для каждой следующей буквы текста.
4. Количество таких различных шифров одноалфавитной замены можно сделать астрономически большим, так что в идеальном случае повторов не будет никогда, а потому это будет равносильно использованию одноразового блокнота.
5. У машины можно выбирать так называемое начальное состояние, которое определяет то, как роторы расположены относительно друг друга.
6. Также у машины есть отражатель, который позволяет сделать так, что шифрование и расшифровка производятся одним и тем же способом.
У настоящих роторных шифровальных машин есть ещё некоторые способы усложнения их шифров, но в нашей «маленькой» версии мы обойдёмся только несколькими роторами и отражателем.
Теперь давай немного изменим правила игры. Всё лето мы в своих шифрограммах использовали пробел. Но ты уже знаешь, что пробел — это плохой для шифрования символ, поскольку он очень часто встречается. Слишком часто. Мы удалим этот символ из наших текстов, тем более что в подавляющем большинстве случаев текст без пробелов можно легко восстановить: тыжеможешьсделатьэто?
Итак, пробела у нас больше нет, но 32 символа в нашем алфавите нужно сохранить, поскольку, как ты помнишь, это круглое число в двоичной системе счисления. Теперь мы разделим буквы «Ъ» и «Ь», так что алфавит будет выглядеть так:
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Ничего нового и удивительного.
Но почему нам надо оставить 32 символа? Всё просто. Буквы мы нанесем на бумажные диски (которые будут аналогами роторов), а это означает, что диски надо будет разделить на столько секторов, сколько используется букв. Разделить диск на 32 сектора очень просто: надо разделить диск пополам, потом каждую половину ещё раз пополам, потом ещё, ещё и ещё раз, то есть всего пять раз. Итого окажется 32 сектора. (Вспомни двоичную систему счисления и то, почему число 32 в ней является круглым!).
Общий вид дисковой машины для шифрования, которую я научу тебя делать, таков:
На первый взгляд — это какое-то хаотичное переплетение непонятных линий. Но если ты немного присмотришься, то увидишь четыре бумажных диска, лежащие друг на друге, и все они находятся на подложке. Каждый диск разбит ровно на 32 сектора, и в каждом секторе написано по букве нашего нового алфавита. На изображении диски повернуты так, чтобы буквы в секторах на всех дисках находились ровно напротив друг друга. Жирные чёрные линии на рисунке показывают так называемую проводку. Это провода, идущие от буквы к букве через все диски. Наконец, лист, на котором лежат диски, представляет собой отражатель. Если ты приглядишься к нему, то поймёшь, почему он так называется. Всё просто: на отражателе все провода выходят из одной буквы, а входят в другую, то есть как бы отражаются.
Как шифровать при помощи этой машины? Алгоритм несложный. Например, тебе надо зашифровать букву «А». Ты ведёшь взглядом по линии, выходящей от буквы «А» на самом верхнем диске. На втором диске линия приходит к букве «В», далее на третьем диске к букве «Н» и на четвёртом диске к букве «М». Затем через отражатель провод возвращается к букве «Й» на четвёртом диске, затем идёт к букве «З» на третьем и «Ж» на втором диске, после чего возвращается на первый диск на букву «В». Это и будет шифром для буквы «А». Так можно зашифровать любую букву алфавита.
Как ты понимаешь, это очень простой шифр одноалфавитной замены. Он тем более простой, что является симметричным (за счёт отражателя). То есть если буква «А» шифруется при помощи буквы «В», то буква «В» шифруется при помощи буквы «А». И так с любой парой букв.
Внимание!
Сайт сохраняет куки вашего браузера. Вы сможете в любой момент сделать закладку и продолжить прочтение книги «Математика и криптография. Тайны шифров и логическое мышление - Роман Душкин», после закрытия браузера.