Шрифт:
Интервал:
Закладка:
Что такое «система индексации»? Можно сказать, что это способ, который поможет нам понять, какую букву необходимо взять из книги. На ум сразу же приходит несколько таких способов:
1. Пересчитать все буквы в книге, дав им последовательно номера (индексы) от 1 и так далее до самой последней буквы. Это очень неудобный способ, поскольку числа будут всё увеличиваться и, в конце концов, достигнут астрономических размеров.
2. Можно указывать номер буквы на странице — а страницы в книгах уже пронумерованы. Тогда код для буквы будет состоять из двух чисел: номер страницы + номер буквы на странице. Этот способ намного легче, тем более что один из индексов уже создан (номера страниц).
3. Наконец, можно указывать номер страницы, номер строки на странице и номер буквы в строке. Уже три числа для каждой буквы! Но такой тройной индекс намного проще. И опять один из номеров уже напечатан в самой книге, остаётся найти два других.
В книге среднего объёма имеются сотни тысяч букв, так что для шифрования любой буквы ты сможешь использовать уникальный, ни разу не повторяющийся код. Нужно только помечать в книге те буквы, которые уже были использованы.
Как же шифровать таким методом? Необходимо выбрать в качестве ключа достаточно редкую книгу. По одному экземпляру такой книги должно быть у тебя и у того, с кем ты переписываешься. Итак, если ты хочешь зашифровать, скажем, слово «ПОБЕДА», то в произвольном месте книги ты должен найти букву «П» и записать её тройной индекс. Например, вот так: (20 17 35), что обозначает «буква на странице 20, в строке 17, на позиции 35». Шифрограмма всего слова будет примерно такой: (20 17 35) (6 5 3) (37 5 15) (32 5 21) (1 4 6) (5 13 7). Можно даже отказаться от скобок, поскольку довольно просто откладывать каждый раз по три числа и использовать их в качестве кода. Зато у криптоаналитика будет такая головная боль, что он спать не сможет! Если не использовать скобки, то начнут встречаться повторные числа, но это не должно тебя волновать: ведь это только затуманит и усложнит процесс расшифровки, и горе-криптоаналитик потратит огромное количество времени на частотный анализ, а он здесь вообще бессмыслен.
Соответственно, расшифровка происходит абсолютно так же, только в обратном направлении. Если тебе встречается код (20 17 35), то открой двадцатую страницу своей кодовой книги, отсчитай сверху семнадцатую строку, а в этой строке отсчитай тридцать пятую букву и выпиши ее. И так далее, для всей шифровки.
Этот метод шифрования практически невозможно взломать. Только благодаря удаче криптоаналитику в руки может попасть книга-ключ. Но при этом криптоаналитик должен еще и догадаться, что использовался описанный способ шифрования. В истории случались эпизоды, когда зашифрованные таким образом тексты были расшифрованы. Но это происходило только когда в качестве ключа была выбрана какая-то очень известная книга, а криптоаналитик знал, что шифрограмма зашифрована именно этим способом, и начинал просто перебирать все доступные ему книги. В конце концов шифрограмма поддавалась. Потому я напоминаю, что надо использовать редкую книгу либо вообще написать для этих целей уникальный текст.
Впрочем, иногда такие шифрограммы удаётся взломать и по-другому. Никто не отменял выкрадывание ключей, разные шпионские штучки и прочие не совсем честные методы. Поэтому храни свои криптографические ключи очень тщательно и оберегай их от чужого взгляда.
Теперь ты можешь приступать к выполнению задания. В письме, которое тебе придёт, будет шифрограмма, закодированная одним из описанных здесь способов. Попробуй применить к ней книгу из тех, что ты взял с собой.
На этой неделе мы изучим новую технику криптографии и шифрования. Она также позволяет очень хорошо защищать тайны и передавать оперативные сообщения. Эта техника основана на использовании кодовых слов.
Давай чётко разграничим понятия «шифр» и «код». Под шифром мы будем понимать (так понимают это все шифровальщики и криптоаналитики в мире) способ сокрытия информации путем замены или перемешивания единиц текста, которые не передают смысл (например, букв и слогов). В шифре также одновременно могут быть замена и перемешивание, в этом нет ничего удивительного. А термин «код» означает сокрытие информации на любом уровне, в том числе и на уровне единиц текста, обладающих смыслом. То есть кодировать можно и слова, и целые предложения, и даже целые тексты. Но кодировать можно и отдельные буквы. Так что любой шифр является кодом, но не каждый код будет шифром.
Теперь вспомни то, что я говорил ещё на первой неделе о простом шифре замены. Одноалфавитный шифр замены не является шифром, это просто код, в котором по-другому обозначаются буквы. Такие коды не слишком защищённые, их просто разгадать. Кстати, часто коды вообще не скрывают информацию, а используются для сокращения. Например, ты можешь выписать в столбик под номерами наименования всех своих книг. Номера и будут кодом, который можно использовать для сокращения. Вместо того чтобы писать или говорить, например, «Путешествие к центру Земли», можно будет использовать номер: 243.
Такие кодирующие списки еще называются номенклаторы. Номенклатор представляет собой простой словарь, в котором каждому кодовому слову соответствует какой-то специальный смысл. Соответственно, номенклаторы можно использовать в качестве ключей для кодирования информации.
Сам по себе этот метод шифрования выглядит не очень привлекательным. Он может быть вполне надёжным, но этому мешает несколько причин:
1. Хороший номенклатор должен содержать замены для тысяч слов, в том числе имён существительных, имён прилагательных и особенно глаголов. Только такой номенклатор позволит достаточно затуманить смысл передаваемых сообщений. Замена всего лишь нескольких ключевых понятий не слишком повысит надёжность кода, поскольку об их значении можно догадаться из контекста, особенно если они повторяются.
2. Если составить действительно большой номенклатор, окажется, что это просто новый язык, который использует ту же самую грамматическую основу, что и «материнский» язык, но заменяет корни слов на коды. Что ж, это тоже неплохой вариант. Во время Второй мировой войны так делали, но использовался очень редкий и очень сложный язык (язык индейского племени навахо), так что у криптоаналитиков не было никаких шансов.
3. Как всегда встаёт проблема секретного обмена ключами (то есть, в этом случае, номенклаторами) и тайного хранения этих ключей. Чем больше книга со словарём, тем сложнее уберечь её в секрете, и криптоаналитик сможет задействовать грубые методы: шпионаж, кражу или ещё что похуже. Так не раз бывало в истории.
Один из видов подобного кодирования — создание специализированного жаргона. Этим способом пользуются группы людей, которые хотят засекретить свои переговоры. В первую очередь (но не всегда) это преступные сообщества и религиозные секты.
Например, попытайся понять, о чём говорится в следующем тексте:
— Мас скудается, устрекою шуры не прикосали бы и не отъюхтили бы шивару.