Стандарт DES. Описание алгоритма шифрования

Страницы работы

Фрагмент текста работы

Министерство общего и профессионального образования

Российской Федерации

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ

ОТЧЁТ

ПО ПРАКТИКУМУ

по теме:

Стандарт DES

Исполнитель   темы, студенты группы 4715                                            _____________

подпись, дата

_____________

подпись, дата

_____________

подпись, дата

 

Санкт-Петербург 2008


Задание

  1. Зашифровать заданный текст по алгоритму шифрования стандарта DES.
  2. Расшифровать текст, зашифрованный по стандарту DES с заданным ключом.

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

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

Матрица P начальной перестановки имеет вид:


Из файла считывается очередной 8-байтовый блок T, который преобразуется с помощью матрицы P начальной перестановки, т.е. бит с номером 58 блока T становится битом с номером 1, бит с номером 50 - битом с номером 2 и т.д., что даст в результате: T(0) = P(T). Затем полученная последовательность битов T(0) делится на две последовательности по 32 бита каждая: L(0) - левые или старшие биты, R(0) - правые или младшие биты. Затем выполняется шифрование по методу Фейстела с 16 итерациями:

i -я итерация описывается следующим образом:

L(i) = R(i-1),

R(i) = L(i-1)*F(R(i-1), K(i)),

Где L(i) и R(i)- это левая и правая подпоследовательности на i-ом такте, K(i) - 48 битный ключ, полученный из 64 битного ключа. На 16-й итерации получают последовательности R(16) и L(16) (без перестановки), которые соединяют в 64- битовую последовательность ( R(16), L(16)). Затем биты этой последовательности переставляют в соответствии с матрицей обратной перестановки P-1:

Матрицы  P-1 и P соотносятся следующим образом: значение 1-го элемента матрицы P-1 равно 40, а значение 40-го элемента матрицы P равно 1, значение 2- го элемента матрицы P-1 равно 8, а значение 8-го элемента матрицы P равно 2 и т.д.

На i-ой итерации K(i) - это 48 битовый ключ, получаемый из 64 битового исходного ключа следующим образом: перед началом итераций из 64 битового ключа получают 56 битовый путем выбрасывания каждого восьмого бита, т.е. битов стоящих на позициях 8, 16, 24, 32, 40, 48, 56, 64. Эти биты были сформированы как биты контроля четности и используются для контроля целостности ключа. Затем производится начальная перестановка 56 битового ключа в соответствии с таблицей G:

Получаемый таким образом, 56 битовый ключ разбивается на два 28 битовых блока: С(0) – левый, и D(0) - правый. Производится левый циклический сдвиг С(0) и D(0) на заданное таблицей 1 число позиций. Из конкатенации полученных при этом блоков C(1) и D(1) выбираются 48 разрядов с помощью перестановки KP:

Эти разряды используются на первой итерации. На i-ой итерации для получения блоков C(i), D(i) производится циклический сдвиг блоков C(i-1), D(i-1) на s(i) позиций.


s(i) выбирается по таблице:

Далее вновь выбираем 48 разрядов ключа с помощью перестановки KP.

Ниже представлена блок-схема алгоритма вычисления ключа.


Теперь рассмотрим функцию шифрования F (R(i-1),K(i) в стандарте DES:

Для вычисления значения функции F используются следующие функции- матрицы: 

·  Е - расширение 32-битовой последовательности до 48-битовой;

·  S1, S2, . , S8 - преобразование 6-битового блока в 4-битовый;

·  Р2 - перестановка бит в 32-битовой последовательности.

Функция расширения Е определяется следующей таблицей:

Результат расширения E(R(i-1) представляет собой 48-битовую последовательность, которая складывается по модулю 2 с 48-битовым ключом K(i). Результирующая 48-битовая последовательность делится на 8 блоков B(1),B(2),…,B(8) по 6 битов каждый, т.е. E(R(i-1)) xor K(i) = B(1)B(2)...B(8).

Предположим, что на вход функции-матрицы Sj поступает 6-битовый блок B(j)=(b1,b2,b3,b4,b5,b6). Тогда биты (b1,b6) определяют номер строки в матрице, описывающей

Похожие материалы

Информация о работе