А.Винокуров. Серия "Энциклопедия блочных шифров".


DES. Выработка ключевых элементов.

На домашнюю страничку Список алгоритмов Узлы замен Историческая справка


В алгоритме 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 битов, которые и формируют очередной ключевой элемент.

Ниже приведены основные "примитивы" схемы выработки ключевых элементов:

Входная битовая выборка-перестановка (PC1).

C0

 

C0

157249 341433 525617 79

 <-- старший байт -->

5575415 53235231 51395047 4955
819581050 11421234 13261418  4863476 46144522 443043384246
15101621759 18511943 20352127  41544062 3953813 372136293537
22192311243 25602652 27442836  34453353 3261314 301229202828

D0

 

D0

296330553147 32393331 34233515  2712692517 242523332241 2149
36737623854 394640384130 4222  20571921810 171816261534 1442
43144464561 465347454837 4829  13501258113 1011919827 735
50215113525 532854205512 564

 <-- младший байт -->

643551459 336244152 060

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

Количество сдвигов на шагах выработки ключевых элементов ( Rot<sub>pi</sub> ).

i 12 34 56 78 910 1112 1314 1516

pi

11222222 12222221

Выходная битовая выборка-перестановка (PC2).

114217 311424 5165

 <-- x1 -->

47424639 45454432 43554251
73828915 10611211210

 <-- x2 -->

415340283941 385037353646
132314191512 1641726188

 <-- x3 -->

353334373344 325231303048
19162072127 22202313242

 <-- x4 -->

294028492729 263625432454
254126522731 283729473055

 <-- x5 -->

23152242125 2019199181
313032403351 344535333648

 <-- x6 -->

17261616155 14111323128
374438493939 405641344253

 <-- x7 -->

1112107917 8072263
434644424550 463647294832

 <-- x8 -->

51041436 220127024

Нумерация битов в оригинале DES

 

Нумерация битов в Intel x86

На домашнюю страничку Список алгоритмов Узлы замен Историческая справка


[Список алгоритмов] [Основные характеристики] [Структура алгоритма] [Битовые перестановки] [Функция шифрования] [Узлы замен] [Ключевые элементы] [Историческая справка]
 
[Начало осмотра] [Что нового] [Статьи] [Выпуски в "Байтах"] [Что скачать] [Криптоалгоритмы] [Глоссарий] [Ссылки] [Гостевая книга] [Форум] [Напиши мне]

Подготовлено 24.02.01. (c) 2001 Андрей Винокуров.