Дополнительный материал DES
В этой статье подробно описаны различные таблицы , на которые ссылаются в стандарта шифрования данных (DES) блочном шифре .
все биты и байты расположены в порядке обратного байта В этом документе . То есть бит номер 1 всегда является самым старшим битом.
Начальная перестановка (ИП) [ править ]

58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
Эта таблица определяет входную перестановку в 64-битном блоке. Смысл следующий: первый бит вывода берется из 58-го бита входа; второй бит из 50-го бита и так далее, причем последний бит вывода берется из 7-го бита входа.
Эта информация представлена в виде таблицы для удобства представления; это вектор, а не матрица.
Окончательная перестановка (IP −1 ) [ редактировать ]

40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 |
39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 |
37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 |
35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 |
33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
Последняя перестановка является обратной исходной перестановке; таблица интерпретируется аналогично.
Функция расширения (E) [ править ]

32 | 1 | 2 | 3 | 4 | 5 |
4 | 5 | 6 | 7 | 8 | 9 |
8 | 9 | 10 | 11 | 12 | 13 |
12 | 13 | 14 | 15 | 16 | 17 |
16 | 17 | 18 | 19 | 20 | 21 |
20 | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 |
28 | 29 | 30 | 31 | 32 | 1 |
Функция разложения интерпретируется как для начальной, так и для конечной перестановки. Обратите внимание, что некоторые биты входа дублируются на выходе; например, пятый бит ввода дублируется как в шестом, так и в восьмом битах вывода. Таким образом, 32-битный полублок расширяется до 48 бит.
Перестановка (P) [ править ]

16 | 7 | 20 | 21 | 29 | 12 | 28 | 17 |
1 | 15 | 23 | 26 | 5 | 18 | 31 | 10 |
2 | 8 | 24 | 14 | 32 | 27 | 3 | 9 |
19 | 13 | 30 | 6 | 22 | 11 | 4 | 25 |
Перестановка P перемешивает биты 32-битного полублока.
Перестановочный выбор 1 (ПК-1) [ править ]

