Лабораторная работа №3. Изучение принципов создания блочных шифров на примере алгоритма DES

Целью лабораторной работы является изучение принципов построения блочных шифров, основанных на сети Фейстеля, на примере алгоритма DES.

Требования к содержанию, оформлению и порядку выполнения

Отчет по выполнению лабораторной работы должен содержать: титульный лист, название работы, цель работы и содержательную часть.

В содержательной части отчета по выполнению лабораторной работы требуется привести:

· общее описание алгоритма DES;

· результаты шифрования сообщения на заданном ключе (сообщение и ключ определяются индивидуальным заданием);

· выводы по лабораторной работе.

Теоретическая часть

Самым распространенным и наиболее известным алгоритмом симметричного шифрования является DES(Data Encryption Standard). Алгоритм был разработан в 1977 году, в 1980 году был принят NIST (National Institute of Standards and Technolody США) в качестве стандарта (FIPS PUB 46).

В основу алгоритма DES положена классическая сеть Фейстеля с двумя ветвями (см. раздел 3.1). Он осуществляет шифрование 64-битовых блоков данных с помощью 64-битового ключа, в котором значащими являются 56 бит (остальные 8 бит – проверочные биты для контроля на четность). Обобщенная схема процесса шифрования в алгоритме DES показана на рис. Л3.1. Этот процесс заключается в начальной перестановке битов 64-битового блока, шестнадцати раундах шифрования и, наконец, в конечной перестановке битов.

При описании алгоритма DES применены следующие обозначения:

· L и R – последовательности битов (левая (left) и правая (right));

· LR – конкатенация последовательностей L и R, т.е. такая последовательность битов, длина которой равна сумме длин L и R; в последовательности LR биты последовательности R следуют за битами последовательности L;

· Å – операция побитового сложения по модулю 2.

Пусть из файла исходного текста считан очередной 64-битовый (8-байтовый) блок Т. Этот блок Т преобразуется с помощью матрицы начальной перестановки IP (табл. Л3.1).

Лабораторная работа №3. Изучение принципов создания блочных шифров на примере алгоритма DES - student2.ru
Рис. Л3.1. Структура алгоритма DES.

Таблица Л3.1

Матрица начальной перестановки IP

58 50 42 34 26 18 10 2

60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1

59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5

63 55 47 39 31 23 15 7

Биты входного блока Т (64 бита) переставляются в соответствии с матрицей IP: бит 58 входного блока Т становится битом 1, бит 50 – битом 2 и т.д. Эту перестановку можно описать выражением Т0 = IP(Т). Полученная последовательность битов Т0 разделяется на две последовательности: L0 – левые или старшие биты, R0 – правые или младшие биты, каждая из которых содержит 32 бита.

Затем выполняется итеративный процесс шифрования, состоящий из 16 раундов. Пусть Тi , – результат i-й итерации:

Тi = Li Ri

где Li=t1, t2,…,t32 (первые 32 бита), Ri=t33, t34,…,t64 (последние 32 бита). Тогда результат i-й итерации описывается следующими формулами:

Li = Ri–1, i = 1, 2,…,16;

Ri== Li–1 Å f(Ri–1, Ki), i = 1, 2,…,16.

Функция f называется функцией шифрования. Ее аргументами являются последовательность Ri–1, получаемая на предыдущем шаге итерации, и 48-битовый раундовый подключ Ki который является результатом преобразования 64-битового ключа шифра К.

На последнем шаге итерации получают последовательности R16 и L16 , которые конкатенируются в 64-битовую последовательность R16 L16.

По окончании шифрования осуществляется восстановление позиций битов с помощью матрицы обратной перестановки IP –1 (табл. Л3.2).

Таблица Л3.2

Матрица обратной перестановки IP –1

40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

Процесс расшифрования аналогичен процессу шифрования. На входе алгоритма используется зашифрованный текст, который подвергается начальной перестановке IP, затем следуют 16 раундов преобразования, но ключи Ki используются в обратной последовательности: K16 используется на первом раунде, K1 используется на последнем раунде. После последнего раунда процесса расшифрования две половины выхода меняются местами и подвергаются обратной перестановке IP –1. Выходом этой стадии является незашифрованный текст.

