Неделя 12. Одноразовый блокнот

We use cookies. Read the Privacy and Cookie Policy

Наконец, мы подошли к самой волнующей теме, которой я и хотел бы закончить эту книгу. На последней неделе занятий я познакомлю вас с абсолютно невзламываемым способом шифрования. Тексты, зашифрованные им, невозможно взломать, и это доказано математически. Способ называется «одноразовый блокнот».

Представьте себе шифрограмму, в которой текст зашифрован при помощи банальной многоалфавитной замены (напомню, что мы проходили этот метод на второй неделе и затем вновь вернулись к нему на четвёртой, когда изучали операцию XOR). Ничего сложного, правда? Но что, если длина ключа равна длине скрываемого текста, а сам ключ представляет собой абсолютно случайный набор символов? Как такое можно взломать?

Действительно, если взять абсолютно случайную последовательность символов в качестве ключа, при этом длина ключа будет равна длине шифруемого текста, то после применения операции XOR к двум последовательностям получится такой же абсолютно случайный набор символов, в котором нет никаких закономерностей. Давайте попробуем провести небольшой эксперимент.

Пусть необходимо скрыть слово «КИБЕРНЕТИКА», а в качестве ключа будем использовать последовательность «ЫУДЛДЫЯУПЛИ». Результат применения операции XOR к этим двум строкам такой: «ЦЭЖЙУСШЖШЖЗ». Как может попытаться взломать эту шифрограмму криптоаналитик? Поскольку символов здесь всего 11, он может попытаться перебрать все возможные варианты ключей (хотя это очень много даже для современных вычислительных устройств и полный перебор займёт много времени: 3211 = 36 028 797 018 963 968; и если пробовать миллиард комбинаций в секунду, то вся работа будет выполнена за 36 028 797 секунд, то есть примерно за полтора года). Допустим, у криптоаналитика имеется в распоряжении квантовый компьютер с достаточным количеством кубитов, тогда он сможет попробовать все 3211 вариантов за один раз, но что это даст?

Ничего. Пусть криптоаналитик пробует ключ «ЪУИНЦЪКУПЛИ». Тогда в результате дешифровки получится текст «ЛИНГВИСТИКА». А если криптоаналитик попробует ключ «ЗФДАЪЩЦЕЦНН», то в результате расшифровки получится текст «ЯЗЫКОЗНАНИЕ». Другими словами, после перебора всех возможных ключей длиной в 11 символов получится очень много хаотической белиберды, среди которой встретятся все, абсолютно все слова длиной в 11 букв (а также фрагменты каких-нибудь фраз длиной в 11 символов). И что должен выбрать бедный криптоаналитик? Никаких зацепок, ничего.

Тот, кто шифрует свои сообщения при помощи одноразового блокнота, должен соблюдать два несложных правила:

1. Ключ должен быть абсолютно случайным. Если в нём будут какие-либо регулярности и закономерности, это сразу даст криптоаналитику (у которого в арсенале много инструментов статистического анализа) зацепки, и в конце концов он сможет расшифровать текст.

2. Ключ никогда и ни при каких условиях не должен повторяться дважды. Никогда! Потому метод и называется «одноразовым блокнотом» — каждый ключ применяется только один раз. Если вы примените один и тот же ключ дважды, это будет фиаско, поскольку взломать два текста, зашифрованные одним и тем же ключом — это всё равно, что расшифровать шифр многоалфавитной замены, так как для этого используется банальный частотный анализ. Всё дело в свойстве операции XOR — как только криптоаналитик получит два разных текста, зашифрованных одним и тем же ключом, он тут же сложит их друг с другом, и неизвестный ему ключ самоуничтожится, а дальше — дело техники.

Что же такое «одноразовый блокнот»? Этот метод шифрования был придуман очень давно. Им активно пользовались во время Второй мировой войны для шифровки самых важных сообщений. Способ же шифрования был довольно незамысловатым. В двух экземплярах печатались блокноты, содержащие случайные последовательности букв. Один блокнот выдавался тайному агенту, а второй оставался в штабе. Для шифровки бралась первая страница блокнота, и символы, напечатанные на ней, использовались в качестве ключа. После шифрования страницу вырывали из блокнота и очень скрупулёзно уничтожали (сжигали с тщательным перемешиванием и развеиванием пепла по ветру). Адресат, получивший шифрограмму, брал свою копию одноразового блокнота, расшифровывал послание при помощи текущей первой страницы, вырывал страницу и так же уничтожал её.

Этот метод был настолько надёжен, что криптоаналитики, получавшие послания, которые заведомо были зашифрованы одноразовым блокнотом, даже не пытались их расшифровывать. Впрочем, они складывали их в архив, и не зря, поскольку тайные агенты иногда ленились и шифровали послания при помощи одной и той же страницы. А иногда они не уничтожали использованные страницы, и они тем или иным способом попадали в руки криптоаналитикам. И всё.

Таким образом, вот план работ на эту неделю:

1. Придумать текст, который необходимо зашифровать.

2. Использовать для шифровки одноразовый блокнот, подготовленный с самого начала занятий. Один экземпляр блокнота должен находиться у ребёнка.

3. Вписать шифрограмму в открытый текст очередного письма.

4. Послать письмо.

5. Подготовить для юного криптографа какой-нибудь замечательный подарок в честь окончания базового курса по криптографии и значительного укрепления математических способностей.

6. Вручить подарок вернувшемуся домой ребёнку.

Это будет просто замечательно. В результате выполнения задачи ребёнок сможет на собственном опыте убедиться в абсолютной стойкости описанной системы шифрования.

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