Алгоритм шифрования DES – описание

Данные шифруются 64-битными блоками на основе 56-битного ключа (ключ 64-битный, но используются в нем только 56 бит). Для расшифровки используется тот же ключ. Зашифровка состоит из предварительного перемешивания, 16 одинаковых по структуре итераций и заключительного перемешивания посредством перестановки, обратной начальной.

На каждой итерации используется , строго говоря, не 56-битный ключ , а выбранные из него подключи по 48 битов каждый.

Рассмотрим алгоритм порождения подключей:

1. В цикле от 1 до 16 выполнить:

2. Ключ разделить на две части: и ; в первый поместить левые 28 битов, а во второй – правые 28 битов.

3. Прокрутить циклически влево каждый подключ на число битов, заданное в таблице и оставить из 28 битов первые 24, получив укороченные подключи и ;

4. Конкатенировать с и запомнить укороченный 48-битовый ключ ; конкатенировать и , чтобы получить полный 56-битный ключ для начала следующей итерации.

5. end

 

После начального перемешивания 64-битный блок делится на две половины. Правая часть без изменений переносится в левую часть следующей итерации, а левая часть предыдущей итерации подвергается четырем преобразованиям, прежде чем стать правой частью следующей итерации.

 

Преобразование Р2. 32 бита входного слова делятся на 8 четверок, а потом каждая четверка преобразуется в шестерку. Таким образом, входное 32-битное слово преобразуется в 48-битное.

 

 

Схема алгоритма:

 

где:

Text исходный текст (блок 64 бита)
Crypt зашифрованный блок
Key 64-х разрядный ключ
Числа разрядность на данной ветке алгоритма
P, Pk перестановки
S подстановка 6 бит 4 бита
L(i) сдвиг (i - номер итерации)
xor сложение по модулю 2 (поразрядное сложение двоичных чисел, без переноса лишней единицы в старший разряд)
конкатенация битовых строк, причем верхняя - спереди
разбиение строки на две, причем первая - наверху
ограниченный точками участок повторяется 16 раз

Перестановки выполняются по обычной формуле D[i]=S[P[i]], где

S исходная строка (массив символов, нумерация с единицы)
D результат перестановки (массив символов, нумерация с единицы)
P таблица перестановок (массив индексов в строке S)

 

S - подстановка 6 4. 48-битный результат предыдущей операции делится на 8 шестерок, и каждая шестерка преобразуется в четверку по своей таблице. Каждая из таблиц S1, S2, …, S8 состоит из 16-тиричных (то есть 4-битовых) чисел, содержит 4 строки с номерами 0, 1, 2, 3 и 16 столбцов с номерами 0, 1, 2, …, 15. Подстановка производится по следующему правилу: пусть исходная битовая строка - /abcdef/, тогда /af/ - номер строки, а /bcde/ - номер столбца. Строка и столбец определяют местонахождение результата в S-таблице. Например, при использовании таблицы S6, число 58 (111010) переводится в 13 (1101).

Помимо обычного его применения, этот алгоритм можно использовать для создания "односторонних" функций. Для этого ключ и исходный текст меняются местами: в формуле Crypt=DES(Text,Key) исходный текст может быть несекретным и фиксированным. А Crypt рассматривается как функция ключа - Key.