Стандартные криптографические алгоритмы шифрования

Автор: Чернявский Э.А., Ледяев В.П.

Журнал: Экономика и социум @ekonomika-socium

Рубрика: Информационные и коммуникативные технологии

Статья в выпуске: 7 (26), 2016 года.

Бесплатный доступ

В статье рассматриваются симметричные алгоритмы шифрования данных. Рассматриваются стандарты ГОСТ 28147-89, DES, AES128. Осуществляется сравнение производительности данных алгоритмов при различных входных данных в режиме последовательного и параллельного выполнения Также рассматривается возможность параллелизма в используемых алгоритмах.

Криптография, открытый ключ, секретный ключ, гост 28147-89

Короткий адрес: https://sciup.org/140121157

IDR: 140121157

Текст научной статьи Стандартные криптографические алгоритмы шифрования

Шифрование используется для защиты данных от посторонних. Процесс шифрования данных делится на две составляющие: зашифрование и расшифрование информации. Перед отправлением данных они зашифровываются, при получении – расшифровываются.

Шифрование обеспечивает три состояния безопасности информации:

  • 1.    Конфиденциальность – шифрование используется для скрытия информации от неавторизованных при передаче или хранении.

  • 2.    Целостность – шифрование не допускает изменения данных при передаче или хранении.

  • 3.    Идентифицируемость – ограничивает доступ к данным посторонним пользователям без специального ключа.

Шифром называется пара алгоритмов, реализующих зашифрование и расшифрование, т.е. пара шифрующей и расшифровывающей функций:

  • •    Шифрующая функция: Е: М ^ С

  • •    Расшифровывающая функция: D:C ^ М

Преобразование зашифровывающей функции происходит с использованием некоторого ключа К 1 . Преобразование расшифровывающей функции - ключа К2 .

  • •     Симметричные алгоритмы – алгоритмы, в которых для

расшифрования и зашифрования используется один и тот же ключ, т.е. К = К = К 2 .

  • •     Ассиметричные алгоритмы (алгоритмы с открытым ключом) –

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

В данной статье рассматриваются симметричные алгоритмы шифрования данных. В настоящее время наиболее популярными являются AES (USA), DES (USA), ГОСТ 28147-89 (СССР, РФ).

Рассмотрим в подробностях каждый алгоритм с теоретической точки зрения.

ГОСТ 28147-89

Описание

ГОСТ 28147-89 – советский и российский стандарт симметричного шифрования, ведённый в 1990 году. Также является стандартом СНГ. Представляет из себя блочный шифр с 256-битным ключом и 32 циклами преобразования. Данные на входе разбиваются на блоки по 64 бита. Основа алгоритма – сеть Фейстеля.

Режимы работы

Существует 4 основные режима работы данного алгоритма:

  • 1.   Простая замена

  • 2.   Гаммирование

  • 3.   Гаммирование с обратной связью

  • 4.   Режим выработки имитовставки

Остановимся на режиме простой замены подробнее.

Режим простой замены

Известен как «режим электронной кодовой книги» (ECB – Electronic Codebook).

На входе: 64-битный блок данных, 256-битный ключ.

Рассмотрим алгоритм зашифрования по шагам:

  • 1.    Разбиванием входной блок данных на две половины: пусть младшие 32 бита - это А, старшие 32 бита - это В.

  • 2.   Генерируем 8 32-битных ключей из исходного ключа. Для этого

  • 3.    Далее генерируются ключи К9 . К24 как циклическое повторение ключей К1 ...К8. Ключи К25 . К32 - как обратный цикл К8 ... К1.

  • 4.    Далее производится зашифрование данных в 32 раунда, т.е. 32 раза применяется сеть Фейстеля. Выполняются операции А;+1 = B j ф КА^КУ Bl+ i = At :

разбиваем 256-битный входной ключ на 8 блоков по 32 бита. 0-ой бит исходного ключа - это 0-ой бит ключа К 1 , 32-ой бит исходного ключа - это 0-ой бит ключа К2, ... , 224-ый бит исходного ключа - это 0-ой бит ключа К8.

  • а.    Содержимое A j суммируется с ключом К по модулю 2 32 и помещается в S.

  • b.    Содержимое S разбивается на восемь 4-битных блоков, каждый из которых проходит через таблицу замен. Таблица замен представляет собой матрицу 8х16, каждая строка которой соответствует номеру блока, а столбец - значению блока. Т.е. если S j = j, то мы берём из таблицы замен значение i- ой строки, j-ого столбца и помещаем его в Sj . Далее все блоки собираем обратно в 32-битное слово.

  • с.    Полученный результат S циклически сдвигаем на 11 бит влево (к старшим разрядам).

  • d.    Результирующее значение сдвига суммируем с В по модулю 2, т.е. R = S®B.

  • e.    Старое значение А заменяем на В.

  • f.    В А помещаем результат R.

  • 5.    После последнего (32-ого) цикла информация в А сохраняется, а в В помещается последнее значение R.

  • 6.    В конечном итоге значение А является старшим блоком, а В -младшим.

