Шрифт:
Интервал:
Закладка:
AKATOCETECOHYKABAPEXEPEXEHABEKABOBEXEMOMETEXYBEC
Что с этим делать дальше? Здесь я рекомендую тебе прервать дальнейшее чтение и попробовать самостоятельно найти в этом наборе букв какие-либо закономерности. Попробуй «загрузить» эту последовательность к себе в голову, после чего погоняй её туда-сюда день или два. Если ничего не получится найти, то продолжай чтение. Если получится, то сравни свой результат с тем, что написано дальше.
1. В этой строке на нечётных местах всегда стоит буква, обозначающая гласную, а на чётных — согласную. Другими словами, гласные и согласные идут одна за другой.
2. Различных гласных четыре: A, E, O, Y. Согласных — восемь: B, C, H, K, M, P, T, X. Произведение 4 и 8 даёт 32.
3. Прошлые две недели мы использовали алфавит, содержащий 32 символа.
Не много ли совпадений для такого небольшого кусочка шифрованного текста? Действительно, многовато. Это значит, что их нужно проверить. Ведь криптоаналитик всегда пытается зацепиться за разного рода закономерности. Когда в шифрограмме обнаруживаются закономерности, это значит, что она потенциально поддается взлому. Самый неуязвимый шифр похож на «белый шум» — никаких закономерностей, абсолютный хаос.
Давай попробуем проверить догадку, которая заключается в том, что в представленной шифрограмме за каждый символ секретного текста отвечают сразу гласная и согласная. При этом 32 символа нашего алфавита можно разделить на четыре группы, и каждую группу обозначить гласной. Внутри же групп символы (которых по восьми в группе) обозначаются согласными. Таким образом, чтобы получить код символа, надо взять гласную его группы и согласную самого символа в группе. Предположим, что кодировка была простейшей (если нет, то необходимо применить частотный анализ, используя в качестве символов, частоты которых подсчитываются, пары букв «Гласная + Согласная»). Простейшая кодировка обозначает, что гласные и согласные использовались просто по порядку. В итоге получается такая таблица:
Думаю, тебя не затруднит с её помощью расшифровать то, что было скрыто в том беспорядочном наборе английских слов.
Теперь давай подумаем, как можно усложнить этот способ шифрования так, чтобы потенциальному взломщику было труднее обнаружить и взломать его. На ум приходит несколько идей. Во-первых, надо сделать так, чтобы английский текст был более похож на обычную человеческую речь. Во-вторых, не должно быть такой простейшей закономерности, как та, которую мы обнаружили ранее: чередования гласных и согласных. Предлагаю попробовать избавиться от обоих недостатков.
Проще всего сразу же избавиться от второго нюанса. По крайней мере, это будет не так явно видно, как в рассмотренном нами случае. Почему бы не сделать произвольным порядок букв в коде? Какая разница, как записывать: «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. Чем необычнее текст, тем больше подозрений он вызовет у криптоаналитика, который будет искать скрытую информацию. Поэтому для сокрытия важной информации пользуйся как можно более простыми и обычными текстами.