В свою очередь криптография сама может быть разделена на два направления, известные как перестановка и замена. При перестановке буквы сообщения просто переставляются, образуя анаграмму. Для очень короткого сообщения, состоящего, например, из одного слова, такой способ весьма ненадежен, поскольку существует крайне ограниченное число возможных способов перестановки горстки букв. Так, три буквы с, о и w могут быть расставлены всего лишь шестью различными способами: cow, cwo, ocw, owc, wco, woc. Однако по мере увеличения количества букв число возможных перестановок стремительно растет, и восстановить исходное сообщение становится невозможным, если не известен точный способ шифрования. For example, consider this short sentence (рассмотрим, например, это короткое предложение). В нем содержится всего 35 букв, но число их различных перестановок составляет более 50 000 000 000 000 000 000 000 000 000 000.
Если бы один человек смог проверять одну перестановку в секунду, и если бы все люди на Земле работали день и ночь, то, чтобы проверить все возможные перестановки, потребовалось бы времени в тысячи раз больше, чем срок существования Вселенной.
Создается впечатление, что случайная перестановка букв гарантирует очень высокую степень безопасности, поскольку для противника дешифровать даже короткое предложение окажется неосуществимым. Но здесь есть отрицательный момент. При перестановке образуется невероятно сложная анаграмма, и если буквы случайно, ни с того ни с сего, перепутаются, то ни получатель, ни перехвативший ее противник не смогут ее расшифровать. Для обеспечения эффективности способ перестановки букв должен быть заранее оговорен отправителем сообщения и его получателем, но он должен храниться в секрете от противника.
Например, школьники часто посылают друг другу сообщения, зашифрованные с помощью перестановки (данный шифр называется «штакетник»), буквы которого поочередно пишутся на верхней и нижней строчках. Далее последовательность букв с нижней строчки присоединяется к концу последовательности букв на верхней строчке, благодаря чему и образуется зашифрованное сообщение. Например:
Теперь адресат может восстановить исходное сообщение просто выполняя эти же действия в обратном порядке. Существует множество различных способов последовательных перестановок, в том числе трехстрочный шифр «штакетник», когда сообщение вначале записывается в три строчки, а не в две. Или же можно производить перестановку для каждой пары букв так, чтобы поменялись местами первая и вторая буквы, третья и четвертая буквы и так далее.
Один из способов перестановки был реализован в самом первом из известных шифровальных устройств, предназначенных для военных целей, — спартанской скитале, — упоминание о которой восходит к пятому веку до н. э. Скитала представляла собой деревянный цилиндр, вокруг которого наматывалась полоска кожи или пергамента, как показано на рисунке 2. Отправитель писал сообщение по всей длине скиталы, а затем разматывал полоску, на которой после этого оставался бессмысленный набор букв. Сообщение оказывалось зашифрованным. Вестник брал кожаную полоску и обычно прятал сообщение, используя полоску как пояс, буквами внутрь, то есть кроме зашифровывания применял также и стеганографию. Чтобы получить исходное сообщение, адресат просто наматывал полоску кожи вокруг скиталы того же диаметра, что и скитала, которой пользовался отправитель. В 404 году до н. э. к спартанскому полководцу Лисандру привели вестника, окровавленного и еле держащегося на ногах, одного из пяти оставшихся в живых после крайне опасного путешествия из Персии. Вестник передал свой пояс Лисандру, который намотал его вокруг своей скиталы и прочитал, что Фарнабаз[5] собирается напасть на него. Благодаря скитале Лисандр успел подготовиться к нападению и отбил его.
Рис. 2 На полоске кожи, снятой со скиталы отправителя (деревянный цилиндр), остается набор случайных букв: S, Т, S, Р… Сообщение можно будет прочесть, только если намотать эту полоску вокруг другой скиталы такого же диаметра.
Альтернативой перестановке является замена. Одно из первых описаний зашифровывания с помощью замены дается в «Кама-сутре», тексте, написанном в четвертом веке н. э. священником-брамином Ватсьяяной, но основанном на манускриптах, относящихся к четвертому веку до н. э. Согласно «Кама-сутре» женщины должны овладеть 64 искусствами, такими как приготовление пищи и напитков, искусство одевания, массаж, приготовление ароматов. В этот список также входят менее очевидные искусства: колдовство, игра в шахматы, переплетное дело и плотничанье. Под номером 45 в списке стоит mlecchita-vikalpa, искусство тайнописи, предназначенное для того, чтобы помочь женщинам скрыть подробности своих любовных связей. Один из рекомендуемых способов заключается в том, чтобы расположить попарно буквы алфавита случайным образом, а затем заменять каждую букву в исходном сообщении ее парной. Если мы применим этот принцип к латинскому алфавиту, то мы можем расположить буквы попарно следующим образом:
Тогда вместо meet at midnight (встретимся в полночь) отправитель напишет CUUZ VZ CGXSGIBZ. Такой вид тайнописи называется шифром замены, поскольку каждая буква в исходном тексте заменяется другой буквой, так что этот шифр диаметрально противоположен шифру перестановки. При перестановке каждая буква остается сама собой, но меняет свое местоположение, в то время как при замене каждая буква меняется на другую, но остается на своем месте.
Первое документально подтвержденное использование шифра замены в военных целях появилось в «Галльских войнах» Юлия Цезаря. Цезарь описывает, как он послал сообщение Цицерону, находившемуся в осаде и бывшему на грани капитуляции.
В этом письме латинские буквы были заменены греческими, поэтому враг его не смог бы понять. Цезарь описал драматичность доставки письма:
Гонцу дали наставление, что если он не сможет приблизиться, то должен метнуть дротик с прикрепленным к ремешку письмом так, чтобы оно упало в лагере. Убоявшись излишнего риска, галльский всадник метнул дротик, как ему и приказали. По случайности дротик попал в башню, и в течение двух дней наши отряды его не замечали; только на третий день его увидел солдат, вытащил и доставил Цицерону. Цицерон просмотрел письмо, а затем прочитал его на собрании солдат, что вызвало у всех огромную радость.
Цезарь так часто пользовался тайнописью, что Марк Валерий Проб написал целый трактат о применяемых им шифрах, который, к сожалению, не дошел до наших дней. Однако благодаря сочинению Гая Транквилла Светония «Жизнь 12 Цезарей», написанному во втором веке н. э., у нас имеется подробное описание одного из видов шифра замены, применявшегося Юлием Цезарем. Он просто заменял каждую букву в послании буквой, стоящей в алфавите на три позиции дальше. Криптографы часто пользуются терминами алфавит открытого текста, то есть алфавит, используемый для создания исходного, незашифрованного сообщения, и шифралфавит, буквы которого подставляются вместо букв алфавита открытого текста. Если алфавит открытого текста расположить над шифралфавитом, как показано на рисунке 3, то станет ясно, что шифралфавит сдвинут на три позиции, и поэтому такой вид замены часто называется шифром сдвига Цезаря или просто шифром Цезаря.
Рис. 3 Шифр Цезаря, примененный к короткому сообщению. Шифр Цезаря основан на шифралфавите, который сдвинут на определенное число позиций (в данном случае — на три) относительно алфавита открытого текста. В криптографии принято записывать алфавит открытого текста строчными буквами, а шифралфавит — заглавными. Точно так же, исходное сообщение, то есть незашифрованный текст, записывается строчными буквами, а зашифрованное сообщение, то есть шифртекст, — заглавными.
Шифр — это обобщенное название, даваемое любой криптографической замене, при которой каждая буква заменяется другой буквой или символом.
Хотя Светоний упоминает только о шифре Цезаря со сдвигом на три позиции, ясно, что осуществляя сдвиг на 1…25 позиций[6], можно создать 25 различных шифров. Если же мы не будем ограничиваться сдвигом алфавита, а будем рассматривать шифралфавит как любую возможную перестановку букв алфавита открытого текста, то мы сможем создать гораздо большее количество различных шифров. Существует свыше 400 000 000 000 000 000 000 000 000 таких перестановок и, соответственно, такое же количество отличающихся шифров.
К каждому отдельному шифру применимы понятия общего метода шифрования, известные как алгоритм и ключ, которые определяют детали конкретного способа шифрования. В этом случае алгоритм заключается в замене каждой буквы в алфавите открытого текста буквой из шифралфавита, причем шифралфавит может представлять собой любую возможную перестановку алфавита открытого текста. Ключ же определяет, какой именно шифралфавит используется для конкретного способа шифрования. Связь между алгоритмом и ключом показана на рисунке 4.