Алгоритм расшифрования выполняется также, за исключением того что ключи вычисляются следующим образом: с 1 по 8 в прямом порядке, с 9 по 32 – в обратном.

Схема работы сети Фейстеля в алгоритме зашифрования методом простой замены:

Рис. 1 Преобразование сетью Фейстеля в алгоритме ГОСТ 28147-89

DES (Data Encryption Standard)

Описание

DES – симметричный алгоритм шифрования, разработанный IBM и утверждённый правительством США в 1977 годом, как официальный стандарт.

DES имеет блоки по 64 бита и 16-цикловую структуру сети Фейстеля. Использует ключ длиной 56 бит.

Схема шифрования алгоритма DES

В основе алгоритма лежит преобразование сетью Фейстеля. Для зашифрования используется прямое преобразование сетью Фейстеля, для расшифрования – обратное.

Рис. 2 Прямое преобразование сетью Фейстеля в алгоритме DES

Рис. 3 Обратное преобразование сетью Фейстеля в алгоритме DES

Начальная перестановка

На входе получаем 64-битный блок данных Т. Этот блок преобразуется с помощью начальной перестановки (Input Permutation) IP, которая определяется таблицей:

58

50

42

34

26

18

10

2

60

52

44

36

28

20

12

4

62

54

46

38

30

22

14

6

64

56

48

40

32

24

16

8

57

49

41

33

25

17

9

1

59

51

43

35

27

19

11

3

61

53

45

37

29

21

13

5

63

55

47

39

31

23

15

7

Табл. 1 Начальная перестановка

По таблице 0-ой бит заменяется на 58, 1-ый на 50, …, 63-ий на 7.

На выходе преобразованный блок IP(T).

Циклы шифрования

Разбивает блок IP(T) на 2 половины по 32 бита: IP(T) = L0R0.Далее идут 16 циклов преобразования Фейстеля.

Результат i-ой итерации Т = L i R i определяется как:

L t = R i-i

R i = L QKR i-b k i )

k i - результат преобразования 56-битного исходного ключа (подробнее про генерацию ключей ниже).

Рассмотрим подробнее функцию f.

Функция Фейстеля

На входе: 32-битный блок данных R i-1 и 48-битный ключ k i .

Ri-1 (32 бит)

A

перестановка битов Р

f(Ri-1,ki) (32 бит)

Рис. 4 Краткая схема работы функции f

Для начала необходимо расширить блок данных до размера ключа, т.е. до 48 бит. Для этого используется функция расширения Е. Функция Е расширяет 32-битный блок до 48-битного путём дублирования некоторых битов из исходного блока. Преобразование выполняется по следующей таблице:

32

1

2

3

4

5

4

5

6

7

8

9

8

9

10

11

12

13

12

13

14

15

16

17

16

17

18

19

20

21

20

21

22

23

24

25

24

25

26

27

28

29

28

29

30

31

32

1

Табл. 2 Функция расширения E

После расширения, полученный блок E(R i-1 ) складывается с ключом по модулю 2, т.е. В = E(Ri-1)^kl .

Далее блок В разбивается на 8 одинаковых последовательных блоков длиной 6 бит. Выполняется замена 6-битных блоков на 4-битные с помощью таблицы преобразований S.

Преобразование Si выполняется над блоком В ^ следующим образом:

0-ой и 5-ый бит блока представляют число т от 0 до 3 в двоичном виде. Это число - номер строки в таблице подстановок S i . Средняя часть блока -биты 1-4 - это двоичное представление числа п от 0 до 15 - номера столбца в таблице подстановок S i . Таким образом получаем:

В\= S i (m,n)

Конечное значение функции f(R i-1 ,k i ) получается перестановкой Р, применяемой к 32-битному блоку В'.

6

1

7

0

2

1

2

9

2

2

1

8

2

7

1

1

5

1

3

2

6

2

5

8

1

1

3

0

