- •Лабораторная работа № 4 семейство алгоритмов rc
- •2.1.2 Процедура расширения ключа
- •2.1.3 Расшифровывание
- •2.1.4 Криптостойкость алгоритма
- •2.2 Алгоритм rc4
- •2.3Алгоритм rc5
- •2.3.1 Структура алгоритма
- •2.3.2 Процедура расширения ключа
- •2.3.3 Криптоанализ алгоритма
- •2.3.4 Варианты rc5
- •2.4 Алгоритм rc6
- •2.4.1 Структура алгоритма
- •2.4.2 Процедура расширения ключа
- •3.Примеры выполнения работы
- •Расшифруем зашифрованное сообщение с помощью правильного и неправильного ключа (рис. 56-58).
- •4. Содержание работы
2020-21 уч. год Защита информации ПРО 3курс
Лабораторная работа № 4 семейство алгоритмов rc
Цель работы
Целью лабораторной работы является освоение принципа работы и различий в версиях алгоритма RC, приобретение практических навыков шифрования данных при помощи данных алгоритма в программном пакете CrypTool 1.4.30.
Краткие теоретические сведения
2.1 Алгоритм RC2
Алгоритм шифрования был разработан в конце 1980-х гг. Рональдом Ривестом, который, в частности, разработал алгоритм RC5.
2.1.1 Структура алгоритма
Алгоритм RC2 шифрует данные блоками по 64 бита с использованием ключей переменного размера: от 8 до 1024 битов исключительно; рекомендуемым размером ключа является 64 бита.
Алгоритм является сетью Фейстеля, в нем выполняется 18 раундов преобразований. Причем раунды алгоритма делятся на 2 типа: смешивающие (mix) раунды и объединяющие (mesh) раунды. Общая структура алгоритма такова:
Выполняется 5 смешивающих раундов.
Выполняется 1 объединяющий раунд.
Выполняются 6 смешивающих раундов.
Выполняется 1 объединяющий раунд.
Выполняется 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)
2. Инициализируются другие переменные, участвующие в расширении ключа:
Т8=(Т1+7)/8, (16)
ТМ = 255 mod 2(8+T1-8*T8), (17)
где Т1 - размер ключа в битах,
T8 - эффективный размер ключа в байтах,
ТМ - битовая маска, учитывающая остаточные биты ключа, если его размер в битах не кратен 8.
В цикле по 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 и т.д.
Псевдослучайная таблица Р сформирована на основе шестнадцатеричной записи дробной части числа π.
Вычисляется L128-T8:
L128-T8=P(L128-T8 &TM).
В цикле i от 127-T8 до 0 выполняется следующее действие:
Li = P( ),
Для использования в шифрующих преобразованиях 128-байтная последовательность представляется в виде 16-байтных слов :
Ki = ,