Найти тему
Катехизис и Катарсис

Немного о шифрах

Оглавление

— Я над твоим старославянским ломаю голову, как Тьюринг над шифром Энигмы!

— А кто такой Тьюринг?

— Один мой знакомый.

— А Энигма?

— А это его девушка, она писала ему зашифрованные письма.

— Как романтично!

Из Диалога в чате

Какое по-вашему величайшее изобретение человечества? Сразу приходит на ум колесо. А на мой взгляд это не так. Когда мне задали такой вопрос я не задумываясь ответил: “Письменность”. А подумав добавил к ней фонетический алфавит. Думаю не стоит объяснять почему. А как только люди придумали как передавать друг другу сообщения в графическом виде, т.е. научились читать и писать, то тут же задумались о том, что сообщение может прочесть и тот кому его читать совсем не следует. А значит надо придумать как сделать послание нечитабельным для тех, кому оно не предназначено. Так и появилась криптография. Ну или примерно так.

Вообще, вопросами шифрования занимается целая наука — криптография. Это одна из древнейших наук, ее история насчитывает около четырех тысяч лет. Современные методы шифрования очень сложны и требуют специального образования, а также наличия вычислительной техники и специфического программного обеспечения, тем не менее даже современные шифры могут быть взломаны и даже за приемлемое количество времени.

Самый простой из шифров — это подстановка, когда в исходном (открытом) тексте символы известного алфавита заменяются на какие-нибудь другие. Пример такого шифра встречается в одном из рассказов о Шерлоке Холмсе. Помните? Тот, который с пляшущими человечками. Или вот другой пример:

< J V < F D < B < K B J N T R T

Б О М Б А В Б И Б Л И О Т Е К Е

Здесь я исходную фразу написал в английской раскладке стандартной клавиатуры.

Другой известный с древних времен шифр — сдвиг Цезаря. Это простой шифр, в котором каждый символ в открытом тексте заменяется буквой, находящейся на некоторое постоянное число позиций левее или правее него в алфавите. Например, в шифре со сдвигом 3, А была бы заменена на Г, Б станет Д, и так далее. Число сдвига может быть заранее точно определено или зависеть от внешних факторов. Например, числом сдвига может служить номер дня недели написания шифровки (понедельник — 1, вторник — 2 и т. п.) или номер последнего королевского указа, если они выходят достаточно часто. Переменное число сдвига усложняет расшифровку, правда, совсем не на много.

Еще один способ усложнения сдвига Цезаря — использование цепочки цифр. Например, ключ 759: для данного ключа первая буква сообщения сдвигается на 7, вторая на 5, третья на 9, четвертая опять на 7 и так далее.

Достоинство данных шифров в их простоте — написание и прочтение таких сообщений не займет много времени. Увы, но основной недостаток — это тоже простота. Например, простой шифр Цезаря легко ломается проверкой величины сдвига: используете сначала сдвиг 1, если не получилось, то сдвиг 2 и так до победного конца. Хорошие результаты дает и частотный анализ — метод взлома шифров, предполагающий, что определенные символы в шифротексте будут встречаться с такой же частотой, как и их соответствия в открытом тексте.

Однако, несмотря на крайнюю уязвимость подобных шифров, они используются до сих пор, но только в слегка усложненных вариантах. Одно из посланий Зодиака в свое время было написано подобным шифром и было довольно легко дешифровано. Или, например, возьмем не шифр Цезаря, а так называемый шифр Вижинера.

Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровки может быть применена таблица алфавитов, называемая квадрат Виженера. Применительно к русскому алфавиту таблица Виженера составляется из строк по 33 символа, причем каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 33 различных шифра Цезаря. На разных этапах кодировки шифр Виженера использует различные алфавиты из этой таблицы, которые выбираются в зависимости от символа ключевого слова. Например, предположим, что исходный текст имеет вид:

РЕВОЛЮЦИЯ

Человек, посылающий сообщение, записывает ключевое слово (например, ДЕМОН) циклически до тех пор, пока его длина не будет соответствовать длине исходного текста:

ДЕМОНДЕМО

Первый символ исходного текста Р зашифрован последовательностью Д, которая является первым символом ключа. Первый символ Ф шифрованного текста находится на пересечении строки Р и столбца Д в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста Й получается на пересечении строки E и столбца Е. Остальная часть исходного текста шифруется аналогичным способом:

Исходный текст: РЕВОЛЮЦИЯ

Ключ: ДЕМОНДЕМО

Шифровка: ФЙОЭЩВЫХН

Расшифровывание производится следующим образом: находим в таблице Виженера строку, соответствующую первому символу ключевого слова; в данной строке находим первый символ зашифрованного текста. Столбец, в котором находится данный символ, соответствует первому символу исходного текста. Следующие символы зашифрованного текста расшифровываются таки же образом.