Схема вычисления функции шифрования f(Ri–1, Ki) показана на рис. Л3.2.

Лабораторная работа №3. Изучение принципов создания блочных шифров на примере алгоритма DES - student2.ru
Рис. Л3.2. Схема вычисления функции шифрования f.

Для вычисления значения функции f используются:

· функция E (расширение 32 бит до 48);

· функция S1 , S2 ,..., S8 (преобразование 6-битового числа в 4-битовое);

· функция P (перестановка битов в 32-битовой последовательности).

Аргументами функции шифрования f являются Ri–1 (32 бита) и Ki (48 бит). Результат функции E(Ri–1) есть 48-битовое число. Функция расширения E, выполняющая расширение 32 бит до 48 (принимает блок из 32 бит и порождает блок из 48 бит), определяется табл. Л3.3.

В соответствии с этой таблицей первые три бита E(Ri–1) – это биты 32, 1 и 2, а последние – 31, 32, 1. Полученный результат складывается по модулю 2 (операция XOR) с текущим значением ключа Ki и затем разбивается на восемь 6-битовых блоков B1 , B2 ,…, B8:

E(Ri–1) Å Ki.= B1 , B2 ,…, B8 .

Таблица Л3.3

Функция расширения E

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 1

Далее каждый из этих блоков используется как номер элемента в функциях-матрицах (S–блоках): S1 , S2 ,..., S8 , содержащих 4-битовые значения (табл. Л3.4).

Следует отметить, что выбор элемента в матрице Sj , осуществляется достаточно оригинальным образом. Пусть на вход матрицы Sj; поступает 6-битовый блок Bj =b1 b2 b3 b4 b5 b6 , тогда 2-битовое число b1 b6 указывает номер строки матрицы, а 4-битовое число b2 b3 b4 b5 – номер столбца.

Например, если на вход матрицы S1 поступает 6-битовый блок

B1 =b1 b2 b3 b4 b5 b6 = 100110,

то 2-битовое число b1 b6= 10(2)=2(10) указывает строку с номером 2 матрицы S1, а 4-битовое число b2 b3 b4 b5=0011(2)=3(10) – указывает столбец с номером 3 матрицы S1. Это означает, что в матрице S1 блок B1 = 100110 выбирает элемент на пересечении строки с номером 2 и столбца с номером 3, т.е. элемент 8(10) = 1000(2) . Совокупность 6-битовых блоков B1 , B2 ,…, B8 обеспечивает выбор 4-битового элемента в каждой из матриц S1 , S2 ,..., S8.

В результате получаем S1(B1), S2(B2),...,S8(B8), т.е. 32-битовый блок. Этот 32-битовый блок преобразуется с помощью функции перестановки битов P (табл. Л3.5).

Таким образом, функция шифрования есть

f(Ri–1,Ki) = P(S1(B1), S2(B2),…,S8(B8)).

На каждой итерации используется новое значение ключа Ki (длиной 48 бит). Новое значение ключа Ki вычисляется из начального ключа K (рис. Л3.3). Ключ K представляет собой 64-битовый блок с 8 битами контроля по четности, расположенными в позициях 8, 16, 24, 32, 40, 48, 56, 64. Для удаления контрольных битов и подготовки ключа к работе используется функция G первоначальной подготовки ключа (табл. Л3.6).

Таблица Л3.6 разделена на две части. Результат преобразования G(K) разбивается на две половины C0 и D0 по 28 бит каждая. Первые четыре строки матрицы G определяют, как выбираются биты последовательности C0 (первым битом C0 будет бит 57 ключа шифра, затем бит 49 и т.д., а последними битами – биты 44 и 36 ключа). Следующие четыре строки матрицы G определяют, как выбираются биты последовательности D0 (т.е. последовательность D0 будет состоять из битов 63, 55, 47, ...,12, 4 ключа шифра).

Таблица Л3.4

Функции преобразования S1 , S2 ,..., S8

    Номер столбца
     
   
  S1
   
   
   
  S2
   
   
Н  
о S3
м  
е  
р  
  S4
   
   
   
с S5
т  
р  
о  
к S6
и  
   
   
  S7
   
   
   
  S8
   
   

Таблица Л3.5

Функция перестановки битов P

