Под симметричными криптосистемами понимаются такие системы, в которых для шифрования и расшифровки сообщений используется один и тот же ключ (рис. 9.1).
Все многообразие симметричных систем основывается на следующих базовых классах:
- моно- и многоалфавитные подстановки;
- перестановки;
- блочные шифры;
- гаммирование.
Рис. 5.1
Подстановки
В прямых подстановках каждый знак исходного текста заменяется одним или несколькими знаками. Одним из важных подклассов прямых подстановок являются моноалфавитные подстановки, в которых устанавливается взаимнооднозначное соответствие между знаком ei исходного алфавита и соответствующим знаком сj зашифрованного текста. Все методы моноалфавитной подстановки можно представить как числовые преобразования букв исходного текста, рассматриваемых как числа, по следующей формуле:
c ≡ (a*e +s) mod K , (5.1)
где a – десятичный коэффициент; s – коэффициент сдвига; e – код буквы исходного текста; c – код зашифрованной буквы; K – длина алфавита; mod – операция вычисления остатка от деления выражения в скобках на модуль К.
Пример. Шифр Цезаря
Рассмотрим шифрование на алфавите, состоящим и 26 латинских букв и знака пробела (пробел будем изображать знаком #). Знаку # присвоим код 0, букве A – код 1, B – код 2,… букве Z – код 26.
Исходное сообщение: WE#NEED#SNOW
Возьмем следующие параметры: a = 1 s = 2 K = 27
Формула для шифрования примет вид
c ≡ (e + 2) mod 27 (5.2)
Входной алфавит:
# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Выходной алфавит
B C D E F G H I J K L M N O P Q R S T U V W X Y Z # A
(Буквы сдвигаются на две позиции: A-C B-D и т.д.)
Тогда исходное сообщение в зашифрованном виде будет выглядеть так:
YGBPGGFBUPQY
Для расшифровки (для случая, когда a=1) используется следующая формула
e ≡ (K+ c - s) mod K (5.3)
Простая многоалфавитная подстановка последовательно и циклически меняет используемые алфавиты (в предыдущем случае для шифрования использовался один алфавит). При m-алфавитной подстановке знак a1 из исходного сообщения заменяется знаком из алфавита B1, знак a2 - знаком из алфавита B2, … знак am - знаком из алфавита Bm, знак am+1 - знаком из алфавита B1 и т.д. Эффект использования многоалфавитной подстановки состоит в том, что обеспечивается маскировка частотной статистики исходного языка, так как конкретный знак из алфавита А преобразуется в несколько различных знаков шифровального алфавита В.
Пример
Исходное сообщение: WE#NEED#SNOW
Ключ: SECURITYSECU
В качестве ключа выбрано слово SECURITY. Слово записывается под исходным сообщением, когда буквы ключа исчерпываются, начинаем повторять слово, пока не закончатся буквы исходного сообщения. Каждая буква ключа (точнее ее код) будет задавать сдвижку в исходном алфавите для получения зашифрованного символа. В качестве алфавита используем латинские буквы и знак # вместо пробела.
Исходный ключ Шифр
Текст
(W + S) mod 27 = (23 + 19) mod 27 = 15→O
(E + E) mod 27 = (5 + 5) mod 27 = 10 → J
(# + C) mod 27 = (0 + 3) mod 27 = 3 → C
…
Задание
Предлагаем в качестве упражнения составить шифровку до конца.
Перестановки
Знаки исходного текста можно переставлять в соответствии с определенным правилом.
Пример 1. Линейная перестановка
Пусть необходимо зашифровать следующий текст:
ГРУЗИТЕ#АПЕЛЬСИНЫ#БОЧКАХ
Разобьем текст на группы длиной, например по 4 символа:
ГРУЗ ИТЕ# АПЕЛ ЬСИН Ы#БО ЧКАХ
Зададим следующее правило перестановки: “переставить группировки из четырех букв, находящихся в порядке 1-2-3-4 в порядок 3-1-4-2”.
Получим следующий зашифрованный текст:
УГРЗ ЕИ#Т ЕАЛП ИЬНС БЫО# АЧХК
Замечание
Если длина сообщения не кратна длине группы, то последнюю группу дополняем символами (например, пробелами) до нужной длины.
Запись исходного текста и последующее считывание шифротекста можно производить по разным путям некоторой геометрической фигуры, например, квадрата или прямоугольника.
Пример 2. Решетка Кардано
Решетка Кардано – это прямоугольная карточка с отверстиями, чаще квадратная, которая при наложении на лист бумаги оставляет открытыми лишь некоторые его части. Число строк и столбцов четно. Карточка сделана так, что при ее последовательном повороте каждая клетка лежащего под ним листа будет занятой. Если решетка квадратная, то можно последовательно поворачивать ее вокруг центра квадрата на 90°.
1 2
3 4
Задание
Пусть имеется следующая решетка.
Шифровка:
ВАВОЧС МУНОТИ МЫЖРОЕ ЬУХСОЙ МДОСТО ЯАСНТВ
Расшифровать сообщение, вращая решетку по часовой стрелке на 90°. Сообщение впишите в квадрат по строкам.
Методы подстановок и перестановок по отдельности не обеспечивают необходимую криптостойкость. Поэтому их используют совместно, а также также аддитивным методом. При шифровании аддитивным методом в начале исходный текст шифруют методом подстановки, преобразуя каждую букву в число, а затем к каждому числу добавляют секретную гамму (см. далее) – псевдослучайную числовую последовательность.
Блочные шифры
Блочные шифры представляют собой семейство обратимых преобразований блоков (частей фиксированной длины) исходного текста.
Под N-разрядным блоком будем понимать последовательность из нулей и единиц длины N:
x = (x0 , x1 , …xN-1) . (5.5)
x в Z2, N можно интерпретировать как вектор и как двоичное представление целого числа
(5.6)
Под блочным шифром будем понимать элемент
Где x = (x0 , x1 , …xN-1), y = (y0 , y1 , …yN-1)
Хотя блочные шифры являются частным случаем подстановок, их следует рассматривать особо, поскольку, во-первых, большинство симметричных шифров, используемых в системах передачи данных, являются блочными, и, во-вторых, блочные шифры удобнее описывать в алгоритмическом виде, а не как обычные подстановки.
Потоковые шифры
Потоковые шифры представляют собой разновидность гаммирования и преобразуют открытый текст в шифрованный последовательно по одному биту. Генератор ключевой последовательности, иногда называемой генератором бегущего ключа, выдает последовательность бит k1, k2 , … kN. Эта ключевая последовательность складывается по модулю 2 (“исключающее или”) с последовательностью бит исходного текста e1, e2 , …, eN:
(5.7)
На приемной стороне шифрованный текст складывается по модулю 2 с идентичной ключевой последовательностью для получения исходного текста:
(5.8)
Стойкость системы целиком зависит от внутренней структуры генератора ключевой последовательности. Если генератор выдает последовательность с небольшим периодом, то стойкость системы невелика. Напротив, если генератор будет выдавать бесконечную последовательность истинно случайных бит, то получим одноразовый блокнот с идеальной стойкостью.
Потоковые шифры наиболее пригодны для шифрования непрерывных потоков данных, например, в сетях передачи данных.