1

2

8

4

2

4

1

2

3

7

2

3

9

9

1

3

1

0

3

6

2

2

1

1

4

5

2

Табл. 3 Таблица перестановок P

Таким образом получаем f(Ri-1, ki) = Р(В') - искомое значение функции Фейстеля.

Генерирование ключей k

16 ключей k i получаются из начального ключа k следующим образом.

Из исходного ключа убираются 8 бит: 7, 15, 23, 31, 39, 47, 55, 63 (№ битов от 0 до 63). Далее выполняется следующая перестановка:

67

49

41

33

26

17

9

1

58

50

42

34

26

18

10

2

59

51

43

36

27

19

11

3

60

62

44

36

63

55

47

39

31

23

15

7

62

54

46

38

30

22

14

6

61

63

45

37

29

21

13

5

28

20

12

4

Табл. 4 Таблица перестановок расширенного ключа

Перестановка применяется к каждого из ключей k i со смещением, в зависимости от i по следующей таблице:.........

i

0

1

2

3

4

5

6

дви г

Табл. 5 Таблица сдвигов i-ого ключа

Далее идёт сжатие ключа с 56-битного до 48-битного по следующей таблице:

14

17

11

24

1

5

3

28

15

6

21

10

23

19

12

4

26

8

16

7

27

20

13

2

41

52

31

37

47

55

30

40

51

45

33

48

44

49

39

56

34

53

46

42

50

36

29

32

Табл. 6 Таблица сжатия ключей

Таким образом на выходе получаем 16 48-битных ключей для каждой итерации цикла.

Конечная перестановка

На входе: зашифрованный блок Т длиной 64 бита.

Над блоком выполняется конечная перестановка -1(Т) обратная начальной по следующей таблице:

40

8

48

16

56

24

64

32

39

7

47

15

55

23

63

31

38

6

46

14

54

22

62

30

37

5

45

13

53

21

61

29

36  4  44  12  52  20  60  28  35  3  43

34  2  42

10  50  18  58  26  33

1  41  9

19  59  27

49  17  57  25

Табл. 7 Конечная перестановка IP-1

AES128 (Advanced Encryption Standard)

Описание

Алгоритм AES, также известный как Rijndael – симметричный алгоритм блочного шифрования (блок 128 бит, ключ 128/192/256 бит). Принят в качестве стандарта шифрования правительством США по результатам конкурса AES. 26.05.2002 официально объявлен стандартом шифрования США.

AES является упрощенной версией алгоритма Rijndael. Rijndael поддерживает блоки длиной 128/192/256 бит.

Терминология

Байт – последовательность из 8 бит. В данном алгоритме байт – элемент поля Галуа GF(2 8 ), т.е. байту соответствует многочлен Y i= 0biXi в поле GF(2Q)

Слово – последовательность из 4 байтов.

Блок – последовательность из 16 байтов.

Ключ – последовательность из 16 байтов.

Форма (state) – двумерный массив байтов из 4 строк. В алгоритме AES байты располагаются в следующей форме:

Раунд – итерация цикла преобразований над формой. Для длины ключа 128 бит определено 10 раундов.

Таблица подстановок – таблица, задающая биективное отображение байта в байт.

1

0

1

2

3

4

5

6

7

8

9

a

b

c

e

f

X

0

63

77

f2

6b

6f

c5

30

01

67

2b

fe

d7

ab

76

1

са

82

с9

7d

fa

59

47

fO

ad

d4

a2

af

9c

a4

72

cO

2

Ь7

fd

93

26

36

3f

f7

cc

34

a5

e5

fl

71

d8

31

15

3

04

с7

23

сЗ

18

96

05

9a

07

12

80

e2

eb

27

b2

75

4

09

83

lb

6e

5 a

aO

52

3b

d6

b3

29

e3

2f

84

5

53

dl

00

ed

20

fc

bl

5b

6a

cb

be

39

4a

4c

58

cf

6

dO

ef

аа

fb

43

4d

33

85

45

f9

02

7f

50

3c

9f

a8

7

51

аЗ

40

8f

92

9d

38

f5

be

b6

da

21

10

ff

f3

d2

8

cd

Ос

13

ес

5f

97

44

17

c4

a7

3d

64

5d

19

73

9

60

81

4f

de

22

2a

90

88

46

ее

b8

14

de

5e

Ob

db

а

eO

32

За

Оа

49

06

24

5c

c2

d3

ac

62

91

95

e4

79

Ь

е7

с8

37

6d

8d

d5

4a

a9

6c

56

£4

ea

65

7a

ae

08

С

Ьа

78

25

1c

a6

b4

c6

e8

dd

74

If

4b

bd

8b

8a

d

70

Зе

Ь5

66

48

03

f6

Oe

61

35

57

b9

86

cl

Id

9a

е

el

f 8

98

11

69

d9

8e

94

9b

le

87

e9

ce

55

28

df

f

al

89

Od

bf

e6

42

68

41

99

2d

Of

bO

54

bb

16

Табл. 8 Таблица подстановок (S-box) Nb – количество слов в блоке.

Nk – количество слов в ключе. (В нашем случае всегда 4) Nr – количество раундов. (В нашем случае всегда 10)

Шифрование

Общая схема шифрования приведена ниже:

Рис. 5 Схема шифрования AES

В алгоритме используются следующие процедуры преобразования:

•     ExpandKey – вычисление раундных ключей для всех раундов.

•     SubBytes – подстановка байтов с помощью таблицы подстановок.

•    ShiftRows – циклический сдвиг строк в форме на различные величины.

  • •     MixColumns – смешивание данных внутри каждого столбца

формы (state).

  • •     AddRoundKey – сложение ключа раунда с формой.

Рассмотрим подробнее каждую составляющую алгоритма:

Преобразование SubBytes

Преобразование заключается в замене каждого байта 0xXY на соответствующий по таблице подстановок (табл. 8).

Преобразование ShiftRows

Преобразование заключается в циклическом сдвиге влево каждой строки формы. Преобразование выполняется по следующей схеме:

*0 0

*01

*0;2

*0;3

1Ш5

*о,о

Jo3i

\2

*0 3

*10

'Sy

$1 '

Лз

SU

*12

*1,3

*1,0

*20

*2,1

*2.2

*2,3

рД^]

