Необходимость передачи секретной информации побудила человечество к изобретению различных способов её сокрытия.
Самый простой способ заключался в том, чтобы надёжно замаскировать сообщение. Например, при переписке текст секретного сообщения писали между строк невидимыми чернилами, которые становились видимыми при нагревании или определённой химической обработке.
Так возникла стеганография – набор средств и методов сокрытия факта передачи сообщения.
Другая идея заключалась в том, чтобы сам факт передачи сообщения не скрывать, но каким-то образом сделать его содержание непонятным для непосвящённого читателя. При этом получатель такого сообщения должен иметь возможность восстановить исходное сообщение.
Наука о способах преобразования информации с целью её защиты получила название криптография.
Процесс изменения исходного сообщения в непонятную для соперника форму называется шифрованием, а обратный процесс восстановления исходного сообщения по криптотексту – дешифровкой. Набор правил, по которым происходит преобразование текста, описывают алгоритмы шифрования и дешифрования. Поскольку, как правило, передача зашифрованного сообщения происходит по открытому каналу связи, то принято считать, что сопернику всегда удаётся перехватить криптотекст, и, следовательно, существует возможность, что он сможет разгадать шифр.
Поэтому алгоритм шифрования должен быть настолько надёжным, чтобы время, потраченное соперником на поиск содержания зашифрованного сообщения, было больше времени актуальности этого сообщения.
Как правило, в алгоритме шифрования можно выделить некоторые переменные параметры, которые называются ключом алгоритма. О значении ключа отправитель и получатель договариваются заранее или передают его по секретному каналу связи, который соперник не в состоянии подслушать.
Если известен алгоритм шифрования, для нахождения исходного сообщения соперник может воспользоваться методом перебора ключей. Поэтому в надёжном алгоритме шифрования количество ключей должно быть как можно больше. С помощью различных ключей и одного алгоритма шифровки можно организовать секретную переписку отправителя с несколькими получателями.
Первый из них, зная алгоритм дешифровки, но не зная ключ другого получателя, не сможет дешифровать предназначенные для другого сообщения, и наоборот.
Описанный способ шифрования получил название симметричного шифрования и применялся до конца XX века.
Шифр скитала
Первым упоминанием о симметричном шифровании считается использование древней Спартой шифра скитала во время Пелопоннесской войны с Афинами. Скитала – деревянный цилиндрический валик, на который плотно по спирали наматывали узкую ленту пергамента или кожи.
Сообщение писали вдоль поверхности так, чтобы на ленте было по одной букве. Затем ленту разматывали и получали на ней последовательность букв, которая на первый взгляд выглядела бессмысленной. Чтобы прочитать зашифрованное сообщение, необходимо было снова намотать ленту на валик такого же диаметра. Хотя метод шифрования был известен противнику, без знания точного размера скитала дешифровать сообщение было сложно. Таким образом, диаметр скитала можно считать ключом такого способа шифрования.
Если на один оборот скитала вмещается 3 буквы, то процесс шифрования шифром скитала сообщения можно представить как процесс заполнения таблицы с 3 строками.
Для получения зашифрованного сообщения
В ПАРАЛЛЕЛОГРАММЕ ПРОТИВОЛЕЖАЩИЕ УГЛЫ РАВНЫ
таблицу нужно прочитать слева направо по колонкам. Тогда криптотекст имеет такой вид:
ВМАПМЩАЕИРПЕАРУЛОГЛТЛЕИЫЛВРООАГЛВРЕНАЖЫ
Рассматривая исходное и зашифрованное сообщения, можно заметить, что ни количество букв, ни сами буквы исходного сообщения не изменились, а лишь размещаются в другом порядке. Такой способ шифрования называется шифрованием перестановкой.
Шифр Кардано
Другим примером шифрования перестановкой является способ шифрования, изобретённый итальянским математиком Джироламо Кардано (1501-1571). Для некоторого чётного числа k в квадрате размером k × k отметим четвёртую часть его клеток таким образом, чтобы при вращении квадрата вокруг центра на 90°, 180° и 270°, и отмеченные клетки не совмещались. Пример разметки для квадрата размером приведен на рис. 3.
Если изготовить такой квадрат из картона и прорезать в отмеченных клетках окошки, получим трафарет, называемый решёткой Кардано.
Процедура шифрования k2сообщения длиной до символов занимает 4 шага. На первом шаге накладываем решётку на чистый квадрат и вписываем в ячейки, которые придутся на вырезанные окошки, первые k2/4 символов сообщения, начиная с верхней строки. На втором шаге трафарет поворачиваем на 90° по часовой стрелке относительно центра квадрата. Благодаря специальному выбору отмеченных клеток отверстия придутся на новые пустые ячейки. Вписываем следующие k2/4 символов сообщения.
Очередные два оборота в том же направлении дадут новые пустые ячейки, в которые мы впишем третью и четвертую четверти сообщения. Если длина сообщения менее k2 символов, то в незаполненные клеточки вписываем произвольные буквы, выбранные случайным образом. Записав последовательно буквы, строка за строкой, начиная с первой, получим зашифрованное сообщение.
Для шифрования длинного сообщения его разбивают на блоки по k2 символов. Затем к каждому сообщению применяют описанную выше последовательность действий, сохраняя расположение трафарета и последовательность вращения. Решётка Кардано является ключом такого алгоритма шифрования.
Все клетки квадрата размером k × k разбиваются на k2/4 различных групп, клетки которых переходят друг в друга при вращении. На рис. 4 каждая такая группа квадрата 8 × 8 отмечена своим цветом (чтобы проверить правильность решётки, достаточно наложить её на этот квадрат и убедиться, что нет ячеек одного цвета). Поскольку в каждой группе можно выбрать любую из четырёх ячеек, то согласно основному правилу комбинаторики есть всего 4k2/4 типа решёток Кардано.
Понятно, что не каждая решётка будет пригодна для использования, например, плохой будет решётка, в которой отмеченные клетки находятся рядом в строке или столбце. Для k=8 в [1] указано, что пригодных для шифрования решёток более 4 миллиардов.
Несмотря на «бумажную» природу ключа, его можно представить в виде последовательности цифр. Если отмеченные ячейки обозначить цифрой 1, а остальные клетки – цифрой 0, то каждой строке решётки можно однозначно присвоить двоичное число или соответствующее ему десятичное число. Таким образом, каждая решётка кодируется набором из восьми цифр в диапазоне от 0 до 255. Пример кодирования решётки с рис. 3 изображён на рис. 6.
Проиллюстрируем работу алгоритма, зашифровав сообщение:
ЕСЛИ В ЧЕТЫРЁХУГОЛЬНИКЕ КАЖДЫЕ ДВЕ ПРОТИВОПОЛОЖНЫЕ СТОРОНЫ РАВНЫ, ТО ЭТО – ПАРАЛЛЕЛОГРАММ.
с помощью решётки Кардано с рис. 3.
Наконец, переписав последовательно буквы из строк, получим такой зашифрованный текст:
КЕЯТЖУКНОКЦЩОЕИПОСВТАЖЧНИООРТАДИРЛВОИРНЕЛИОПИРКИРУОГВТРИТНАНЛИИМ
Злата Одрибец, ученица 9 класса ЧП «Учебное заведение «Европейский коллегиум»», г. Киев