Криптография («тайнопись», от греч. kryptys — тайный, скрытый и греч. grapho — пишу, черчу, рисую) — наука о защите информации от прочтения её посторонними.
Потребность человечества скрывать от посторонних глаз некоторую информацию возникла очень давно. А с момента появления фонетического алфавита стали возникать и письменные шифры.
Различные методы криптографии применялись для зашифровки военных, дипломатических, торгово-финансовых, нелегально-политических, религиозно-еретических текстов.
Один из известных ярких примеров использования тайнописи описан греческим историком Геродотом. Гистай и его зять Аристагор договорились о том, что сообщение, содержащее несколько точек подряд, будет означать то, что Аристагор должен поднять мятеж против Персии. Пришло время отправки сообщения, но тут Гистай обнаружил, что близлежащая территория охраняется самым тщательнейшим образом. Тогда Гистай побрил голову своему наиболее преданному рабу, нарисовал три точки и подождал, когда волосы отрастут вновь. После этого он отправил раба к Аристагору с запиской: «Побрей мою голову!».
На Руси тайнопись возникает в XIII веке. В русской тайнописи того периода использовался греческий, позже — латинский алфавит. C конца XVI века русские послы получают задания «вытвердить гораздо памятно» дипломатические шифры. В предписываемом послу Николаю Воркачу наказе царя Федора Иоанновича говорилось: «Писат писма мудрою азбукою, чтоб оприч [кроме] Царского Величества никто не разумел».
Подьячие Приказа тайных дел и посольские дьяки, поддерживающие связи с царскими представителями за границей, нередко прибегали к зашифрованной переписке («затейное письмо»). Ключ к расшифровке этих посланий не записывался, его заучивали наизусть. Как правило, письмо составлялось по одному из наиболее примитивных способов зашифровки, получившему название «тарабарской грамоты», либо литореи (от лат. litera — буквенный). Секрет данного способа заключался в простой перестановке, когда текст сообщения разбивался на слоги, и последние переставляли вместе с буквами по заранее заданному принципу. Иногда каждая буква заменялась своим особым, причудливым знаком. Нередко писцы прибегали к написанию фраз в обратном порядке, составляя своеобразные криптограммы, или не дописывали буквы — подобный шифр назывался «полусловицей».
Шифр Полибия
Самый, пожалуй, древний из всех известных, хотя и не такой распространённый, как шифр Цезаря. Полибий, греческий историк, умер за тридцать лет до появления Цезаря. Суть его метода в том, что составляется прямоугольник (доска Полибия), например такой:
А | Б | В | Г | Д | Е | |
А | А | Б | В | Г | Д | Е |
Б | Ж | З | И | Й | К | Л |
В | М | Н | О | П | Р | С |
Г | Т | У | Ф | Х | Ц | Ч |
Д | Ш | Щ | Ъ | Ы | Ь | Э |
Е | Ю | Я | . | , | - |
Каждая буква может быть представлена парой букв, указывающих строку и столбец, в которых расположена данная буква. Так, представления букв «П», «О» будут «ВГ», «ВВ» соответственно, а сообщение «ШИФР ПОЛИБИЯ» зашифруется как «ДАБВГВВДЕЕВГВВБЕБВАББВЕБ». Хоть эта система и является более древней, чем две последующие, но устойчивость к раскрытию у неё гораздо выше, несмотря на то, что наблюдается увеличение количества символов зашифрованного текста.
Шифр Цезаря
Это один из самых старых шифров, имеющий ряд серьёзных недостатков. Огромное семейство подстановок Цезаря названо по имени римского императора Гая Юлия Цезаря, который поручал Марку Туллию Цицерону составлять послания с использованием 50-буквенного греческого алфавита со сдвигом в 3 знака и дальнейшей подстановкой. Информация об этом дошла к нам от Светония. Попробуем воспроизвести этот метод шифрования для русского алфавита. Для этого создадим таблицу соответствия:
ю | а | б | ц | д | е | ф | г | х | й | к | л | м | н | о | п | я | р | с | т | у | ж | в | ь | ы | э | ш | з | щ | ч | ъ |
ц | д | е | ф | г | х | й | к | л | м | н | о | п | я | р | с | т | у | ж | в | ь | ы | э | ш | з | щ | ч | ъ | ю | а | б |
Тогда текст «ГАЙ ЮЛИЙ ЦЕЗАРЬ» после преобразования будет выглядеть следующим образом: «ЖГМ БОММ ЩИЛГУЭ». Алгоритм обратного преобразования идентичен: для расшифровки сообщения производится обратная подстановка.
Аффинная криптосистема
Под классификацию этого алгоритма шифрования попадают практически все подстановочные шифры. Аффинная криптосистема — это обобщение системы Цезаря. Известно множество литературных примеров использования вариаций шифра Цезаря: «Пляшущие человечки» А. Конан Дойля, подобный шифр использовал герой рассказа Э. По «Золотой жук» капитан Кидд и т. д. С небольшими доработками мы встречаем принципы Аффинной криптосистемы в исторических повествованиях.
А на Руси во время правления Петра I все русские послы при иностранных дворах пользовались специальными шифрами («цыфирь», «азбука», «ключ») для переписки с руководящими лицами Посольской канцелярии и царём. Именно Посольская канцелярия, ведавшая важнейшей политической перепиской, явилась главным учреждением царя по организации систематического использования тайнописи флота. Истории известна шифрованная переписка царя с адмиралом Ф. М. Апраксиным, фельдмаршалами Огильви, Б. П. Шереметьевым. При осаде шведским королём Карлом XII Полтавы её комендант А. С. Келин за неделю до Полтавского сражения 1709 г. регулярно сообщал Петру сведения о противнике в шифрованных письмах.
В 30-е годы ХVIII века в России появляются совершенно новые системы тайнописи — алфавитные, позже — неалфавитные коды. В 1735 г. некий «государев муж» А. Вешняков разработал собственную систему, в которой каждому шифрообозначению соответствовала не обязательно отдельная буква того или иного алфавита, а целая словарная величина: буква «Д» — 10, слово «король» — 12, слог «ба» — 65 и т. д. Кроме того, в данную систему А. Вешняков заложил хитрость, заключавшуюся в отсутствии цифр 3 и 7. Таким образом, слово «король» можно изобразить как 312, 132, 123. В любом случае известно, что речь идёт о шифрообозначении 12. «Следственно, яко оне бы не были, но едино 12 будет видеть». Специально оговаривалась система пустышек, то есть ничего не объясняющих шифрообозначений, вводимых с одной целью — запутать вражеских дешифровальщиков. Пустышки использовались ещё задолго до Петра I, но в 30-е годы ХVIII века приобретают особое значение и их становится значительно больше.
«Посреди мусора», или Шифр Ришелье
Совершенно «естественно» выглядит криптотекст, полученный с помощью криптосистемы Ришелье. Соответственно, защищённость этого алгоритма гораздо выше предыдущих. В основе лежит «замешивание» по определённым законам исходного текста в «мусоре» (посторонних символах). Зашифрованный текст получается гораздо длиннее исходного, причём эта разница и определяет реальную криптостойкость системы. Суть метода Ришелье в следующем. Создаётся подобная решётка с прорезями вместо крестов:
Х | Х | Х | Х | ||||||
Х | Х | Х | Х | ||||||
Х | |||||||||
Х | Х | Х | Х | Х | |||||
Х | Х | ||||||||
Х | Х | Х | Х | Х |
Далее в прорезях отверстий пишется текст, решётка снимается и всё оставшееся пространство заполняется «мусором». Затем, для усложнения расшифровки, криптотекст можно выписать в ряд. Для длинных сообщений этот метод применяется несколько раз. Кстати говоря, выходной криптотекст можно оформить с помощью «мусора» и в виде смыслового послания. Выполнить обратное преобразование в исходный текст можно, зная размер блока и имея аналогичную решётку. Так невинная записка «Приезжайте на праздник. Завтра буду взбивать крем для торта» может означать недоброе послание «Пана убить». Эта система, как и прочие, существует в некоторых разновидностях и видоизменениях.
Перестановочные шифры
Во все времена активно использовались криптосистемы, использующие перестановки. Рассмотрим этот метод на несложном алгоритме простой столбцевой перестановки. Предварительно условимся, что число столбцов равно пяти.
Допустим, имеется текст, который требуется зашифровать: «ПРОСТЫЕ ПЕРЕСТАНОВКИ ВНОСЯТ СУМЯТИЦУ». Запишем этот текст слева направо, сверху вниз, заполняя последовательно пять столбцов:
1 | 2 | 3 | 4 | 5 |
П | Р | О | С | Т |
Ы | Е | П | Е | |
Р | Е | С | Т | А |
Н | О | В | К | И |
В | Н | О | С | |
Я | Т | С | У | |
М | Я | Т | И | Ц |
У |
Теперь зададимся ключом, например, 35142, и выпишем в ряд столбцы, начиная с третьего, в соответствии с ключом: «О СВН Т ТЕАИСУЦ ПЫРН ЯМУСПТКОСИ РЕЕОВТЯ ». Получилось довольно неплохо. Для расшифровки требуется количество символов зашифрованного текста разделить на 5 и сформировать столбцы в соответствии с ключом. В итоге получится исходная таблица, из которой можно прочитать текст построчно. Криптостойкость увеличится, если к полученному зашифрованному тексту применить повторное шифрование с другим размером таблицы и ключом или с перестановками не столбцов, а рядов. Перестановочные шифры очень хорошо сочетать с другими, таким образом повышая криптостойкость.
Шифр графа Виженера
Наиболее известной и по праву одной из старейших многоалфавитных (одному шифруемому символу соответствует более одного символа) криптосистем является система известного французского криптографа графа Блейза Виженера (1523-1596). Для преобразования строится алфавитный квадрат с построчным сдвигом символов в каждом последующем ряду:
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А
В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б
Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В
Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г
Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д
Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е
З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж
И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З
Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И
К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й
Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К
М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л
Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М
О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н
П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О
Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П
С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р
Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С
У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т
Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У
Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф
Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х
Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц
Ш Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч
Щ Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш
Ъ Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ
Ы Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ
Ь Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы
Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь
Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э
Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю
Далее выбирается ключ, например «ГРАФДРАКУЛА». Затем пишется шифруемая фраза, а под ней циклически записывается ключ. Для примера возьмем фразу «ОТРЯД ЖДЕТ УКАЗАНИЙ» и исключим из неё пробелы:
«ОТРЯДЖДЕТУКАЗАНИЙ» — исходный текст,
«ГРАФДРАКУЛАГРАФДР» — циклический ключ.
Преобразование производится так: шифруемому символу соответствует символ, находящийся на пересечении буквы ключа (столбец) и буквы исходного текста (строка). Получим:
«СВРУИЦДПЕЮКГЧАБМЩ».
Как видно, одним и тем же буквам исходного текста соответствуют не всегда одинаковые символы, то есть символы могут принимать различные значения, что является несомненным плюсом в плане криптостойкости зашифрованного текста.
Квадрат может быть каким угодно, главное, чтобы он был легко воспроизводимым и левый столбец, так же как и верхний ряд, соответствовали всему алфавиту. В качестве альтернативного варианта этого может быть известный квадрат Френсиса Бьюфорта, где строки — зеркальное отражение строк квадрата Виженера. Для усложнения строки могут быть переставлены местами в определённом порядке и т. д. Усложнённой разновидностью этого метода является метод шифрования с автоключом, предложенный математиком Дж. Кардано (XVI в.). Суть его в том, что, кроме циклического ключа, есть ещё один, записываемый однократно перед циклическим ключом — первичный ключ. Этот нехитрый приём придаёт дополнительную стойкость алгоритму.
Шифр барона Плейфейра
Назван так в честь своего разработчика. Алгоритм заключается в следующем: сначала составляется равносторонний алфавитный квадрат. Для русского алфавита подойдёт квадрат 5х6. Задаётся ключевая фраза без повторов букв, например «БАРОН ЛИС». Фраза вписывается в квадрат без пробелов, далее последовательно вписываются недостающие буквы алфавита в правильной последовательности. Одну букву придётся исключить для выполнения условия равносторонности. Пусть это будет «Ъ». Примем допущение, что Ъ=Ь. Итак, получился квадрат, который легко восстановить по памяти:
Б | А | Р | О | Н |
Л | И | С | В | Г |
Д | Е | Ж | З | К |
М | П | Т | У | Ф |
Х | Ц | Ч | Ш | Щ |
Ь | Ы | Э | Ю | Я |
Теперь условия для преобразования:
- Текст должен иметь чётное количество букв и делиться на биграммы (сочетания по две буквы), недостающую часть текста дополняем самостоятельно одним (любым) символом. Например, текст «ОСЕНЬ» преобразуется в «ОСЕНЬА».
- Биграмма не должна содержать одинаковых букв — «СОСНА» — «СО СН АБ».
- Лучше подбор текста осуществлять без дополнений и сразу в соответствии с условиями преобразования.
Правила преобразования:
- Если биграмма не попадает в одну строку или столбец, то мы смотрим на буквы в углах прямоугольника, образованного рассматриваемыми буквами. Например: «ДИ» = «ЛЕ», «ЬУ» = «МЮ» и т. д.
- Если биграмма попадает в одну строку (столбец), мы циклично смещаемся на одну букву вправо (вниз). Например, «ЛС»=«ИВ», «ТЭ»=«ЧР».
Итак, мы готовы преобразовать текст. Приступим к шифрованию:
«СОВЕЩАНИЕ СОСТОИТСЯ В ПЯТНИЦУ» — первоначально преобразуется в биграммы: «СО ВЕ ЩА НИ ЕС ОС ТО ИТ СЯ ВП ЯТ НИ ЦУ». Выполнив преобразование по вышеизложенным правилам, получим биграммы: «РВ ЗИ НЦ ГА ИЖ ВР РУ ПС ЭГ УИ ФЭ ГА ПШ».
Обратите внимание на то, что одинаковые буквы на входе дали разные буквы на выходе криптосистемы, а одинаковые буквы на выходе совсем не соответствуют одинаковым на входе. Таким образом, криптотекст «РВЗИНЦГАИЖВРРУПСЭГУИ» выглядит гораздо более «симпатично», чем после прямой замены моноалфавитной криптосистемы.
Правила преобразования могут значительно варьироваться. Алфавит может быть упрощён до логического минимума с целью сокращения квадрата. Например, можно переводить текст в транслитерацию и писать латинскими буквами, тогда квадрат будет размером 5х5.
Существуют также разновидности этой криптосистемы. Например, можно использовать несколько квадратов, периодически меняя их в циклическом повторении, что существенно затруднит расшифровку.
Все рассмотренные исторические криптографические алгоритмы легко повторяются без специальных устройств, вычислительной техники и т. п., но сегодня представляют лишь познавательный интерес. Частотные алфавитные словари, словари биграмм и мощь вычислительной техники сделали их очень уязвимыми к аналитическим атакам.
Но в те давние размеренные времена ещё не было таких скоростей, такой чудовищной мощи техники, когда перехват донесения означал бы неминуемую и быструю смерть тысяч людей, а промышленный шпионаж приносил бы процветание целой стране. Пройдут ещё долгие столетия и настанут времена настоящих криптографических войн.
Автор: Сергей Синкевич.