|
|
«Левая» и «Правая» половины таблицы показывают, какие биты входного ключа образуют левую и правую части состояния расписания ключей. Обратите внимание, что выбраны только 56 бит из 64 бит ввода; остальные восемь (8, 16, 24, 32, 40, 48, 56, 64) были указаны для использования в качестве битов четности .
Перестановочный выбор 2 (ПК-2) [ править ]

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 |
Эта перестановка выбирает 48-битный подраздел для каждого раунда из 56-битного состояния расписания ключей. Эта перестановка будет игнорировать 8 бит ниже:
Перестановочный выбор 2 «ПК-2» игнорирует биты 9, 18, 22, 25, 35, 38, 43, 54.
Коробки замены (S-boxes) [ править ]
С 1 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0yyyy0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
0yyyy1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
1гггг0 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
1гггг1 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 |
SS2 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 15 | 1 | 8 | 14 | 6 | 11 | 3 | 4 | 9 | 7 | 2 | 13 | 12 | 0 | 5 | 10 |
0yyyy1 | 3 | 13 | 4 | 7 | 15 | 2 | 8 | 14 | 12 | 0 | 1 | 10 | 6 | 9 | 11 | 5 |
1гггг0 | 0 | 14 | 7 | 11 | 10 | 4 | 13 | 1 | 5 | 8 | 12 | 6 | 9 | 3 | 2 | 15 |
1гггг1 | 13 | 8 | 10 | 1 | 3 | 15 | 4 | 2 | 11 | 6 | 7 | 12 | 0 | 5 | 14 | 9 |
С 3 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 10 | 0 | 9 | 14 | 6 | 3 | 15 | 5 | 1 | 13 | 12 | 7 | 11 | 4 | 2 | 8 |
0yyyy1 | 13 | 7 | 0 | 9 | 3 | 4 | 6 | 10 | 2 | 8 | 5 | 14 | 12 | 11 | 15 | 1 |
1гггг0 | 13 | 6 | 4 | 9 | 8 | 15 | 3 | 0 | 11 | 1 | 2 | 12 | 5 | 10 | 14 | 7 |
1гггг1 | 1 | 10 | 13 | 0 | 6 | 9 | 8 | 7 | 4 | 15 | 14 | 3 | 11 | 5 | 2 | 12 |
С 4 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 7 | 13 | 14 | 3 | 0 | 6 | 9 | 10 | 1 | 2 | 8 | 5 | 11 | 12 | 4 | 15 |
0yyyy1 | 13 | 8 | 11 | 5 | 6 | 15 | 0 | 3 | 4 | 7 | 2 | 12 | 1 | 10 | 14 | 9 |
1гггг0 | 10 | 6 | 9 | 0 | 12 | 11 | 7 | 13 | 15 | 1 | 3 | 14 | 5 | 2 | 8 | 4 |
1гггг1 | 3 | 15 | 0 | 6 | 10 | 1 | 13 | 8 | 9 | 4 | 5 | 11 | 12 | 7 | 2 | 14 |
С 5 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 2 | 12 | 4 | 1 | 7 | 10 | 11 | 6 | 8 | 5 | 3 | 15 | 13 | 0 | 14 | 9 |
0yyyy1 | 14 | 11 | 2 | 12 | 4 | 7 | 13 | 1 | 5 | 0 | 15 | 10 | 3 | 9 | 8 | 6 |
1гггг0 | 4 | 2 | 1 | 11 | 10 | 13 | 7 | 8 | 15 | 9 | 12 | 5 | 6 | 3 | 0 | 14 |
1гггг1 | 11 | 8 | 12 | 7 | 1 | 14 | 2 | 13 | 6 | 15 | 0 | 9 | 10 | 4 | 5 | 3 |
SS6 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 12 | 1 | 10 | 15 | 9 | 2 | 6 | 8 | 0 | 13 | 3 | 4 | 14 | 7 | 5 | 11 |
0yyyy1 | 10 | 15 | 4 | 2 | 7 | 12 | 9 | 5 | 6 | 1 | 13 | 14 | 0 | 11 | 3 | 8 |
1гггг0 | 9 | 14 | 15 | 5 | 2 | 8 | 12 | 3 | 7 | 0 | 4 | 10 | 1 | 13 | 11 | 6 |
1гггг1 | 4 | 3 | 2 | 12 | 9 | 5 | 15 | 10 | 11 | 14 | 1 | 7 | 6 | 0 | 8 | 13 |
SS7 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 4 | 11 | 2 | 14 | 15 | 0 | 8 | 13 | 3 | 12 | 9 | 7 | 5 | 10 | 6 | 1 |
0yyyy1 | 13 | 0 | 11 | 7 | 4 | 9 | 1 | 10 | 14 | 3 | 5 | 12 | 2 | 15 | 8 | 6 |
1гггг0 | 1 | 4 | 11 | 13 | 12 | 3 | 7 | 14 | 10 | 15 | 6 | 8 | 0 | 5 | 9 | 2 |
1гггг1 | 6 | 11 | 13 | 8 | 1 | 4 | 10 | 7 | 9 | 5 | 0 | 15 | 14 | 2 | 3 | 12 |
С 8 | х0000х | х0001x | х0010x | x0011x | x0100x | x0101x | x0110x | x0111x | х1000х | х1001х | х1010х | х1011x | х1100х | х1101x | х1110х | х1111x |
0yyyy0 | 13 | 2 | 8 | 4 | 6 | 15 | 11 | 1 | 10 | 9 | 3 | 14 | 5 | 0 | 12 | 7 |
0yyyy1 | 1 | 15 | 13 | 8 | 10 | 3 | 7 | 4 | 12 | 5 | 6 | 11 | 0 | 14 | 9 | 2 |
1гггг0 | 7 | 11 | 4 | 1 | 9 | 12 | 14 | 2 | 0 | 6 | 10 | 13 | 15 | 3 | 5 | 8 |
1гггг1 | 2 | 1 | 14 | 7 | 4 | 10 | 8 | 13 | 15 | 12 | 9 | 0 | 3 | 5 | 6 | 11 |
В этой таблице перечислены восемь S-блоков, используемых в DES. Каждый S-блок заменяет 6-битный вход 4-битным выходом. Учитывая 6-битный вход, 4-битный выход находится путем выбора строки, используя два внешних бита, и столбца, используя внутренние четыре бита. Например, вход « 0 1101 1 » имеет внешние биты « 01 » и внутренние биты «1101»; учитывая, что первая строка равна «00», а первый столбец — «0000», соответствующий выходной сигнал для S-блока S 5 будет «1001» (=9), значением во второй строке, 14-м столбце. (См. S-блок ).
Генерация ключей [ править ]
Основной ключ, предоставляемый пользователем, имеет длину 64 бита. С ним выполняются следующие операции.
Отбросить биты четности [ править ]
Отбросьте биты серых позиций (8x), чтобы освободить 56-битное пространство для дальнейшей работы для каждого раунда.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 |
После этого биты переставляются согласно следующей таблице:
Таблица является основной строкой, что означает,
Фактическая позиция бита = замена битом строки * 8 + столбца .
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
0 | 57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
1 | 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
2 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
3 | 60 | 52 | 44 | 36 | 63 | 55 | 47 | 39 |
4 | 31 | 23 | 15 | 7 | 62 | 54 | 46 | 38 |
5 | 30 | 22 | 14 | 6 | 61 | 53 | 45 | 37 |
6 | 29 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
Ротация битов [ править ]
Прежде чем будет выбран круглый подключ, каждая половина состояния ключевого расписания повернута влево на несколько мест. В этой таблице указано количество повернутых мест.
• Ключ разделен на две 28-битные части.
• Каждая часть сдвигается влево (по кругу) на один или два бита.
• После сдвига две части затем объединяются, чтобы снова сформировать 56-битный временный ключ.
Количество раундов | 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 |
Сжатие клавиш [ править ]
• P-box сжатия заменяет 56-битный ключ на 48-битный ключ, который используется в качестве ключа для соответствующего раунда.
Таблица является основной строкой, что означает,
Фактическая позиция бита = замена битом строки * 8 + столбца .
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
1 | 14 | 17 | 11 | 24 | 01 | 05 | 03 | 28 |
2 | 15 | 06 | 21 | 10 | 23 | 19 | 12 | 04 |
3 | 26 | 08 | 16 | 07 | 27 | 20 | 13 | 02 |
4 | 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 |
5 | 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 |
6 | 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
После этого верните 48-битный ключ Round-Key вызываемой функции, т.е. Round.
Ссылки [ править ]
- Стандарт шифрования данных (DES) (PDF) . Национальный институт стандартов и технологий (NIST). 25 октября 1999 г. ФИПС ПУБ 46-3.