Процедура формирования подключей
Рис. 18.8. Формирование подключей |
На каждом цикле (рис. 18.8) из ключа X длиной 56бит формируется ключ Xi размером 48 бит. Сам ключ X размещается в восьмибайтовом слове, причем восьмые разряды каждого байта являются контрольными и в ключ не входят. Перед шифрованием, в соответствии с процедурой выбора PC1 (табл. 18.2), из X выбираются 56 бит, которыми заполняются два регистра (C и D) длиной 28 бит каждый. В дальнейшем, при входе в очередной цикл с номером i, регистры сдвигаются циклически влево. Величина сдвига зависит от номера цикла, ноявляется фиксированной и заранее известна. После сдвига оба подблока объединяются в порядке (C, D). Затем, в соответствии с функцией выбора PC2 (табл. 18.3), из них выбираются 48 бит подключа Xi. Шифрование и расшифровывание отличаются направлением сдвигов (табл. 18.4).
Таблица 18.2. Преобразование PC1
Заполнение С | Заполнение D | ||||||||||||
Таблица 18.3. Преобразование PC2
Выбор битов по таблицам 18.2–18.4 из соответствующих блоков производится следующим образом. Таблица рассматривается как последовательность ее строк, записанных друг за другом, начиная с первой строки. Биты блока данных соответствующей длины нумеруются слева направо, начиная с единицы. Каждый элемент s таблицы рассматривается, как номер бита bs в блоке данных. Преобразование заключается в замене всех элементов s на биты bs.
Таблица 18.4. Соответствие сдвигов номерам циклов DES
Номер цикла | ||||||||||||||||
Сдвиг влево (шифрование) | ||||||||||||||||
Сдвиг вправо (расшифровывание) |
Цикловая функция производит следующие действия.
1. Расширение блока Ri-1 до 48 бит за счет повторения битов блока с помощью функции расширения EP (табл. 18.5).
2. Поразрядное сложение результата с ключомXi.
3. Преобразование полученной суммы с помощью замены (используя так называемые S-блоки), в результате которого получается блок длиной 32 бит.
4. Применение перестановки P (табл. 18.6), что дает значение функции
Y = f(R,X).
Таблица 18.5. Преобразование EP Таблица 18.6. Перестановка P