Главная страница

Практическое занятие № 3. Занятие 3 Алгоритм симметричного шифрования гост 28147 89


Скачать 34.75 Kb.
НазваниеЗанятие 3 Алгоритм симметричного шифрования гост 28147 89
Дата12.10.2022
Размер34.75 Kb.
Формат файлаdocx
Имя файлаПрактическое занятие № 3.docx
ТипЗанятие
#730821

Практическое занятие № 3
Алгоритм симметричного шифрования ГОСТ 28147 – 89
Алгоритм шифрования ГОСТ 28147-89 предусматривает 4 режима работы:

Режим простой замены является основой для всех остальных режимов. Длина блока - 64 бита, длина ключа – 256 бит, количество подключей – 32, длина подключа - 32 бита, число циклов –32.

Открытые данные, подлежащие шифрованию, разбиваются на 64-битные блоки, которые обрабатываются независимо друг от друга (так как блоки данных шифруются независимо друг от друга, при шифровании двух одинаковых блоков открытого текста получаются одинаковые блоки шифротекста и наоборот.). Схема обработки 64-битного блока показана на рисунках 3 и 4.

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

Режим простой замены применяется для шифрования короткой, ключевой информации.

В режимах гаммирования вырабатывается гамма шифра блоками по 64 бита с применением ГОСТ в режиме простой замены. В первом режиме гамма не зависит от шифруемых данных, во втором – зависит от шифрблоков.

Режим выработки имитовставки предназначен для обнаружения случайных или умышленных искажений данных. Имитовставка вырабатывается (с помощью первых 16 циклов ГОСТ в режиме простой замены) из открытых данных и ключа и добавляется при передаче по каналу связи к блокам зашифрованных данных.

Пример. Пусть 32-битная последовательность имеет вид

1001

1011

1100

0101

1110

0100

0000

1001

Разобьем входную последовательность на 8 блоков по 4 бита. Шестой блок 1100 пропускаем через 6-ой узел подстановки по следующему правилу: преобразуем двоичное число 1100 к десятичному виду – 12. Заполнение 12-ой строки для 6-ого узла подстановки равно 9, что в двоичном виде есть 1001. Таким образом, 4-битный блок 1100 заменяется на 1001. Остальные блоки заменяются аналогично (см.табл. 2).


Таблица 2. Пример замены методом подстановки

номер узла

8

7

6

5

4

3

2

1

вход

1001

1011

1100

0101

1110

0100

0000

1001

адрес

9

11

12

5

14

4

0

9

заполнение

2

7

9

15

5

10

14

11

результат

0010

0111

1001

1111

0101

1010

1110

1011



рис. 3. Алгоритм шифрования ГОСТ 28147-89 (режим простой замены).

Знак  обозначает сложение по модулю 2.



рис. 4. Функция преобразования f(R,X) в алгоритме ГОСТ 28147-89.
Таблица 3. Символы кириллицы (часть альтернативной кодовой таблицы ASCII)



Символ

Представление



Символ

Представление

Десятичное


Двоичное

Десятичное

Двоичное

1

А

192

11000000

18

С

209

11010001

2

Б

193

11000001

19

Т

210

11010010

3

В

194

11000010

20

У

211

11010011

4

Г

195

11000011

21

Ф

212

11010100

5

Д

196

11000100

22

Х

213

11010101

6

Е

197

11000101

23

Ц

214

11010110

7

Ж

198

11000110

24

Ч

215

11010111

8

З

199

11000111

25

Ш

216

11011000

9

И

200

11001000

26

Щ

217

11011001

10

Й

201

11001001

27

Ъ

218

11011010

11

К

202

11001010

28

Ы

219

11011011

12

Л

203

11001011

29

Ь

220

11011100

13

М

204

11001100

30

Э

221

11011101

14

Н

205

11001101

31

Ю

222

11011110

15

О

206

11001110

32

Я

223

11011111

16

П

207

11001111

33

пробел

32

00010000

17

Р

208

11010000














Таблица 4. Блок подстановки в алгоритме шифрования

ГОСТ 28147-89




8

7

