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


DES. Функция шифрования.

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


Общая характеристика.

В алгоритме DES используется сравнительно простая функция шифрования. Соответствующая схема преобразования данных приведена на рисунке 3, а схема алгоритма – на рисунке 4.

[здесь рисунок]

Рис. 3. Функция шифрования – схема преобразования данных.

[здесь рисунок]

Рис. 4. Функция шифрования – схема алгоритма.

На вход функции шифрования поступает 32-битовая половина шифруемого блока X, и 48-битовый ключевой элемент k (рис. 4, шаг 0). Сначала 32-битовый блок данных расширяется до 48 битов дублированием некоторых двоичных разрядов согласно приведенной ниже таблице (E, шаг 1). Затем полученный расширенный блок побитово суммируется по модулю 2 с ключевым элементом (операция " (+) ", шаг 2). Полученный в результате суммирования 48-битовый блок данных разделяется на восемь 6-битовых элементов данных, обозначенных h1,h2,…,h8 соответственно, причем h1 содержит шесть самых старших битов 48-битового блока, h2 – шесть следующих по старшинству битов и т.д., наконец, h8 – шесть самых младших битов блока. Далее каждое из значений hi преобразуется в новое 4-битовое значение ti с помощью соответствующего узла замен (Si, шаг 3). После этого полученные восемь 4-битовых элементов данных вновь объединяются в 32-битовый блок T' в том же самом порядке их старшинства (шаг 4). Наконец, в полученном 32-битовом блоке выполняется перестановка битов (P, шаг 5), заданная в приведенной ниже таблице. Результат последней операции и является выходным значением функции шифрования.

Расширение 32-битового блока до 48 бит (E).

13221 3243 5465

 <-- h1 -->

4704631 45304429 43284227
748596 107118129

 <-- h2 -->

41284027 39263825 37243623
138 1491510 1611 17121813

 <-- h3 -->

35243423 33223221 31203019
19122013 21142215 23162417

 <-- h4 -->

29202819 27182617 25162415
25162617 27182819 29203021

 <-- h5 -->

23162215 21142013 19121811
31203221 33223423 35243625

 <-- h6 -->

17121611 1510149 138127
37243825 39264027 41284229

 <-- h7 -->

118107 9685 7463
43284429 45304631 4732481

 <-- h8 -->

5443 3221 10031

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

 

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

Данная схема расширения просто дублирует пары битов (32-1, 4-5, 8-9,…,28-29) и может быть представлена следующим выражением:

xi = Lo6(<sub><--</sub>4i+1(X)),

где Lon(X) определено выше, а <sub><--</sub>n(X) обозначает функцию, возвращающую в качестве результата свой аргумент X, циклически сдвинутый на n битов влево (в сторону старших разрядов).

Замена в битовых группах(Si).

Замена 6-битовых блоков на 4-битовые выполняется следующим образом: каждый узел замен представляется таблицей (матрицей) размера 4x16, содержащей 4-битовые элементы, все элементы в каждой из строк – различные. Заменяемое 6-битовое значение разделяется на две части: из старшего и младшего битов блока составляется двухбитовое целое, принимающее значение от 0 до 3, оно используется в качестве номера строки, средние четыре бита интерпретируются как целое число в диапазоне 0..15, они задают номер столбца. Из найденной таким образом ячейки таблицы выбирается 4-битовый элемент, который и является результатом операции замены. Узлы замен алгоритма определяются следующими таблицами, в которых 4-битовые заменяющие коды для краткости приведены в десятичной системе.

Указанный способ представления процедуры подстановки раскрывает некоторые достаточно тонкие свойства узлов замен, однако для программной реализации операция может быть описана более просто: каждый узел замены представляется в виде линейного массива (вектора) из 64 4-битовых элементов:

Si = (si,0,si,1,si,2,…,si,63),
|si,j| = 4, si,j[in]{0,1,2,…,15},
.

Замена состоит в простой выборке элемента массива по его индексу, в качестве которого выступает заменяемый 6-битовый элемент данных, интерпретируемый как целое от 0 до 63:

Si(x) = si,x.

В этом случае нет необходимости проводить дополнительные манипуляции с битами, конструируя номер строки и номер столбца узла замены. Узлы замен алгоритма, представленные в форме, удобной для программной реализации, определяются следующими таблицами.

Выходная битовая перестановка функции шифрования (P).

11627 320421 529612 728817  <-- старший байт --> 31163025 29122811 2732620 2542415
911015 11231226 1351418 15311610  23312217 219206 19271814 1711622
172188 19242014 21322227 233249  15301424 1381218 110105 929823
25192613 2730286 29223011 3143225  <-- младший байт --> 713619 52426 310221 12807

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

 

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

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


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

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