А.Винокуров. Серия "Энциклопедия блочных шифров".
В алгоритме 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 | x1 |
4742 | 4639 | 4545 | 4432 | 4355 | 4251 |
73 | 828 | 915 | 106 | 1121 | 1210 | x2 |
4153 | 4028 | 3941 | 3850 | 3735 | 3646 |
1323 | 1419 | 1512 | 164 | 1726 | 188 | x3 |
3533 | 3437 | 3344 | 3252 | 3130 | 3048 |
1916 | 207 | 2127 | 2220 | 2313 | 242 | x4 |
2940 | 2849 | 2729 | 2636 | 2543 | 2454 |
2541 | 2652 | 2731 | 2837 | 2947 | 3055 | x5 |
2315 | 224 | 2125 | 2019 | 199 | 181 |
3130 | 3240 | 3351 | 3445 | 3533 | 3648 | x6 |
1726 | 1616 | 155 | 1411 | 1323 | 128 |
3744 | 3849 | 3939 | 4056 | 4134 | 4253 | x7 |
1112 | 107 | 917 | 80 | 722 | 63 |
4346 | 4442 | 4550 | 4636 | 4729 | 4832 | x8 |
510 | 414 | 36 | 220 | 127 | 024 |
Нумерация битов в оригинале DES |
Нумерация битов в Intel x86 |
[Список алгоритмов] [Основные характеристики] [Структура алгоритма] [Битовые перестановки] [Функция шифрования] [Узлы замен] [Ключевые элементы] [Историческая справка]
[Начало осмотра] [Что нового] [Статьи] [Выпуски в "Байтах"] [Что скачать] [Криптоалгоритмы] [Глоссарий] [Ссылки] [Гостевая книга] [Форум] [Напиши мне]
Подготовлено 24.02.01. (c) 2001 Андрей Винокуров.