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