А.Винокуров. Серия "Энциклопедия блочных шифров".
В алгоритме DES ключевые элементы вырабатываются из ключа с использованием сдвигов и битовых выборок-перестановок. Таким образом, – и это очень важно, – ключевые элементы состоят исключительно из битов исходного ключа, "перетасованных" в различном порядке. Ключ имеет размер 64 бита, однако реально для выработки ключевых элементов используются только 56 из них. Самые младшие биты каждого байта ключа (NN8,16,…,64 или NN0,8,…,56 в x86) не попадают в ключевые элементы и служат исключительно для контроля четности – требуется, чтобы сумма битов каждого байта ключа была нечетной. Функциональная схема выработки ключевых элементов из ключа изображена на рисунке 5, а схема соответствующего алгоритма – на рисунке 6.
![]()
Рис. 5. Функциональная схема выработки ключевых элементов DES.
![]()
Рис. 6. Схема алгоритма выработки ключевых элементов.
Выработка ключевых элементов из ключа (K, рис 6, шаг 0) начинается со входной выборки-перестановки битов (PC1, шаг 1) которая отбирает 56 из 64 битов ключа и располагает их в другом порядке. Далее полученный блок данных разделяется на две 28-битовые части: старшую (С0) и младшую (D0, шаг 2). Далее 16 раз выполняется следующая процедура: в зависимости от номера итерации обе части циклически сдвигаются на 1 или 2 бита влево (шаг 3), из полученных блоков с помощью выходной битовой выборки-перестановки (PC2, шаг 4) отбираются 48 битов, которые и формируют очередной ключевой элемент.
Ниже приведены основные "примитивы" схемы выработки ключевых элементов:
C0 |
C0 | |||||||||||||
157 | 249 | 341 | 433 | 525 | 617 | 79 |
|
557 | 5415 | 5323 | 5231 | 5139 | 5047 | 4955 |
81 | 958 | 1050 | 1142 | 1234 | 1326 | 1418 | 4863 | 476 | 4614 | 4522 | 4430 | 4338 | 4246 | |
1510 | 162 | 1759 | 1851 | 1943 | 2035 | 2127 | 4154 | 4062 | 395 | 3813 | 3721 | 3629 | 3537 | |
2219 | 2311 | 243 | 2560 | 2652 | 2744 | 2836 | 3445 | 3353 | 3261 | 314 | 3012 | 2920 | 2828 | |
D0 | D0 | |||||||||||||
2963 | 3055 | 3147 | 3239 | 3331 | 3423 | 3515 | 271 | 269 | 2517 | 2425 | 2333 | 2241 | 2149 | |
367 | 3762 | 3854 | 3946 | 4038 | 4130 | 4222 | 2057 | 192 | 1810 | 1718 | 1626 | 1534 | 1442 | |
4314 | 446 | 4561 | 4653 | 4745 | 4837 | 4829 | 1350 | 1258 | 113 | 1011 | 919 | 827 | 735 | |
5021 | 5113 | 525 | 5328 | 5420 | 5512 | 564 |
|
643 | 551 | 459 | 336 | 244 | 152 | 060 |
Нумерация битов в оригинале DES |
Нумерация битов в Intel x86 |
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
pi |
1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
114 | 217 | 311 | 424 | 51 | 65 |
|
4742 | 4639 | 4545 | 4432 | 4355 | 4251 |
73 | 828 | 915 | 106 | 1121 | 1210 |
|
4153 | 4028 | 3941 | 3850 | 3735 | 3646 |
1323 | 1419 | 1512 | 164 | 1726 | 188 |
|
3533 | 3437 | 3344 | 3252 | 3130 | 3048 |
1916 | 207 | 2127 | 2220 | 2313 | 242 |
|
2940 | 2849 | 2729 | 2636 | 2543 | 2454 |
2541 | 2652 | 2731 | 2837 | 2947 | 3055 |
|
2315 | 224 | 2125 | 2019 | 199 | 181 |
3130 | 3240 | 3351 | 3445 | 3533 | 3648 |
|
1726 | 1616 | 155 | 1411 | 1323 | 128 |
3744 | 3849 | 3939 | 4056 | 4134 | 4253 |
|
1112 | 107 | 917 | 80 | 722 | 63 |
4346 | 4442 | 4550 | 4636 | 4729 | 4832 |
|
510 | 414 | 36 | 220 | 127 | 024 |
Нумерация битов в оригинале DES |
Нумерация битов в Intel x86 |
[Список алгоритмов] [Основные характеристики] [Структура алгоритма] [Битовые перестановки] [Функция шифрования] [Узлы замен] [Ключевые элементы] [Историческая справка]
[Начало осмотра] [Что нового] [Статьи] [Выпуски в "Байтах"] [Что скачать] [Криптоалгоритмы] [Глоссарий] [Ссылки] [Гостевая книга] [Форум] [Напиши мне]
Подготовлено 24.02.01. (c) 2001 Андрей Винокуров.