Процедура формирования подключей
Рис. 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 | |||||||||||||||||||||||||
57 | 49 | 41 | 33 | 25 | 17 | 9 | 63 | 55 | 47 | 39 | 31 | 23 | 15 | ||||||||||||||
1 | 58 | 50 | 42 | 34 | 26 | 18 | 7 | 62 | 54 | 46 | 38 | 30 | 22 | ||||||||||||||
10 | 2 | 59 | 51 | 43 | 35 | 27 | 14 | 6 | 61 | 53 | 45 | 37 | 29 | ||||||||||||||
19 | 11 | 3 | 60 | 52 | 44 | 36 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
Таблица 18.3.
Преобразование PC2
14 | 17 | 11 | 24 | 1 | 5 | 3 | 28 | ||||||||
15 | 6 | 21 | 10 | 23 | 19 | 12 | 4 | ||||||||
26 | 8 | 16 | 7 | 27 | 20 | 13 | 2 | ||||||||
41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 | ||||||||
51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 | ||||||||
34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
Выбор битов по таблицам 18.2–18.4 из соответствующих блоков производится следующим образом. Таблица рассматривается как последовательность ее строк, записанных друг за другом, начиная с первой строки. Биты блока данных соответствующей длины нумеруются слева направо, начиная с единицы. Каждый элемент s таблицы рассматривается, как номер бита bs в блоке данных. Преобразование заключается в замене всех элементов s на биты bs.
Таблица 18.4.
Соответствие сдвигов номерам циклов DES
Номер цикла |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
Сдвиг влево (шифрование) |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
Сдвиг вправо (расшифровывание) |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
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
32 |
1 |
2 |
3 |
4 |
5 |
16 |
7 |
20 |
21 |
29 |
12 |
28 |
17 |
|
4 |
5 |
6 |
7 |
8 |
9 |
1 |
15 |
23 |
26 |
5 |
18 |
31 |
10 |
|
8 |
9 |
10 |
11 |
12 |
13 |
2 |
8 |
24 |
14 |
32 |
27 |
3 |
9 |
|
12 |
13 |
14 |
15 |
16 |
17 |
19 |
13 |
30 |
6 |
22 |
11 |
4 |
25 |
|
16 |
17 |
18 |
19 |
20 |
21 |
|||||||||
20 |
21 |
22 |
23 |
24 |
25 |
|||||||||
24 |
25 |
26 |
27 |
28 |
29 |
|||||||||
28 |
29 |
30 |
31 |
32 |
1 |