Следующим шагом было использование слогового письма, когда один символ обозначал слог. Сегодня на Земле только в нескольких языках до сих пор используется этот тип письма (японский язык, большинство языков Индии, и даже в китайском языке «иероглифы» обозначают слоги). Тут может быть два варианта. Первый — в слоговом письме записываются только согласные слова, а гласные либо не записываются вовсе, либо для их обозначения применяются различные модифицирующие значки (диакритики). В основном таким методом пользуются семитские языки, в которых такой тип письма обусловлен также спецификой морфологии и словообразования. Второй вариант — это использование различных знаков для всего многообразия слогов в языке. По этому пути пошёл японский язык и многие другие азиатские языки (в том числе и китайский).
Наконец, вершиной развития письменной речи стало появление алфавитного письма, в котором отдельные знаки обозначали в основном фонемы или аллофоны: как согласные, так и гласные звуки. Этот вид письменности, похоже, впервые был использован в Древней Греции, когда стало понятно, что заимствованное финикийское (слоговое) письмо не слишком подходит для передачи изменяющихся греческих слов, в которых изменения часто затрагивали гласные звуки. Тогда древние греки ввели в свой алфавит специальные знаки для обозначения гласных звуков. Затем из греческого письма развились кириллица и латиница (и ещё несколько других, реже используемых систем письменности), и алфавитное письмо победно зашагало по миру.
Что же нужно будет сделать на этой неделе, чтобы дать ребёнку представление о различных алфавитах? Предлагаю следующий план:
1. Составить текст письма, которое будет отправлено ребёнку.
2. Выбрать три или четыре системы письма из числа слоговых и (или) алфавитных. Предлагаю на выбор: армянское письмо, германские руны, греческое письмо, грузинское письмо, деванагари, еврейское письмо, огамическое письмо, орхоно-енисейское письмо, японское письмо (либо катакана, либо хирагана).
3. Для выбранных систем письменности составить прямые соответствия с буквами русского алфавита. Для тех букв русского алфавита, для которых нет соответствия, необходимо составить буквосочетания таким образом, чтобы можно было сделать однозначное сопоставление (вроде буквосочетаний CH, SH и т. д. в английском языке).
4. Записать при помощи выбранных алфавитных систем составленное письмо и отправить его.
Юному криптоаналитику нужно будет расшифровать полученное сообщение при помощи таблиц соответствия иноязычных символов буквам русской азбуки. Это упражнение поможет ему изучить системы письменности разных народов и культур мира.
Неделя 8. Шифрование на основе редкой книги
Следующий вид шифрования, который мы изучим, основан на использовании на выборе букв из какого-либо текста. Ведь буквы одинаковы во всех текстах, независимо от их смысла, и можно использовать произвольную последовательность символов так, чтобы кодировать и зашифровывать свои тайные послания. Такой метод шифрования достаточно стоек к взлому. А выбранный текст, естественно, становится ключом, который надо хранить в секрете.
Здесь снова идёт речь о двойном канале передачи информации. По секретному каналу происходит обмен ключей (один раз), а затем по открытому каналу пересылаются зашифрованные сообщения. Таким образом, задача в этом случае следующая: секретная передача корреспонденту какой-либо книги и разъяснение метода шифрования.
Итак, представьте себе, что получена шифровка, в которой хотя и довольно большое количество знаков, но ни один «символ» не повторяется. Под словом «символ» здесь имеется в виду некая последовательность цифр, которая обозначает одну букву. Как можно расшифровать последовательность таких символов, если их нельзя подвергнуть частотному анализу и в них практически невозможно найти какой-либо закономерности? Кажется, это просто «белый шум», в котором невозможно отыскать что-то, за что можно зацепиться.
Организовать такую передачу очень несложно. Поговаривают, что этим способом пользовались советские разведчики и агенты, выполнявшие задания за рубежом. И у спецслужб тех государств, против которых велась работа, опускались руки, поскольку расшифровать подобное можно, только если каким-то образом получить ключ. А получить ключ — значит выдать себя, дать понять другой стороне, что ведётся работа по дешифровке. В этом случае уже используются совсем иные методы, и о некоторых из них даже страшно упоминать в такой книге, как эта. Но как только попытка дешифровки стала явной для стороны, которая шифрует свои послания, она тут же меняет ключ, и всё возвращается на исходные позиции.
Тем не менее то, что мы изучим на этой неделе, — простой и надёжный метод шифрования (при условии сохранности ключа). Для занятий необходимо подобрать какую-либо книгу, достаточно редкую, чтобы её было невозможно найти на каждом углу. Пусть книга будет потолще, чтобы хватило надолго. Требуются два экземпляра этой книги, поскольку она будет ключом. Как уже сказано, ключом необходимо обменяться по тайному каналу, так что после обмена у каждой из сторон переписки будет по одному экземпляру книги.
Шифрование производится следующим образом. Каждая буква обозначается тройкой чисел (номер страницы, номер строки, номер буквы). Можно прямо так и записывать в скобках:
(5 17 23) (7 24 6) (3 3 17) (3 14 25) (10 15 18) (8 5 25)
Теперь понятно, почему ни один символ в шифровке не повторится никогда. В любой книге намного-намного больше букв, чем в шифрованном сообщении, которое оперативно передаётся между двумя людьми. Можно выбирать буквы в книге так, чтобы их «координаты» никогда не повторялись. Для этого надо сразу же вычёркивать те буквы, которые были использованы. Так будет обеспечено однократное использование любой буквы из книги, а это станет гарантией того, что шифр не будет взломан. Единственная проблема — книга с вычеркнутыми буквами всегда наводит криптоаналитика на определённые размышления. Если у криптоаналитика появился доступ к книгам, хранящимся у тех, кто ведёт переписку, то тайна через некоторое время тайной быть перестанет.
Соответственно, расшифровка производится таким же образом. При расшифровке тоже надо вычёркивать встретившиеся буквы, чтобы не использовать их при шифровании ответных посланий. В результате получается очень секретный способ передачи информации.
Для занятий на этой неделе необходимо:
1. Подобрать два экземпляра одной достаточно редкой книги. Один оставить у себя, второй отправить ребёнку. Желательно отправить книгу заранее (ещё лучше — в самом начале занятий, но не говорить, для чего эта книга).
2. Составить письмо, которое будет отправлено юному криптографу.
3. В письмо вставить послание, зашифрованное методом, описанным выше.
4. Если у ребёнка возникнут затруднения в расшифровке, то быть готовым ему помочь.
Если ребёнок достаточно проницателен, он сможет и без подсказок понять, для чего он взял с собой книгу, особенно если эта книга не предназначена для летнего чтения.
Неделя 9. Замена целых понятий
Теперь пришло время обучить юного криптографа ещё одному методу сокрытия информации, который в криптографии часто называется «кодированием». В этом варианте специальные коды используются для шифрования отдельных понятий.
Прежде чем углубиться в этот метод подробно, необходимо изучить понятие «знак». По определению знаком называется соглашение о приписывании чему-либо (означающему) какого-либо определённого смысла или значения (означаемого). Например, буквы, которые вы сейчас читаете, являются знаками для обозначения звуков русского языка. А слова, которые состоят из букв, являются знаками для обозначения смысла речи. Цифры — это знаки для обозначения чисел. В математике, в программировании используется огромное количество знаков. Или, к примеру, дорожные знаки обозначают те или иные понятия из области дорожного движения.
Главное в этом определении — слово «соглашение». Знаком будет считаться только то, о чём договорились, по крайней мере, два человека. И эта мысль даёт подсказку к тому методу сокрытия информации, который мы сейчас будем изучать. Ведь можно создать собственную систему знаков, смысл которых не будет понятен непосвящённому. То, что мы изучали на первой неделе, и есть попытка создать такую систему. Но эта попытка была негодной, поскольку в основе создаваемой системы лежали известные закономерности, так что взломать её, оказывается, совсем просто. А если сделать знаковую систему, которая не будет иметь таких откровенных закономерностей? Легко!
Например, молодые люди договариваются, что девушка будет выставлять на подоконник горшок с цветком, когда её родителей нет дома. А молодой человек, возвращаясь вечером из института, высматривает цветок на подоконнике и по его появлению понимает, как можно провести вечер. Это явный знак, смысл которого вполне понятен влюблённой паре. Они договорились о смыслах, которые будут нести наличие и отсутствие цветка, и это стало знаком для них. Посторонние смогут распознать это после длительных наблюдений за их поведением.
Или знаменитый пример, когда кодовое слово «Над всей Испанией безоблачное небо» стало сигналом для начала военного мятежа на всей территории страны. Даже если этот пароль и легенда, то он всё равно показывает, что известные посвящённым кодовые слова могут служить для синхронизации действий, то есть быть знаками.
Самое важное в деле разработки системы кодовых знаков — невозможность догадаться (или хотя бы даже предположить) о значении кода из контекста. Эту ошибку допускают многие начинающие криптографы и кодировщики, которые используют не отвлечённые понятия или случайные наборы символов, а что-то похожее на обозначаемое.
Например, глупо кодировать главнокомандующего такими словами, как «бугор», «туз» или «атаман», это будет понятно сразу же. А если использовать код «одуванчик», то криптоаналитику надо будет приложить усилия, чтобы понять, что это слово обозначает. Фраза «Одуванчик распустился поутру» может обозначать сигнал к началу атаки, а «Одуванчик опушился семенами» — сигнал к укреплению района дислокации.