16 7 20 21

29 12 28 17

1 15 23 26

5 18 31 10

2 8 24 14

32 27 3 9

19 13 30 6

22 11 4 25

Лабораторная работа №3. Изучение принципов создания блочных шифров на примере алгоритма DES - student2.ru
Рис. Л3.3. Схема алгоритма вычисления ключей.

Таблица Л3.6

Функция G первоначальной подготовки ключа

(переставленная выборка 1)

57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

14 6 61 53 45 37 29

21 13 5 28 20 12 4

Как видно из табл. Л3.6, для генерации последовательностей C0 и D0 не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут служить для других целей (например, для контроля по четности). Таким образом, в действительности ключ шифра является 56-битовым.

После определения C0 и D0 рекурсивно определяются Ci и Di,
i=1, 2,…,16. Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации, как показано в табл. Л3.7.

Таблица Л3.7

Таблица сдвигов для вычисления ключа

Номер итерации Количество сдвигов влево Номер итерации Количество сдвигов влево

Операции сдвига выполняются для последовательностей Ci и Di независимо. Например, последовательность C3 получается посредством циклического сдвига влево на две позиции последовательности C2 , а последовательность D3 – посредством сдвига влево на две позиции последовательности D2 , C16 и D16 получаются из C15 и D15 посредством сдвига влево на одну позицию.

Ключ Ki , определяемый на каждом шаге итерации, есть результат выбора конкретных битов из 56-битовой последовательности Ci Di и их перестановки. Другими словами, ключ Ki = H(Ci Di ), где функция Н определяется матрицей, завершающей обработку ключа (табл. Л3.8).

Таблица Л3.8

Функция Н завершающей обработки ключа

(переставленная выборка 2)

14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Как следует из табл. Л3.8, первым битом ключа Ki будет 14-й бит последовательности Ci Di , вторым – 17-й бит, 47-м битом ключа Ki , будет 29-й бит Ci Di , а 48-м битом – 32-й бит Ci Di.

Общая постановка задачи

В лабораторной работе требуется:

1. Изучить раздел 3.1 и теоретическую часть к данной лабораторной работе.

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

Для выполнения этого задания следует воспользоваться программой DES Tutorial, разработанной Кабановым Е.В. и Прокоповым М.В. (см. рис. Л3.4), которую Вы можете взять в приложении №2 данного УМК.

Лабораторная работа №3. Изучение принципов создания блочных шифров на примере алгоритма DES - student2.ru
Рис. Л3.4. Окно "О программе" DES Tutorial.

Данная программа представляет собой систему интерактивного обучения алгоритму DES. Кроме описания самого алгоритма шифрования она позволит вам самому поучаствовать в процессе шифрования и получить результат. После окончания шифрования вы получите результаты вашего тестирования. Также программа позволяет шифровать и дешифровать небольшие участки текста с заданным вами ключом. Программа содержит полную документацию по алгоритму DES с подробным объяснением всех шагов шифрования и дешифрования на русском языке.

DES Tutorial позволяет пользователю работать в 2 режимах:

1) Режим тестирования – программа вместе с пользователем проводит процесс шифрования данных. В этом режиме программа поэтапно выполняет шифрование данных и просит пользователя закончить за нее работу на том или ином этапе.

2) Режим шифрования/расшифрования – программа зашифровывает и расшифровывает текстовые строки, используя введенный ключ. В этом режиме программа сама выполняет шифрование и дешифрование данных.

Режим тестирования предусматривает следующие задания:

· Тест 1 "Начальная перестановка";

· Тест 2 "Получение последовательностей R0 и L0";

· Тест 3 "Функция выборки и перестановки ключевой последовательности G";

· Тест 4 "Получение последовательностей C0 и D0";

· Тест 5 "Получение последовательности Ci";

· Тест 6 "Получение последовательности Di";

· Тест 7 "Получение последовательности Ki (ключа раунда i)";

· Тест 8 "Функция E";

· Тест 9 "Функции Si";

· Тест 10 "Функция шифрования f";

· Тест 11 "Конечная перестановка".

Для своих индивидуальных данных необходимо без ошибок пройти все предусмотренные программой тесты и их результаты привести в отчет.

Наши рекомендации