’$2,2

*2.3

*2.0

*2.1

*зо

*зд

*30

*3.3

1 1 1 ^

S33

^3.0

*зд

*3 2

Рис. 6 Преобразование ShiftRows

Первая строка не сдвигается, вторая сдвигается на 1 байт, третья – на 2, четвертая – на три.

Преобразование MixColumns

Рис. 7 Преобразование MixColumns

Преобразование заключается в следующем: каждый столбец представляется как полином четвёртой степени, умножается на многочлен c(x) = 3x3 + x2 + x + 2 по модулю %4 + 1 в поле GF(28). Т.к. у нас количество строк фиксировано и равно 4, программно мы можем заменить данную операцию на умножение каждого столбца на квадратную матрицу 4ого порядка:

’ 4,'

’ 02 03 01 01 ’

So,с

*V

01 02 03 01

31,с

SL

01 01 02 03

32,с

_ *3,с _

03 01 01 02

_ S'V _

Над каждым столбцом умножение производится отдельно

Преобразование AddRoundKey

В преобразовании 32-битные слова раундового ключа прибавляются к столбцам формы по модулю 2.

Рис. 8 Преобразование AddRoundKey

Над каждым столбцом операция производится отдельно.

Функция расширения ключа ExpandKey

В алгоритме AES генерируются раундовые ключи на основе ключа шифрования с помощью процедуры ExpandKey. Процедура создаёт Nb * (N'T + 1) слов. Необходим начальный ключ размером Nb. Каждый раунд требует ключ из Nb слов. В нашем случае со 128-битным ключом получается 44 слова для 11 ключей.

Алгоритм заполнения таблицы ключей (4х11) состоит из 4 итераций

цикла:

  •    На каждой итерации идёт работа с колонкой таблицы. Колонки 0…3 заполнены значениями из исходного ключа. Начинаем с колонки 4. (4 – для 128 битного ключа)

Если номер текущей колонки i кратен Nk (4 в нашем случае), то берём колонку слева (i — 1), выполняем над ней циклический сдвиг влево на

1 элемент, затем над каждым байтом выполняем преобразование SubBytes из таблицы подстановок. Далее выполняется операция XOR между колонкой i —

Nk, колонкой i — 1 и колонкой таблицы RCon( ^ )

(см. табл. 9). Результат

заносится в колонку i.

•    Для остальных колонок выполняется команда сложения по модулю 2 (XOR) между колонками i — 1 и i — Nk.__

01

02

04

08

10

20

40

80

1b

36

00

ОО

00

00

00

00

00

00

00

ОО

00

ОО

00

00

00

00

00

00

00

00

00

ОО

00

00

00

00

00

00

00

00

Табл. 9 Таблица RCon

На выходе имеется таблица, содержащая 11 раундовых ключей.

Расшифрование

Общая схема расшифрования AES:

Рис. 9 Общая схема расшифрования алгоритма AES

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

InvSubBytes – подстановка байтов с помощью обратной таблицы подстановок.

InvShiftRow – циклический сдвиг вправо.

InvMixColumns – смешивание данных внутри каждого столбца формы.

Остальные процедуры остаются неизменными.

0

1

2    3

4    5    6

7    8    9 a

b c

def

X

0

52

09

6a

d5

30

36

a5

38

bf

40

a3

9e

81

f3

d7

fb

1

7c

e3

39

82

9b

2f

ff

87

34

Be

43

44

c4

de

e9

cb

2

54

94

32

аб

C2

23

3d

ее

4c

95

Ob

42

fa

c3

4 e

3

4

08

72

2a

f8

al f6

66

64

28

86

d9

68

24

98

b2

16

76 d4

5b a4

a2

5c

49 cc

6d

5d

fib

65

dl b6

25

92

5

6c

70

48

50

fd

ed

b9

da

5c

15

46

57

a7

Bd

9d

84

6

90

d8

ab

00

8c

be

d3

Oa

f7

e4

58

05

b8

ьз

45

06

J? a

dO 3a

2 c

91

le

11

8f

41

ca

4f '

3f

67

Of de

02 ea

cl

9 7

af f 2

bd 03 cf ce

01 f 0

13

Ь4

8a

06

6b

73

9

96

ac

74

22

a7

ad

35

85

e2

f9

37

e8

1c

75

df

6e

a

47

fl

la

71

Id

29

c5

89

6f

b7

62

Oe

aa

18

be

lb

b

£c

56

3e

4b

c6

d2

79

20

9a

db

cO

fe

78

cd

5a

f4

c d

If

60

dd

5 1

a8

7f

33

a9

88

19

07 b5

c7

4a

3 1

Od

bl 2d

12 e5

10  59

7a 9f

27  80

93 ' c9

ec 9c

5f ef

e

aO

eO

3b

4d

ae

2a

f5

bo

c8

eb

bb

3c

83

53

99

61

f

17

2b

04

7e

ba

77

d6

26

el

69

14

63

55

21

Oc

7d

Табл. 10 Обратная таблица подстановок

Режимы применения

  • 1.    Режим ECB (Electronic Codebook) – каждый блок шифруется независимо от других.

  • 2.    Режим CBC (Cipher Block Chaining) – к каждому следующему блоку добавляется результат шифрования предыдущего блок по модулю 2.

  • 3.    Режим CFB (Cipher Feed Back) – к каждому следующему блоку прибавляются s битов предыдущего блока по модулю 2.

  • 4.    Режим OFB (Output Feed Back) – входной блок – результат применения AES к предыдущему входному блоку.

Реализация алгоритмов

Диаграмма классов

Классы для алгоритма ГОСТ 28147-89

Базовым классом реализации данного алгоритма является класс GOSTCrypto со следующим набором методов и свойств:

  • •     SubstitutionBox – 2-мерный массив байт таблицы постановки.

  • •     GenerateKeys – метод генерации 8 ключей из исходного ключа.

  • •     Substitution – метод подстановки из SubstitutionBox согласно

    алгоритму ГОСТ 29147-89.

Данный класс имеет 2 наследника:  GOSTCryptoEncoder и

GOSTCryptoDecoder. Оба класса содержат по три метода для зашифрования/расшифрования блока, в зависимости от входных данных, и метод зашифрования/расшифрования одного блока.

Классы для алгоритма DES

Базовым классом реализации данного алгоритма является класс DESCrypto. Он содержит необходимые методы и поля для зашифрования/расшифрования:

  • •     InputPermutation - таблица IP подстановки.

  • •     FinalPermutation - таблица IP-1 подстановки.

  • •     ExpansionPermutation - таблица для преобразования Е

(расширение ключа).

  • •     SubstituionBoxes - матрица подстановок S.

  •    Permutation - таблица перестановки P.

  • •     PC1Permutation и PC2Permutation – таблицы подстановок для

генерации ключей.

  • •     Rotations – таблица сдвигов при генерации ключей.

  • •     Substitution6x4 – функция Фейстеля.

  • •     GenerateSubkeys – метод для генерации ключей из исходного

ключа.

  • •     Остальные методы данного класса являются вспомогательными

для различных разбиений/объединений/логических операций.

Данный класс также имеет 2 наследника: DESCryptoEncoder и DESCryptoDecoder, которые содержат по 3 метода для зашифрования/расшифрования входных данных и один метод для зашифрования/расшифрования одного блока.

Классы алгоритма AES128

Базовым классом реализации данного алгоритма является класс AESCrypto. Он содержит следующие поля и методы:

  •    NumberOfColumns – количество колонок в форме. В теоретических данных - Nb.

  •    NumberOfRounds – количество раундов. В теоретических данных - N'T.

  • •     KeyLength – длина ключа в байтах.

  • •     SubstitutionBox – таблица подстановок для зашифрования.

  • •     InverseSubstitutionBox – таблица подстановок для

расшифрования.

  • •     RCon – матрица RCon.

  • •     SubBytes – метод для шага SubBytes алгоритма. Параметр invert

указывает на направление операции шифрования.

  • •     MixColumns – метод для шага MixColumns алгоритма. Параметр

invert указывает на направление операции шифрования.

  • •     ShiftRows – метод для шага ShiftRows алгоритма. Параметр invert

указывает на направление операции шифрования.

  • •     KeyExpansion – метод для шага ExpandKey алгоритма.

Расширение исходного ключа.

  • •     AddRoundKey – метод для шага AddRoundKey алгоритма. В

качестве параметров принимает текущую форму, матрицу ключей, номер раунда.

  • •     Остальные методы являются вспомогательными и реализуют

сдвиги массивов байт влево/вправо, а также умножение в поле GF(2Q).

Данный класс также имеет 2 наследника: AESCryptoEncoder и AESCryptoDecoder, которые содержат по 3 метода для зашифрования/расшифрования входных данных и один метод для зашифрования/расшифрования одного блока.

Параллелизм в алгоритмах

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

Заключение

Наиболее объективным выводом о проделанной работе будет сравнение производительности данных алгоритмов при различных входных данных в режиме последовательного и параллельного выполнения.

Объём

16 байт

32 байта

64 байта

512 байт

1 кбайт

2 кбайта

10 кбайт

AES Not Parallel

4

72

70

102

111

166

264

AES Parallel

30

35

25

15

68

71

210

DES Not Parallel

1

2

1

16

28

60

169

DES Parallel

1

2

1

12

26

50

120

ГОСТ Not Parallel

1

1

1

8

18

39

237

ГОСТ Parallel

1

1

1

10

16

30

170

Значения в ячейках таблицы – время в милисекундах, затраченное на зашифрование данных.

Составим аналогичную таблицу для расшифрования.

Объём

16 байт

32 байта

64 байта

512 байт

1 кбайт

2 кбайта

10 кбайт

AES Not Parallel

2

2

2

12

24

48

263

AES Parallel

16

3

3

10

22

39

224

DES Not Parallel

1

1

3

17

37

63

319

DES Parallel

2

2

3

13

24

49

234

ГОСТ Not Parallel

1

1

1

11

16

37

187

ГОСТ Parallel I 2 I 1 I 1 I 10 I 16 I 36 I 126 I

Исходя из этих двух таблиц можно сделать следующие выводы:

  • 1.    Алгоритм AES наиболее трудоёмкий и ресурсозатратный. В общем-то это оправдано тем, что в настоящее время он является наиболее криптостойким алгоритмом.

  • 2.    Выгода параллельных вычислений заметно увеличивается при увеличении объёма данных.

  • 3.    Соотношение между параллельным и последовательным алгоритмом в производительности получается относительно небольшим значением в алгоритмах DES и ГОСТ, т.к. время, затраченное на разбиение данных на блоки, примерно равно времени шифрования одного блока.

  • 4.    Для алгоритма AES128 это же соотношение довольно заметно на больших объёмах данных. Объясняется тем, что у AES процесс шифрования одного блока значительно более трудоемкий, чем у DES или ГОСТ, в связи с этим разница становится более заметно.

Список литературы Стандартные криптографические алгоритмы шифрования

  • «AES Proposal: Rijndael» -Joan Daemen, Vincent Rijmen, 1998
  • «Криптография на Си и С++ в действии.» -М. Вельшенбах, ISBN 5-89392-083-X, 2004
  • ГОСТ 28147-89 “Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.»
  • «Основы криптографии» -А. П. Алферов, А. Ю. Зубов
  • http://ru.wikipedia.org/
  • http://habrahabr.ru/
Статья научная