Один из вариантов таблицы Виженера

Это только пример таблицы Виженера. Для реальных дел лучше использовать разные сдвиги для разных колонок. Естественно, для переписки необходимо, чтобы таблицы у автора и получателя совпадали.

Такой метод значительно осложнит частотный анализ.

Для двух первых примеров тоже найдутся достаточно действенные способы усложнения. Самые очевидные из них: задание большего количества соответствий и запись одного символа несколькими. В первом случае, допустим, что букве А соответствуют символы Ц, = и /. При шифровании вместо буквы А пишете любой из этих трех символов, а в следующий раз — другой. При втором методе некоторые буквы, например, ту же букву А, кодируете как последовательность АБВ, а букву К, к примеру, как МКН. Эти способы незначительно затруднят написание сообщений, но весьма ощутимо осложнят взломщикам их задачу.

Еще один интересный шифр называется решетка Кардано. Она делается из листа картона. Чтобы обозначить линии письма, бумагу разлиновывают, и между этими линиями вырезают прямоугольные области через интервалы произвольной длины.

Шифратор кладет решетку на лист бумаги и пишет сообщение в прямоугольных отверстиях, в которых помещается отдельный символ, слог или целое слово. Исходное сообщение оказывается разделенным на большое число маленьких фрагментов. Затем решетка убирается, и пустые места на бумаге заполняются посторонним текстом так, чтобы скрываемый текст стал частью криптотекста. Такое заполнение требует известного литературного таланта. Решетку можно разместить в 4 положениях — лицом вверх, лицом вниз, вертикально и в перевернутом положении, что вчетверо увеличивает число возможных размещений сетки. Естественно, что у получателя должна быть такая же решетка для расшифровки послания.

Надо отметить, что классическая решетка Кардано — это не столько криптография, сколько стеганография — то есть послание, скрывающее не текст послания, а тот факт, что текст кодирован, и вообще передается какаое-то шифрованое сообщение.

Разновидность решетки Кардано — сетка. Это квадрат с прорезанными отверстиями так, что при повороте на 90º вокруг центра открываются новые поля. При заполнении сетки во всех четырех позициях получаем квадрат, на первый взгляд, заполненный хаотичным набором букв.

-2

Пример сетки Карадано

-3
-4

Пример последовательного заполнения сетки Кардано

Основной недостаток решетки Кардано — необходимость беречь шифровальный аппарат. В случае утери, конфискации или порчи одного из ключей — теряется вся шифрованная переписка. Второй существенный недостаток — относительно легкая дешифрация, при условии, что дешифратор знает тип шифра, с которым имеет дело.

Еще один интересный шифр, не требующий специальных приспособлений для применения, — биграммный шифр Плейфейра.

Возьмем любое слово из четырех или восьми неповторяющихся букв, например «шифр». Запишем его в строку таблицы 4×8, а остальные ячейки заполним по порядку буквами алфавита, пропуская те, которые используются в ключевом слове. Для этого нам надо выкинуть из алфавита одну из букв, например Ё.

-5

Разобьем исходное сообщение на пары букв (биграммы). Текст должен иметь четное количество букв, и в нем не должно быть биграмм, содержащих две одинаковые буквы. Если это условие не выполняется — текст модифицируется, вплоть до орфографических ошибок.

Теперь зашифруем биграммы следующим образом: если буквы находятся на разных строках и столбцах — берется пара букв, образующая квадрат с исходными. Так биграмма ЕЛ меняется на КЖ, а СА на ГН. Если буквы находятся на одной строке — берется биграмма под ними. Если в одном столбце — биграмма правее. Так сочетание ОП меняется на УХ и РЯ на ШЬ.

Преимуществом данного метода является легкость запоминания и возможность в любой момент нарисовать шифрующую таблицу. Еще один несомненный плюс — высокая криптографическая стойкость. Вероятность дешифровки бинарного шифра на полигоне ничтожно мала. Для примера посмотрите на шифровку:

ЙКСКОЭЫЬБЙ

Все это достаточно простые и широко известные варианты шифров, к тому же неустойчивые к взлому. Любой криптоаналитик расшифрует такие сообщения за минуты. Вообще, если вас заинтересовала тема шифров, то рекомендую книгу Дэвида Кана “Взломщики кодов”. Там нет какой-то новейшей информации, т.к. книга впервые была издана в 1967, и даже на тот момент не содержала каких-то открытий. Однако в ней очень интересно рассказывается о криптографии и истории ее применения. Да и не собрались же вы в реальности взламывать современные военные шифры? Или собрались? )

Сообщество автора - Cat_Cat