Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lecter / Симм.системы.4 раздел.doc
Скачиваний:
46
Добавлен:
10.02.2016
Размер:
208.9 Кб
Скачать

Алгоритм шифрования 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 - подстановка 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.