Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700218.doc
Скачиваний:
28
Добавлен:
01.05.2022
Размер:
1.36 Mб
Скачать

Шифрование данных с помощью алгоритма rc2.

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

Теоретическое введение Структура алгоритма

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

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

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

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

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

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

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

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

где:

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

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

-

27

~ х
— побитовый комплемент к х;


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

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

Таблица 2

i

0

1

2

3

1

2

3

5


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


Рис.9 Функция алгоритма RC2.

А

28

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

Ri=Ri+Kn mod216,

где n = &63.

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

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

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

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

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

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

  1. И

    29

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

где:

  • — размер ключа в битах;

  • — эффективный размер ключа в байтах;

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

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

, где Р — табличная замена, приведенная в табл.3.

Таблица 3

с2

еО

41

бе

Of

51

cb

cc

24

91

af

50

al

f4

70

39

99

За

85

23

b8

b4

7a

fc

02

36

5b

25

55

97

31

2d

5d

fa

98

еЗ

8a

92

ae

05

df

29

10

67

6c

ba

c9

d3

00

еб

cf

el

9e

a8

2c

63

16

01

3f

58

e2

89

a9

Od

38

34

lb

ab

33

ff

bO

bb

48

0c

5f

b9

bl

cd

2e

с5

f3

db

47

e5

a5

9c

77

0a

a6

20

68

fe

7f

cl

ad


d9

78

f9

c4

19

dd

b5

ed

28

e9

fd

79

4a

aO

d8

9d

сб

37

83 -

2b

76

53

8e

62

4c

64

88

44

8b

fb

a2

17

59

f5

87

b3

4f

13

61

45

6d

8d

09

81

7d

32

bd

8f

40

eb

86

b7

7b

0b

fO

95

21

22

5c

6b

4e

82

54

d6

65

93

ce

60

b2

lc

73

56

cO

14

a7

8c

fl

dc

12

75

ca

If

3b

be

e4

dl

42

3d

d4

30

a3

3c

b6

26

6f

bf

Oe

da

46

69

07

57

27

f2

Id

9b

be

94

43

03

f8

11

c7

f6

90

ef

3e

e7

06

c3

d5

2f

c8

66

le

d7

08

e8

ea

de

80

52

ее

f7

84

aa

72

ac

35

4d

6a

2a

96

la

d2

71

5a

15

49

74

4b

9f

dO

5e

04

18

a4

ec

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

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

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

30

5 В цикле по i от 1278 до 0 выполняется следующее действие:

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

.

Расшифровывание выполняется по той же общей схеме, что и зашифровывание. Однако при расшифровывании используются другие операции, выпол­няемые в смешивающем и объединяющем раундах.

Смешивающий раунд расшифровывания в цикле по i от 3 до 0 выполняет следующие операции:

где:

>>> — циклический сдвиг вправо на число битов, определяемое значени­ем ;

- начальное значение j устанавливается не в 0, а в 63.

Аналогичным образом изменен и объединяющий раунд при расшифровыва­нии по сравнению с зашифровыванием. В нем в цикле по i от 3 до 0 выполня­ется следующая операция:

Аналогичным образом изменен и объединяющий раунд при расшифровыва­нии по сравнению с зашифровыванием. В нем в цикле по i от 3 до 0 выполня­ется следующая операция:

Ri=Ri-Kn mod 216; где .

Задание:

Используя алгоритм шифрования данных RC2, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования.

Порядок выполнения работы:

31

написать на языке программирования функцию шифрования, в которую в качестве параметров передается ключ и символ (или строка символов) исходного текста.

 написать функцию дешифрования, в которую в качестве параметров передается ключ и символ (или строка символов) зашифрованного текста.

Оформление отчета:

В отчете следует привести краткие теоретические сведения. Кроме того, должны быть представлены: краткая блок-схема, текст программы, шифруемый набор символов, результаты выполнения программы.

Контрольные вопросы:

  1. В чем заключается суть метода шифрования RC2?

  2. Какой характерной особенностью процедура расширения ключа?

  3. Что используется в качестве итерации объединяющего раунда?

32

ЛАБОРАТОРНАЯ РАБОТА №8