Книжный шифр
Книжный шифр — вид шифра, в котором каждый элемент открытого текста (каждая буква или слово) заменяется на указатель (например, номер страницы, строки и столбца) аналогичного элемента в дополнительном тексте-ключе.
Для дешифрования необходимо иметь как закрытый текст, так и дополнительный текст-ключ. В качестве дополнительного текста часто использовали распространённые книги, либо книги, которые с большой долей вероятности были и у отправителя, и у адресата[1].
История создания[править | править код]
На сегодняшний день ученые и историки не имеют четкой информации о том, когда и кем первый раз был использован книжный шифр. Один из наиболее ранних примеров использования данного шифра известен как книжный шифр Энея, который относится к стеганографии. Возможно, что эта первая попытка использовать рукописный текст для шифрования и стала началом создания книжного шифра[2].
Кроме того, нельзя не заметить сходство использования книжного шифра и шифрования с помощью квадрата Полибия. Причём книжный шифр — один из методов предложенных Полибием, только значительно усовершенствованный. В квадрате Полибия каждой букве в соответствие ставятся два числа, причём для одинаковых букв числа также будут идентичны. Преимущество книжного шифра в том, что каждая буква исходного текста будет иметь свой собственный идентификатор. Однако, если, например, страницу книги разбить на большое число различных квадратов Полибия, то системы шифрования будут одинаковыми.
Позже над изучением и усовершенствованием книжного шифра работали в 1849 Мейснер в Брауншвейге, а в новейшее время Вольтер в Винтертуре. В Советском Союзе книжный шифр широко использовался и исследовался партией большевиков РСДРП(б). Создание нескольких его модификаций приписывается известной большевичке Елене Дмитриевне Стасовой.
Практическая реализация и разновидности алгоритмов[править | править код]
Шифрование с использованием стихотворения[править | править код]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/17/PtickaPuskin.jpg/220px-PtickaPuskin.jpg)
Суть метода книжного шифра — это выбор любого текста из книги, где номера слов начинающихся на определённую букву или координаты (строка, номер в строке) самих букв выступают в качестве шифра исходного сообщения. При этом одной исходной букве может соответствовать несколько символов[3].
В качестве примера практической реализации, обратимся к воспоминаниям известного социал-демократа Виктора Катина-Ярцева, возглавлявшего Петербургский «Союз борьбы»[4].
Положим ключом к шифру будет отрывок из стихотворения А. С. Пушкина: «Цыганы».
Предстоит зашифровать слово: «Гимназия». Первая буква слова — «Г», мы её обозначаем 4/4, где числителем будет строка, знаменателем — порядок букв в этой строке. Рекомендовалось вносить побольше разнообразия, заимствуя букву из разных мест ключа, чтобы затруднить для посторонних специалистов расшифрование написанного. Тогда шифром слова «Гимназия» будет такой текст: «4/4, 7/3, 7/19, 4/9, 2/4, 1/14, 3/8, 1/11».
Или в двоичном формате: 0010000100, 0011100011, 0011110011, 0010001001, 0001000100, 0000101110, 0001101000, 0000101011.
В стихотворном шифре ключом является заранее оговоренное стихотворение, которое записывается в прямоугольник согласованного размера. Этот прямоугольник является ключевой страницей книжного шифра.
Несмотря на то, что шифрование непосредственно с помощью книги-ключа просто в применении, данный метод имеет существенные недостатки. Если шифрование производится не тщательно, то, например, повторяющиеся числовые последовательности могут упростить злоумышленнику расшифровку текста. Так же встаёт вопрос об использовании пробелов или каких-либо специфических обозначений, которые могут не только упростить задачу взлома, но и сделать процесс чтения сообщения проблематичным непосредственно для получателя.
В связи с этим рассмотрим несколько более усовершенствованных разновидностей данного метода шифрования.
Книжный шифр времён Второй мировой войны[5][править | править код]
Основной составляющей данного метода являлись, так называемые, растры, квадратные листы с определённым количеством отверстий. Символы и строки, расположенные с двух сторон растрового листа, назывались «ключевыми заголовками», с помощью которых проводилось шифрование сообщения, а также последующая его расшифровка. Для определения начального местоположения сообщения в центральной части растра использовались индикаторы групп, которые располагались на заранее заготовленных местах.
Минимальный размер передаваемого сообщения должен был составлять не менее 35 символов, максимальный не более 115.
Сообщение должно было быть коротким и ясным, запрещалось использование стереотипных фраз и повторов. Допускалось применение аббревиатур, но не короче трёх символов, исключением являлось слово «Километр», которое заменялось на «КМ».
Группы, состоящие из пяти символов шифротекста, записывались в строки с 1 по 24. Пространство в правом верхнем углу использовалось для идентификации отправителя сообщения. Каждая строка и столбец растрового листа должны были содержать ровно 3 отверстия. Расположение отверстий должно было удовлетворять следующим условиям:
- Левое отверстие должно было находиться в пределах 14 — 19 столбцов, среднее в пределах 15 — 25, а правое в пределах 21 — 26.
- Отверстия должны были распределяться таким образом, чтобы каждый столбец содержал только 1 отверстие, прежде чем в нём появится второе.
Для идентификации каждого поля в растре использовался 26 символьный алфавит. Столбцы с одной стороны нумеровались с 1 по 13, а с другой с 14 по 26. Начиная с 1-го столбца, во 2-й и в 3-й ряды записывались определённые символьные последовательности, данные последовательности вместе с числовой и являлись «ключевыми заголовками».
Теперь рассмотрим одну из основных составляющих данного метода шифрования — «ключевой заголовок», с помощью которого и будет проводиться дальнейшее шифрование и дешифрование сообщения.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/41/%D0%A0%D0%B0%D1%81%D1%82%D1%801.png/220px-%D0%A0%D0%B0%D1%81%D1%82%D1%801.png)
Пусть ключом в данном случае будет следующий набор символов : " f s g j h c v m x z q r t ", важно, чтобы его длина не превышала 13 символов. В соответствие с правилами данный ключ заносится во вторую строку, прямо под числовую последовательность 1 −13. Построение числовой последовательности для дальнейшей работы проводится следующим образом :
- Буквы ключа нумеруются в их алфавитном порядке, то есть букве «c» мы должны присвоить номер 3, но поскольку в данной последовательности она из всех букв в алфавите идёт первой, то мы присваиваем ей номер 1, f — номер 2 и т. д.
- Затем, получившуюся числовую последовательность записываем в четвёртый столбец.
Записываем в четвёртую строку, под последовательностью 14-26, полученную числовую последовательность, а в третью — последовательность, которая формируется следующим образом : числу 1 ставим в соответствие символ a, поскольку он идёт первым в выбранном нами алфавите, 2 — b , 3- c и т. д. После всего этого удаляем ключ из второй строки.
Получившаяся таким образом совокупность числовой и символьной последовательностей и называется «ключевым заголовком».
После ознакомления с теоретической частью метода перейдём к практической и проиллюстрируем работу данного шифра на следующем примере.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/%D0%A0%D0%B0%D1%81%D1%82%D1%80.%D0%A0%D0%B8%D1%81_2.png/220px-%D0%A0%D0%B0%D1%81%D1%82%D1%80.%D0%A0%D0%B8%D1%81_2.png)
Допустим, мы хотим зашифровать сообщение " An appeaser is one who feeds a crocodile hoping it will eat him last " (Миротворец — это тот, кто кормит крокодила в надежде, что, тот съест его последним.)
Заполним, для начала, «ключевые заголовки» .Для начала работаем со столбцами под последовательностью 1-13. Во второй столбец запишем символьную последовательность : " u y t e t j g s h d b v x ", в третий : " b i c e d a k f l m g h j ", а в четвёртый запишем числовую последовательности, которую мы получили ранее, то есть " 2 9 3 5 4 1 11 6 12 13 7 8 10 ". Теперь со строками под последовательностью 14 — 26 проделаем то же самое, но с уже с последовательностями " m g d h a c n b v z x l I ", " b i c e d a k f l m g h j " и " 2 9 3 5 4 1 11 6 12 13 7 8 10 ".Далее заносим открытый текст в центральную часть растра, начиная с произвольного свободного поля.
После этого в соответствии с верхней числовой последовательностью записываем открытый текст по столбцам в правую часть растра. Например, числу 1 в верхней строке соответствует столбец символов " a o a h l ", его мы и записываем первым в строку 1 справа и т. д. Пятую строку оставляем свободной, поскольку она будет являться индикаторной группой начала сообщения, которая формируется следующим образом : первые 2 символа берутся из второго и третьего столбцов левой части растра(из строки, где начинается сообщение, в данном примере из седьмой), третий символ выбираем произвольным образом, четвёртый и пятый символы из второй и третьей строк верхней части растра(17-й столбец).
Для расшифровки же сообщения необходимо было знать лишь ключ, в нашем случае это последовательность символов " f s g j h c v m x z q r t " и индикаторную группу, чтобы знать с какого поля в растре начинается сообщение. Далее, выполняя все действия в обратном порядке, мы получим исходное сообщение.
Современный вариант книжного шифра[править | править код]
Теперь рассмотрим более современный вариант данного метода шифрования, который был разработан в 2010 году[6].
Ранее мы рассматривали данный шифр только с точки зрения шифрования на основе каких-либо книг, символьных последовательностей и т. д. , сейчас же, с изобретением огромного количества электронных устройств попытаемся посмотреть на данный метод шифрования с другой стороны.
Если внимательно присмотреться к файлам, которыми мы оперируем на компьютерах, будь то музыка, фотографии, документы или видео, все они имеют схожую структуру, все они представляются в виде битов, 0 или 1. Если рассматривать компьютер, как хранилище такого вида файлов, так почему бы не использовать его как «книгу-ключ» для шифрования сообщений.
Давайте более детально рассмотрим идею данного алгоритма.
Ключом в данной случае будет являться набор обычных компьютерных файлов: (Файл 1, Файл 2 ,…, Файл N).
Первым шагом будет выбор числа k: k∈N, k≥1.
Далее конвертируем исходный текст в бинарную последовательность и разделим её на s частей, где каждая часть имеет длину k бит. Если длина последней части меньше k, то заполняем её нулями.
После первых двух шагов наш текст представляет собой множество, состоящее из s частей, обозначим его за D: D = (D1…Ds).
Проделаем предыдущие шаги, но уже не с открытым текстом, а с набором файлов, которые выбрали в самом начале в качестве ключа: (Файл 1,Файл 2 … Файл N).
Каждый файл представим в виде битовой последовательности, которую потом разделим на части, длина каждой части k бит, если меньше, то заполняем остальное нулями.
Проделав данную операцию со всеми файлами, получим набор блоков и каждому из них присвоим адрес. Адрес будет состоять из номера файла, из которого данный блок получен и номера самого блока из множества всех блоков, из которых состоит данный файл.
После этого заменим каждую часть Di, где i ∈(1 … s) на произвольно выбранный адрес блока, в результате чего получим, что исходный открытый текст превратился в набор случайных адресов : (адрес 1 … адрес s).
Для расшифровки получившегося текста нам понадобится тот же ключ, что мы использовали для шифрования открытого текста, то есть набор (Файл 1,Файл 2 … Файл N) и непосредственно сам зашифрованный тест.
Для каждого адреса находим соответствующий ему файл по номерам файла и блока, которые содержит адрес.
Далее заменяем каждый адрес зашифрованного текста на соответствующие элементы D из множества (D1… Ds) и конвертируем его в исходный открытый текст.
История применения[править | править код]
- Книжные шифры, а именно шифры, использующие в качестве текста-ключа стихотворения, широко применялись революционерами в начале XX века[4]. Так в одной из тайных переписок, ключом шифра являлось стихотворение Н. А. Некрасова «Школьник»: «Ну, пошёл же ради бога…». Стихотворение вписывалось в квадрат размером 10 на 10, если в строке было более 10 букв, то лишние буквы выбрасывались:
|
|
- Прославленный советский разведчик Рихард Зорге с успехом использовал книжный шифр. Японцы не смогли прочесть шифровки даже после ареста всех членов агентурной сети[7].
- Во время американской революции Бенедикт Арнольд использовал шифр, основанный на «Комментариях к английским законам» сэра Уильяма Блэкстона в качестве ключевого текста.
- Широкое применение получили книжные шифры во время Гражданской войны в США. Так, например, коммерческие книги, находившиеся в общем доступе, использовались южанами в качестве кодовых. Причём шифровались по таким книгам не одиночные буквы, а иногда и целые выражения. Однако такое шифрование было ненадежным, ведь число таких книг было ограничено, и, после перебора их всех, нетрудно было получить ключ. Этой ненадежностью и воспользовались северяне. В ответ, для повышения криптостойкости, южане стали использовать специальные правила замены, так, например, слово, расположенное в книге на 22-м месте 8-й страницы, замещалось 22-м словом на 18-й странице. Но подобные модификации не приносили пользы.
- Ещё в самом начале своей революционной деятельности книжные шифры использовал Владимир Ильич Ленин[8]. Однако тогда такой способ шифрования был неудобен, ведь требовалось налаживание регулярной переписки, а это бы означало необходимость вывезти из страны целую библиотеку кодовых книг. В 1902 году Ленин жаловался в письме матери о недостатке русских книг в Германии. Поэтому известны лишь единичные случаи использования книжных шифров:
- В октябре 1901 года Надежда Крупская через агента Конкордию Захарову просила выслать в Мюнхен в качестве книги-ключа биографию Спинозы:
«Снеситесь с Николаевом… Ключ: биография Спинозы, стр. 60».
.
- В январе 1902 года в качестве шифра Харьковским комитетом РСДРП была выбрана биография Льва Толстого.
- Летом 1902 года РСДРП вновь обращается к биографии Спинозы:
«Вообще комитет желает завести правильные сношения, прежние связи утеряны… Шифр предлагает комитет лимоном по „Спинозе“, биографическое издание Павленкова, указывать страницу цифрой, а потом дробью: числитель обозначает строку сверху, знаменатель — букву от левой стороны»
- В XVIII веке Николасом Тристом был разработан шифр[9], идея которого состояла в присвоении каждой букве алфавита трех различных чисел, таким образом, каждая буква алфавита могла быть представлена тремя различными значениями, причём эти числовые значения у различных букв могли совпадать. Поскольку данный метод использовался в XVIII веке, то взлом данного шифра без знания ключа был практически невозможен.
Безопасность[править | править код]
Заметным преимуществом книжного шифра является отсутствие проблем, связанных с подготовкой и передачей секретного ключа, ведь кодовый текст сразу существует в нескольких экземплярах. Однако этот шифр, так же, как и другие подвержен всем обычным средствам криптоанализа. И эти средства позволяют криптоаналитику с ненулевой вероятностью угадать кодовые слова, а иногда и полностью взломать код, путём выявления ключевого текста. Однако, выявление кодового текста — не единственный способ взлома книжного шифра. Книжный шифр по-прежнему восприимчив к частотным методам криптоанализа, ведь нередко для шифрования используются одни и те же страницы в книге, а зачастую и одни и те же слова на этих страницах. Так, например, Уильям Фридман и его жена Элизабет Фридман смогли взломать книжный шифр и без книги, так как корреспонденты иногда использовали для одной буквы одно и то же обозначение страниц и строк несколько раз. Фридманам удалось прочесть переписку индийских националистов, славших разведывательные данные, используя книжный шифр на базе старого немецко-английского словаря. К моменту суда им удалось достать и окончательное доказательство — сам словарь[10].
Если использовать шифр более осторожно, то надежность его заметно увеличится, так как он будет действовать как гомофонный шифр с чрезвычайно большим количеством эквивалентов. Однако это будет организовано за счет очень большого расширения зашифрованного текста.
В литературе[править | править код]
В детективной повести Артура Конан Дойля «Долина Ужаса» главный герой Шерлок Холмс получает по почте сообщение, зашифрованное книжным шифром, но, однако, не обладает информацией об использованной книге-ключе. Он взламывает шифр, успешно предположив, что в качестве книги использовался популярный альманах Уайтекера .
Крайне пародийно изображена подготовка офицеров австро-венгерский армии к использованию книжного шифра в «Похождениях бравого солдата Швейка» Ярослава Гашека, — все офицеры сидят и читают 161 страницу книги «Грехи отцов», притом что именно эта страница приводится в учебнике криптографии. К тому же злополучный Швейк принёс не тот том. В конце концов, офицеры приходят к «утешительному» выводу, что на войне будет не до шифров[11].
Герой романа Грэма Грина «Наш человек в Гаване» скромный продавец пылесосов Уормолд в начале своей пародийной шпионской карьеры использует книжный шифр. Его ближайший друг доктор Гассельбахер сразу замечает появление новой книги: «Шекспир для юношества» и без особого труда прочитывает фальшивые донесения, пользуясь даже тем же экземпляром книги. Грин, сам бывший разведчик, показывает ненадёжность книжного шифра.
В книге Кена Фоллета «Ключ к Ребекке» рассказывается о немецком шпионе в Каире, использовавшего роман Дафны дю Морье «Ребекка» в качестве основы для шифра.
В Презумпции смерти, лорд Питер Уимзи, по заданию английской разведки в оккупированной нацистами Европе в Великой Отечественной войне, использует шифр, основанный на произведениях Джона Донна. Немцы, подозревая, что разведывательная служба будет выбирать для шифрования классические работы английской литературы, систематически перебирают такие работы до обнаружения верной, что практически приводит к поимке шпионов. Тогда Уимзи создает новый шифр, основанный на неопубликованном тексте, известном только ему самому и его жене.
Примечания[править | править код]
- ↑ А. В. Бабаш, Г. П. Шанкин «История криптографии. Часть I. М.: Гелиос, 2002»;
- ↑ Ю.Волкова: «История криптографии»;
- ↑ В. В. Ященко: «Введение в криптографию»;.
- ↑ 1 2 А. В. Синельников: «Шифры и революционеры России»;
- ↑ Michael van der Meulen «The book cipher system of the Wehrmacht» . Дата обращения: 16 ноября 2016. Архивировано 25 февраля 2022 года.
- ↑ Changda Wang, Shiguang Ju «A Novel Method to Implement Book Cipher» . Дата обращения: 16 ноября 2016. Архивировано 12 июля 2017 года.
- ↑ Шифр нигилистов и его развитие Архивная копия от 4 марта 2016 на Wayback Machine;
- ↑ А. В. Синельников: «Шифры и революционеры России. Часть 2»;.
- ↑ Albert C. Leighton, Stephen M. Matyas «The search for the key book to Nicholas Trist’s book ciphers»
- ↑ The Friedman Legacy: A Tribute to William and Elizebeth Friedman on site of NSA, p.197-198 Архивная копия от 27 мая 2010 на Wayback Machine;
- ↑ [militera.lib.ru/prose/foreign/hasek/21.html Я. Гашек «Похождения бравого солдата Швейка (Часть 3, глава 1)»].
Литература[править | править код]
- Cryptologia - An International Journal Devoted to Cryptology.
- Брюс Шнаейр. Прикладная криптография. — 2-е изд.. Архивная копия от 18 декабря 2018 на Wayback Machine
- Саймон Сингх. Книга шифров.Тайная история шифров и их расшифровки.. — Издательство "Астрель", 2006.
- Ф.Бауэр. Расшифрованные секреты. Методы и принципы криптологии.. — Издательство "Мир", 2006.
Некоторые внешние ссылки в этой статье ведут на сайты, занесённые в спам-лист |