Материал: Методические указания к практическим занятиям по дисциплине «Криптографические протоколы» для специальности «Компьютерная безопасность». Мокроусов А.Н., Остапенко А.Г

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

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

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

<<< — циклический сдвиг влево на число битов,

определяемое значением

Si

(табл. 2).

 

 

 

 

 

 

 

 

Таблица 2

 

i

0

1

2

 

3

 

 

S

i

1

2

3

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

ных слов шифруемого блока и фрагмента расширенного ключа.

34

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

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

R i = R i + K n mod216,

где n =

Ri 1mod 4

&63.

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

ляется 6 младшими битами текущего значения слова

Ri 1mod 4

.

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

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

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

1 Инициализируется

байтовый

массив

L0 ...L127 ,

используемый при расширении ключа:

L0 KI0

...

LT 1 KIT 1

35

где

K

...K

0

T 1

— исходный ключ шифрования, имеющий

размер T байтов. Остальные байты массива L обнуляются.

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

 

T 8 (T1 7) / 8

 

 

TM 255 mod 2

(8*T 1 8*T 8)

 

 

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

 

T 8

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

TM

— битовая маска, учитывающая остаточные биты

ключа, если его размер в битах не кратен 8.

3В цикле по i от операция:

T

до 127 выполняется следующая

 

 

 

 

 

Li P(Li 1 Li T

mod 256) ,

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 3

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

36

Продолжение табл. 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

и т. д.

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

4 Вычисляется L128 T 8 :

L

P(L

&TM )

128 T 8

128 T 8

 

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

L P(L

L

)

 

 

i

i 1

i T 8

 

 

 

6 Для использования в

шифрующих преобразованиях

128-байтная последовательность

L0 ...L127

представляется

в виде 16-битных слов К0...К63:

 

 

 

Ki L2i

256L2i 1 .

 

 

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

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

37

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

вправо на число битов,

Si

;

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

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

R i = R i - K n mod 216; где

n Ri 1mod 4

& 63

.

Задание:

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

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

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

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

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

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

38

Источник: https://studfile.net/preview/16563503/