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