Думаю, тебя не затруднит с её помощью расшифровать то, что было скрыто в том беспорядочном наборе английских слов.
Теперь давай подумаем, как можно усложнить этот способ шифрования так, чтобы потенциальному взломщику было труднее обнаружить и взломать его. На ум приходит несколько идей. Во-первых, надо сделать так, чтобы английский текст был более похож на обычную человеческую речь. Во-вторых, не должно быть такой простейшей закономерности, как та, которую мы обнаружили ранее: чередования гласных и согласных. Предлагаю попробовать избавиться от обоих недостатков.
Проще всего сразу же избавиться от второго нюанса. По крайней мере, это будет не так явно видно, как в рассмотренном нами случае. Почему бы не сделать произвольным порядок букв в коде? Какая разница, как записывать: «AT» или «TA» — это будет обозначать одно и то же. Главное, что при расшифровке мы отбираем по две буквы и переводим их в символ скрытого текста. Можно было бы и ещё сильнее усложнить эту сторону задачи, но это связано с серьёзными техническими сложностями (слишком много вычислений), поэтому такое усовершенствование я оставляю тебе в качестве самостоятельной работы.
Теперь давай займёмся первой проблемой. Она возникает из-за того, что в шифрограмме встречаются очень неудобные с точки зрения английского языка сочетания букв, для которых надо подбирать слова, а слов с такими сочетаниями либо нет вообще, либо очень мало. Частично эта проблема будет решена уже при разрешении использовать сочетания двух букв в произвольном порядке (предыдущая задача). Но можно пойти дальше.
Если помнишь, на первой неделе мы изучали частотный анализ и узнали о таблице частот встречаемости русских букв в текстах. Как ты понимаешь, такую же таблицу можно составить и для английского языка. Вот она:
И у нас есть частоты встречаемости букв русского алфавита в тексте. Их можно совместить так, чтобы наиболее часто встречающимся русским буквам соответствовали наиболее часто встречающиеся пары английских букв. Для этого надо рассчитать частоты для пар. Это сделать просто — чтобы получить частоту для пары, достаточно перемножить частоты двух букв (честно говоря, это не совсем корректно с точки зрения языка, но для нашей задачи подойдёт). Выбрав только латинские буквы A, B, C, E, H, K, M, O, P, T, X, Y, мы получим следующую таблицу:
Теперь надо расположить двухбуквенные комбинации по убыванию их частоты:
ET EH AT OT AH OH EC EM EP AC OC AM EB OM YT AP OP AB YH OB EK AK OK YC YM YP YB EX YK AX OX YX
Как ты можешь подсчитать, тут ровно 32 пары букв, и теперь мы можем сопоставить их буквам русского алфавита, выстроив по уменьшению частоты. Получается вот такая замечательная таблица (попробуй сначала составить её самостоятельно, а потом сравни):
Давай попробуем зашифровать что-нибудь с помощью этого кода. Так, фраза «ПРИЕДУ ЗАВТРА» в переложении на код будет выглядеть так: «YTACAHATOMAPETOBOTOCECACOT». Теперь, зная, что в двухбуквенных сочетаниях буквы можно менять местами, попробуй подобрать английские слова для сокрытия этой шифрограммы.
Если попытаться сделать это, то может получиться что-то вроде такого:
STYLUS CALLAHAN TROMP ARES TOROID BIT ROW CENSUS CARD CITO
Подобрать этот набор слов было намного-намного проще, чем предыдущий (мне даже практически не пришлось открывать словарь). Выглядит этот набор как список каких-то слов, возможно, кодов. Криптоаналитик будет ломать над ним голову намного дольше, поскольку здесь нет необычностей.
Я рекомендую тебе потренироваться этому методу, и если ты неплохо знаешь английский язык, то попробуй самостоятельно что-нибудь зашифровать и отправить человеку, с которым ты переписываешься по теме криптографии. Посмотрим, как он удивится.
Напоследок — пара советов:
1. Чем больше в системе шифрования закономерностей, тем проще криптоаналитику расшифровать шифрограмму. Поэтому любыми средствами избегай простых закономерностей, которые позволят зацепиться за них и распутать клубок тайны.
2. Чем необычнее текст, тем больше подозрений он вызовет у криптоаналитика, который будет искать скрытую информацию. Поэтому для сокрытия важной информации пользуйся как можно более простыми и обычными текстами.
Вот и всё. До следующей недели.
Неделя 6. Шифрование дырявой матрицей
Теперь давай научимся новому методу шифрования. Он основан не на замене символов, а на их перемешивании. Ведь если перемешать текст, то воссоздать его будет очень сложно. Например, если просто выписать все буквы текста в алфавитном порядке, то расположить их правильно будет очень непросто. Например, что может быть тут зашифровано: АААА ВВВ ДД ЕЕЕ ИИИ Й МММ ННН ОООО П РР С ТТ УУУ Ф Ч Ш Ь ЯЯ? А ведь это просто все буквы первого предложения этого абзаца, упорядоченные по алфавиту.
Но подобные перестановки бессмысленны, поскольку для их расшифровки требуется информация о расстановке символов в правильном порядке, а это практически то же самое, что и запись самой фразы. Так что мы изучим иной способ перестановок. Ключ для них представляет собой квадрат с вырезанными в нём отверстиями. Это настоящий, материальный «ключ», поскольку его можно взять в руки и повертеть. И этот метод шифрования называется «решётка Кардано».
Представь себе квадрат, вырезанный из бумаги. Примерно такой:
Если ты внимательно приглядишься, то увидишь в углах этого квадрата четыре цифры. Ими обозначена последовательность применения этого ключа.
Теперь попробуй сделать ключ своими руками. Возьми лист бумаги в клетку, например, из тетради, и вырежи из него квадрат 12 × 12 клеток. Затем обведи внутри квадрата «границу» шириной в 1 клетку. После этого внутренний квадрат будет размером в 10 10 клеток. Теперь тщательно перенеси на свою заготовку квадратики с рисунка в книге. Затем надо будет очень аккуратно вырезать эти квадратики. Для этого подойдет канцелярский нож или лезвие, но лучше попросить о помощи кого-либо из взрослых.
С этим ключом ты сможешь шифровать и расшифровывать тексты. С ним работают так: положи ключ на лист бумаги так, чтобы в верхнем левом углу стояла цифра «1», после чего обведи края ключа. На листе бумаги появится квадрат. Далее в отверстия в ключе надо вписать по одной букве текст, который хочешь зашифровать (пробелы, кстати, не пиши, их потом без проблем можно будет восстановить). Когда все квадратики будут заполнены, поверни ключ на 90 градусов против часовой стрелки так, чтобы в верхнем левом углу оказалась цифра «2». Если ты тщательно перенёс отверстия с рисунка на свой ключ, то ни одной буквы из написанных тобой видно не будет. Можно продолжать вписывать буквы в отверстия. Проделай это ещё дважды — для цифр «3» и «4». Всего этот ключ позволяет перемешать 100 букв текста.
Как только буквы перемешаны, возьми чистый лист бумаги и выпиши из квадрата 10 × 10 клеток полученные строчки, но уже обычным сплошным текстом во всю длину строки. Соответственно, чтобы расшифровать текст, надо взять строку и записать её в виде квадрата 10 × 10 клеток, после чего воспользоваться ключом для чтения. Несложно, не правда ли?
Джероламо Кардано — итальянский математик, инженер, философ и медик. Придумал много всякой всячины (в его честь названы формулы решения кубического уравнения, карданов подвес, карданный вал и решётки Кардано). Свою решётку Дж. Кардано предложил в 1550 году, и он планировал маскировать тайное сообщение под обычное письмо, а ключ представлял собой таблицу-карточку с вырезанными ячейками.
Давай потренируемся. Пусть необходимо зашифровать такой текст:
«ПОДГОТОВЬ ШЕСТЬ ВЁДЕР МЕДНОГО КУПОРОСА ВМЕСТЕ С ДОКУМЕНТАМИ И ВСЕМ ОСТАЛЬНЫМ НЕОБХОДИМЫМ К НАЧАЛУ СЛЕДУЮЩЕГО МЕСЯЦА».
В этой фразе ровно 100 букв (без пробелов), и мы можем без труда воспользоваться нашим ключом.
Итак, кладём ключ так, чтобы в верхнем левом углу была цифра «1», и начинаем вписывать буквы по порядку. Получается вот что:
Ну и так далее. Надеюсь, что остальные буквы ты сможешь вписать самостоятельно. Главное, забудь о пробелах. Они в данном методе не нужны и даже вредны, поскольку по ним криптоаналитик может попытаться восстановить открытый текст. Всегда помни: чем больше регулярности и закономерностей можно обнаружить в шифрограмме, тем проще её взломать. А поскольку пробел — самый часто встречаемый символ, то он вреден.
В итоге у тебя должна получиться такая матрица размером 10 × 10 букв:
Эту матрицу мы теперь выписываем в строку и получаем:
«ОПКЫОМУДПГИМОИОКТНВАРОСОВ СЕАЧЬМВАОЛШМЕЕСУСТСТСАЛЬЕТ ЛЕВСЬДЁНДДУЫЮМОЕКЩРНУЕМГЕОЕ ОММДЕБНЕНХТООСДЯГИАЦМА».
Согласись, что расшифровать такую перестановку практически невозможно.
Этот метод был придуман ещё в Средневековье и очень часто использовался по двум причинам: во-первых, он очень лёгок в применении, а во-вторых, разгадать зашифрованный текст без ключа практически невозможно.
Методы его расшифровки направлены скорее на добычу ключа, а не на попытки обнаружить какие-либо закономерности в этом хаосе букв. Пытаться переставлять буквы, чтобы найти какой-либо смысл, бесполезно: в процессе будут появляться многочисленные слова и даже небольшие фразы, которые не имеют никакого отношения к первоначально зашифрованному тексту. Можешь попробовать составлять слова из букв шифрограммы — их получится ну просто огромное количество.
Думаю, что на этой неделе ты получишь письмо, где будет такая шифровка. Можешь даже не пытаться расшифровывать её, просто ищи ключ. Когда найдёшь, сможешь прочитать.
После этого рекомендую тебе выполнить такое упражнение:
1. Придумай свой ключ в виде квадратной матрицы с отверстиями. Потренируйся, через некоторое время у тебя будет хорошо получаться.
2. Зашифруй какой-нибудь текст методом, описанным в этой книге на текущей неделе.
3. Отправь шифрограмму тому, кто посылает тебе письма, но ключ не отправляй.
Неделя 7. Древние и экзотические алфавиты
Вот и прошла половина лета и половина наших занятий. А это значит, что пора немного отдохнуть. Так что на этой неделе мы не будем заниматься математикой, а сменим тему и обратимся к истории и языкознанию. Но если ты думаешь, что это неинтересно, то зря. Между прочим, лингвистика (или языкознание) — это строгая наука, которая относится скорее к математической, нежели к гуманитарной области знаний. В лингвистике используется очень много математических методов, а в основе современной лингвистики лежит отрасль математики, которая называется