- •Современные симметричные криптоалгоритмы
- •1.1. Базовые требования к симметричным шифрам
- •1.2. Упрощенная модель
- •1.3. Поточные шифры
- •1.4. Блочные шифры
- •1.5. Сеть Фейстеля
- •1.6.2. Основные характеристики и структура алгоритма
- •1.6.3. Алгоритм разворачивания ключа
- •1.6.4. Стойкость алгоритма des
- •1.7.2. Режим ecb (Electronic Code Book)
- •1.7.3. Режим cbc (Cipher Block Chaining)
- •Библиографический список
1.6.3. Алгоритм разворачивания ключа
Смысл разворачивания ключа заключается в том, чтобы сформировать 16 раундовых ключей.
Алгоритм
разворачивания ключа. На входе задается
64-битный ключ
.
На выходе получаем шестнадцать 48-битных
ключей
,
1 i 16.
Этап 1. T PC1(K). Выполняем перестановку PC1 из табл. 1.4 и представляем T как две 28-битовые части (C0, D0), т. е. C0 = k57k49...k36, D0 = k63k55...k4..
Перестановка PC1 имеет 64 входа и 56 выходов. Таким образом, кроме своей непосредственной функции, т. е. перемешивания битов ключа, она еще отбрасывает каждый 8-й бит из входного ключа. В дальнейшем эти 8 отброшенных битов никак не используются в алгоритме, более того их использование никак не лимитировано стандартом [7].
Таблица 1.4
Таблицы для выбора бит (permuted choice 1, permuted choice 2)
|
|
PC1 |
|
PC2 |
|||||||||||
|
|
57 |
49 |
41 |
33 |
25 |
17 |
9 |
|
14 |
17 |
11 |
24 |
1 |
5 |
|
|
1 |
58 |
50 |
42 |
34 |
26 |
18 |
|
3 |
28 |
15 |
6 |
21 |
10 |
|
|
10 |
2 |
59 |
51 |
43 |
35 |
27 |
|
23 |
19 |
12 |
4 |
26 |
8 |
|
|
19 |
11 |
3 |
60 |
52 |
44 |
36 |
|
16 |
7 |
27 |
20 |
13 |
2 |
|
|
сверху для Ci; снизу для Di |
|
41 |
52 |
31 |
37 |
47 |
55 |
||||||
|
|
63 |
55 |
47 |
39 |
31 |
23 |
15 |
|
30 |
40 |
51 |
45 |
33 |
48 |
|
|
7 |
62 |
54 |
46 |
38 |
30 |
22 |
|
44 |
49 |
39 |
56 |
34 |
53 |
|
|
14 |
6 |
61 |
53 |
45 |
37 |
29 |
|
46 |
42 |
50 |
36 |
29 |
32 |
|
|
21 |
13 |
5 |
28 |
20 |
12 |
4 |
|
|
|
|
|
|
|
Этап 2. Для каждого
i
(1 i 16)
вычисляем величины
следующим образом
.
Эти значения задают количество битов, на которое будут вращаться влево 28-битовые блоки.
Этап 3. Для каждого i (1 i 16) вычисляем Ki следующим образом:
,
,
Ki PC2(Ci, Di),
где
обозначает циклический сдвиг (вращение)
битовой строки
и битовой строки Di–1
влево на
позиций. Полученные значения
и
объединяются в 56-битное значение, к
которому применяется сжимающая
перестановка PC2
из таблицы 1.4, т. е.
Ki PC2(Ci, Di), i = 1, 2, …, 16.
Результатом данной перестановки и будет являться раундовый ключ шифрования Ki. Сочетание циклического сдвига и сжимающей перестановки приводит к тому, что в каждом из ключей раундов используется уникальный набор битов основного ключа шифрования.
