- •Раздел 4. Симметричные криптосистемы
- •Классические алгоритмы шифрования
- •4.1. Шифрование по стандарту des
- •Алгоритм шифрования des – описание
- •4.2. Российский стандарт шифрования данных гост 28147-89
- •Криптографическая стойкость госТа.
- •Замечания по архитектуре госТа.
- •Требования к качеству ключевой информации и источники ключей.
Алгоритм шифрования des – описание
Данные шифруются 64-битными блоками на основе 56-битного ключа (ключ 64-битный, но используются в нем только 56 бит). Для расшифровки используется тот же ключ. Зашифровка состоит из предварительного перемешивания, 16 одинаковых по структуре итераций и заключительного перемешивания посредством перестановки, обратной начальной.
На каждой итерации используется , строго говоря, не 56-битный ключ , а выбранные из него подключипо 48 битов каждый.
Рассмотрим алгоритм порождения подключей:
В цикле от 1 до 16 выполнить:
Ключ разделить на две части:и; в первый поместить левые 28 битов, а во второй – правые 28 битов.
Прокрутить циклически влево каждый подключ на число битов, заданное в таблице и оставить из 28 битов первые 24, получив укороченные подключи и;
Конкатенировать си запомнить укороченный 48-битовый ключ; конкатенироватьи, чтобы получить полный 56-битный ключ для начала следующей итерации.
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 - подстановка 64. 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.