6

5

4

3

2

1

0

1

13

4

6

7

5

14

4

1

15

11

11

12

13

8

11

10

2

13

4

10

7

10

1

4

9

3

0

1

0

1

1

13

12

2

4

5

3

7

5

0

10

6

13

5

7

15

2

15

8

3

13

8

6

10

5

1

13

9

4

15

0

7

4

9

13

8

15

2

10

14

8

9

0

3

4

14

14

2

6

9

2

10

6

10

4

15

3

11

10

3

14

8

9

6

12

8

1

11

14

7

5

14

12

7

1

12

12

6

6

9

0

11

6

0

7

13

11

8

12

3

2

0

7

15

14

8

2

15

11

5

9

5

5

15

12

12

14

2

3

11

9

3


Выполним первый цикл алгоритма шифрования ГОСТ 28147-89 в режиме простой замены. Для получения 64 бит исходного текста используем 8 первых букв из заданного сообщения: ИНФОРМАЦ. Для получения ключа (256 бит) используем любой текст, состоящий из 32 букв, например: СИНТез передаточной функции цепи. Первый подключ содержит первые 4 буквы: СИНТ

Переводим исходный текст и первый подключ в двоичную последовательность (см. таблицу 3):

исходный текст

И

11001000

Н

11001101

Ф

11010100

О

11001110

Р

11010000

М

11001100

А

11000000

Ц

11010110

первый подключ X0:

С

11010001

И

11001000

Н

11001101

Т

11010010

Таким образом, первые 64 бита определяют входную последовательность:

L0: 11001000 11001101 11010100 11001110

R0: 11010000 11001100 11000000 11010110

Следующие 32 бита определяют первый подключ:

Х0: 11010001 11001000 11001101 11010010

I. Найдем значение функции преобразования f(R0,X0) (см. рис.4)

1). Вычисление суммы R0 и X0 по mod 232

R0: 1101 0000 1100 1100 1100 0000 1101 0110

Х0: 1101 0001 1100 1000 1100 1101 1101 0010

1010 0010 1001 0101 1000 1110 1010 1000

2). Преобразование в блоке подстановки

Результат суммирования R0+X0 по mod 232:

1010 0010 1001 0101 1000 1110 1010 1000

преобразуем в блоке подстановки (см. таблицу 4). Для каждого четырехбитного блока вычислим его адрес в таблице подстановки. Номер блока соответствует номеру столбца, десятичное значение блока соответствует номеру строки в таблице. Таким образом, четвертый блок (1000) заменяется заполнением 8-ой строки и четвертого столбца в таблице подстановки (1110).

номера блоков

8 7 6 5 4 3 2 1

1010 0010 1001 0101 1000 1110 1010 1000

соответствующие номера строк в таблице подстановки

10 2 9 5 8 14 10 8

заполнение

3 4 6 15 14 9 8 6

результат

0011 0100 0110 1111 1110 1001 1000 0110

3) Циклический сдвиг результата п.2 на 11 бит влево

0111 1111 0100 1100 0011 0001 1010 0011

Таким образом, нашли значение функции f (R0,X0):

0111 1111 0100 1100 0011 0001 1010 0011

II. Вычисляем R1= f(R0,X0) L0.

Результат преобразования функции f(R0,X0) складываем с L0 по mod2:

L0: 1100 1000 1100 1101 1101 0100 1100 1110

f(R0,X0): 0111 1111 0100 1100 0011 0001 1010 0011
R1: 1011 0111 1000 0001 1110 0101 0110 1101
Задание: Выполните первый цикл алгоритма шифрования ГОСТ 28147 89 в режиме простой замены. Для получения 64 бит исходного текста используйте восемь первых букв сообщения, составленного из своих фамилии и имени(если фамилия меньше восьми букв). Для получения ключа (256 бит) используйте любой текст, состоящий из 32 букв. Первый подключ должен содержать первые четыре буквы этого текста. Кодировка символов кириллицы приведена в таблице 3. Блок подстановки алгоритма шифрования ГОСТ 28147 89 приведен в таблице 4.


написать администратору сайта