Принцип работы блочного шифра
Рассмотрим принцип работы блочного шифра. Входом в блочный шифр и результатом его работы является блок длины n — последовательность, состоящая из n бит. Число n постоянно. При необходимости шифрования сообщения длиной, большей n, оно разбивается на блоки, каждый из которых шифруется отдельно. Различные режимы работы связаны с дополнительными усложнениями блочного шифра при переходах от блока к блоку. В стандарте DES длина блока n = 64.
В режиме ECB шифрование блока открытого текста В производится за 16 однотипных итераций, именуемых циклами. Схема преобразования приведена на рис. 1.1. Блок рассматривается как конкатенация (сцепление) двух подблоков равной длины: B = (L, R). На каждом цикле применяется свой ключ (Xi), обычно вырабатываемый из некоторого основного ключа (X). Ключи, используемые в циклах, называются подключами.
Основным элементом шифра является несекретная цикловая функция вида Y = f(R,X). Входом в цикл является выход из предыдущего цикла. Если упомянутыйвход имеет вид (L, R),то выход имеет вид (R, L Å f(R, X)), где Å — поразрядное сложение помодулю 2. Например, длявыхода циклас номером i это означает: Ri = Li-1 Å f(Ri-1, Xi), Li = Ri-1 (i = 1,…,16).
В режиме ЕСВ алгоритм DES зашифровывает 64-битовый блок за 16 циклов. Биты входного блока перед первым циклом переставляются в соответствии с табл. 1.1 в ходе так называемой начальной перестановки (IP — initial permutation). После выхода из последнего цикла L и Rпереставляются местами, после чего соединяются в блок. Биты полученного блока снова переставляются в соответствии с перестановкой IP-1, обратной начальной. Результат принимается в качестве блока шифртекста.
Рис. 1.1 Блок-схема работы алгоритма DES
Таблица 1.1. Начальная перестановка IP
Процедура формирования подключей
![]() |
На каждом цикле (рис. 1.2) из ключа X длиной 56бит формируется ключ Xi размером 48 бит. Сам ключ X размещается в восьмибайтовом слове, причем восьмые разряды каждого байта являются контрольными и в ключ не входят. Перед шифрованием, в соответствии с процедурой выбора PC1 (табл. 1.2), из X выбираются 56 бит, которыми заполняются два регистра (C и D) длиной 28 бит каждый. В дальнейшем, при входе в очередной цикл с номером i, регистры сдвигаются циклически влево. Величина сдвига зависит от номера цикла, ноявляется фиксированной и заранее известна. После сдвига оба подблока объединяются в порядке (C, D). Затем, в соответствии с функцией выбора PC2 (табл. 1.3), из них выбираются 48 бит подключа Xi. Шифрование и расшифровывание отличаются направлением сдвигов (табл. 1.4).
Таблица 1.2 Преобразование PC1
Заполнение С | Заполнение D | ||||||||||||
Таблица 1.3 Преобразование PC2
Выбор битов по таблицам 1.2–1.4 из соответствующих блоков производится следующим образом. Таблица рассматривается как последовательность ее строк, записанных друг за другом, начиная с первой строки. Биты блока данных соответствующей длины нумеруются слева направо, начиная с единицы. Каждый элемент s таблицы рассматривается, как номер бита bs в блоке данных. Преобразование заключается в замене всех элементов s на биты bs.
Таблица 1.4. Соответствие сдвигов номерам циклов DES
Номер цикла | ||||||||||||||||
Сдвиг влево (шифрование) | ||||||||||||||||
Сдвиг вправо (расшифровывание) |
Цикловая функция производит следующие действия.
1. Расширение блока Ri-1 до 48 бит за счет повторения битов блока с помощью функции расширения EP (табл. 1.5).
2. Поразрядное сложение результата с ключомXi.
3. Преобразование полученной суммы с помощью замены (используя так называемые S-блоки), в результате которого получается блок длиной 32 бит.
4. Применение перестановки P (табл. 1.6), что дает значение функции
Y = f(R,X).
Таблица 1.5 Преобразование EP Таблица 1.6 Перестановка P