Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4-5_ПРО3_ЗИ_2020-21.doc
Скачиваний:
6
Добавлен:
25.11.2022
Размер:
5.56 Mб
Скачать

2020-21 уч. год Защита информации ПРО 3курс

Лабораторная работа № 4 семейство алгоритмов rc

  1. Цель работы

Целью лабораторной работы является освоение принципа работы и различий в версиях алгоритма RC, приобретение практических навыков шифрования данных при помощи данных алгоритма в программном пакете CrypTool 1.4.30.

  1. Краткие теоретические сведения

2.1 Алгоритм RC2

Алгоритм шифрования был разработан в конце 1980-х гг. Рональдом Ривестом, который, в частности, разработал алгоритм RC5.

2.1.1 Структура алгоритма

Алгоритм RC2 шифрует данные блоками по 64 бита с использованием ключей переменного размера: от 8 до 1024 битов исключительно; рекомендуемым размером ключа является 64 бита.

Алгоритм является сетью Фейстеля, в нем выполняется 18 раундов преобразований. Причем раунды алгоритма делятся на 2 типа: смешивающие (mix) раунды и объединяющие (mesh) раунды. Общая структура алгоритма такова:

  1. Выполняется 5 смешивающих раундов.

  2. Выполняется 1 объединяющий раунд.

  3. Выполняются 6 смешивающих раундов.

  4. Выполняется 1 объединяющий раунд.

  5. Выполняется 5 смешивающих раундов.

Структура смешивающего раунда приведена на рис. 43. Предполагается, что шифруемый блок данных разделен на 4 16- битных слова , над которыми смешивающий раунд в цикле по i от 0 до 3 выполняет следующие операции

j=j+1,

,

где - фрагмент расширенного ключа, определяемый глобальной переменной j; данная переменная изначально равна нулю и увеличивается на 1 (как показано выше) в каждом смешивающем раунде; процедура расширения ключа подробно описана далее,

& - побитовая логическая операция «и»,

~x - побитовый комплемент к x.

« - циклический сдвиг влево на число битов, определяемое значением (табл. 5).

Рис. 43. Смешивающий раунд алгоритма RC2

Таблица 5

i

0

1

2

3

Si

1

2

3

5

Таким образом, в каждой i-й итерации смешивающего раунда выполняется описанное выше преобразование f() (рис. 44), которое модифицирует на основе текущих значений трех остальных слов шифруемого блока и фрагмента расширенного ключа.

Рис. 44. Функция f() алгоритма RC2

Аналогично смешивающему раунду, в объединяющем раунде выполняется цикл по i от 0 до 3; в каждой итерации цикла выполняется следующая операция:

, (13)

где п = Ri-1mod4&63.

Таким образом, итерация объединяющего раунда представляет собой наложение операцией сложения по модулю 216 фрагмента расширенного ключа, индекс которого определяется 6 младшими битами текущего значения слова Ri-1mod4.

2.1.2 Процедура расширения ключа

Как было сказано выше, алгоритм RC2 использует ключи шифрования размером от 8 до 1024 битов, т.е. от 1 до 128 байтов.

Расширение ключа подразумевает получение из ключа шифрования 16-битных фрагментов расширенного ключа К0..К63, используемых в смешивающих раундах - по одному в каждой из 4 итераций каждого из 16 смешивающих раундов. Данная процедура выполняется в несколько шагов:

1. Инициализируется байтовый массив L0...L127, используемый при расширении ключа:

L0 = КI0,

(14)

LT-1= КIT-1,

(15)

где К0 КT-1 ключ шифрования, имеющий размер Т байтов. Остальные байты массива L обнуляются.

2. Инициализируются другие переменные, участвующие в расширении ключа:

Т8=(Т1+7)/8, (16)

ТМ = 255 mod 2(8+T1-8*T8), (17)

где Т1 - размер ключа в битах,

T8 - эффективный размер ключа в байтах,

ТМ - битовая маска, учитывающая остаточные биты ключа, если его размер в битах не кратен 8.

  1. В цикле по i от Т до 127 выполняется следующая операция:

= P( mod 256), (18)

где P - табличная замена, приведенная в табл. 6.

Таблица 6

D9

78

F9

C4

19

Dd

B5

Ed

28

E9

Fd

79

4a

A0

D8

9D

C6

7E

37

83

2B

76

53

8E

62

4C

64

88

44

8b

Fb

A2

17

9a

59

F5

87

B3

4f

13

61

45

6d

8d

09

81

7d

32

Bd

8f

40

Eb

86

B7

7b

0b

F0

95

21

22

5c

6b

4e

82

54

D6

65

93

Ce

60

B2

1c

73

56

C0

14

A7

8c

F1

Dc

12

75

Ca

1f

3b

Be

C4

D1

42

3d

D4

30

A3

3c

B6

26

6f

Bf

0e

Da

46

69

07

57

27

F2

1d

9b

Bc

94

43

03

F0

11

C7

F6

90

Ef

3e

E7

06

C3

D5

2f

C8

66

1e

D7

08

E8

Ea

De

80

52

Ee

F7

84

Aa

72

Ac

35

4d

6a

2a

96

1a

D2

71

5a

15

49

74

4b

9f

D0

5e

04

18

A4

ec

C2

E0

41

6e

0f

51

Cb

Cc

24

91

Af

50

A1

F4

70

39

99

7c

3a

85

23

B8

B4

7a

Fc

02

36

5b

25

55

97

31

2d

5d

Fa

98

E3

8a

92

Ae

05

Df

29

10

67

6c

Ba

C9

D3

00

E6

Cf

E1

9e

A8

2c

63

16

01

3f

58

E2

89

A9

0d

38

34

1b

Ab

33

Ff

B0

Bb

48

0c

5f

B9

B1

Cd

2e

C5

F3

Db

47

E5

A5

9c

77

0a

A6

20

68

Fe

7f

C1

ad

Таким образом, значение 0 заменяется на D9,1 - на 78 и т.д.

Псевдослучайная таблица Р сформирована на основе шестнадцатеричной записи дробной части числа π.

  1. Вычисляется L128-T8:

L128-T8=P(L128-T8 &TM).

  1. В цикле i от 127-T8 до 0 выполняется следующее действие:

Li = P( ),

  1. Для использования в шифрующих преобразованиях 128-байтная последовательность представляется в виде 16-байтных слов :

Ki = ,