СТАНДАРТНЫЕ КРИПТОГРАФИЧЕСКИЕ АЛГОРИТМЫ ШИФРОВАНИЯ

По расходной накладной товар отправляется либо в торговый зал, либо обратно поставщику.

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

Использованные источники:

1. Цебренко К.Н. Разработка электронной информационно-образовательной среды частной образовательной организации// Экономика и социум - Саратов: ООО "Институт управления и социально-экономического развития". 2015. -С. 108-111.

2. Цебренко К.Н. Системы поддержки принятия решений в современном менеджменте// Альманах мировой науки - Москва: ООО "АР-Консалт". 2016. -С. 83-84.

Чернявский Э. А. студент 5 курсА факультет "Компьютерные системы и сети"

Ледяев В. П. студент 5 курсА факультет "Компьютерные системы и сети" Белорусский государственный университет информатики и радиоэлектроники Беларусь, г. Минск СТАНДАРТНЫЕ КРИПТОГРАФИЧЕСКИЕ АЛГОРИТМЫ

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

Ключевые слова: криптография, открытый ключ, секретный ключ, AES128, DES, ГОСТ 28147-89.

Vladimir Ledyaev,

5th year student, Faculty of Computer Systems and Networks, Belarussian State University of Informatics and Radioelectronics,

Belarus, Minsk, Edward Chernyavsky, 5th year student, Faculty of Computer Systems and Networks, Belarussian State University of Informatics and Radioelectronics,

Belarus, Minsk, BASE CRYPTOGRAPHY ALGORITHMS

The symmetric algorithms of data encryption are reviewed in this article. GOST 28147-89, DES and AES128 are described. Comparing of performance of these algorithms with different input data in consecutive and parallel processing is reviewed. Also the possibility ofparallelism of these algorithms is described.

Keywords: cryptography, public key, private key, AES128, DES, GOST 28147-89.

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

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

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

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

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

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

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

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

Преобразование зашифровывающей функции происходит с использованием некоторого ключа Кг. Преобразование расшифровывающей функции - ключа К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-битных ключей из исходного ключа. Для этого разбиваем 256-битный входной ключ на 8 блоков по 32 бита. 0-ой бит исходного ключа - это 0-ой бит ключа Къ 32-ой бит исходного ключа - это 0-ой бит ключа К2, ... , 224-ый бит исходного ключа - это 0-ой бит ключа К8.

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

4. Далее производится зашифрование данных в 32 раунда, т.е. 32 раза применяется сеть Фейстеля. Выполняются операции At+t = Bt 0 f(Ai,Ki); В+г = At:

a. Содержимое At суммируется с ключом Kt по модулю 232 и помещается в S.

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

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

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

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

£ В А помещаем результат Я.

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

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

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

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

32-6итный входной блок

Ключ К, +

4 4 4 4 4 I 4 4 4

бит бит бит бит бит бит бит бит

S, Sa s3 S« s5 S* s7 s8

4 бит 4 бит 4 бит 4 бит 4 бит 4 бит 4 бит 4 бит

«11 бит

1

32-битный выходной блок

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

DES

Описание

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. На выходе преобразованный блок 1Р(Т).

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

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

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

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

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

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

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

Рис. 4 Краткая схема работы функции £ Для начала необходимо расширить блок данных до размера ключа, т.е. до 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(Rt-1) складывается с ключом по модулю 2, т.е. В = E(Ri-1)ki.

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

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

B'i = Si

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

1 6 7 2 0 2 1 2 9 1 2 2 8 1 7

1 1 5 2 3 2 6 5 1 8 3 1 1 0

2 8 2 4 1 4 3 2 2 7 3 9

1 9 1 3 3 0 6 2 2 1 1 4 2 5

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

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

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

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

57 49 41 33 25 17 9 1 58 50 42 34 26 18

10 2 53 51 43 35 27 19 11 3 60 52 44 36

63 55 47 39 31 23 15 7 62 54 46 38 30 22

14 6 61 53 45 37 23 21 13 5 28 20 12 4

Табл. 4 Таблица перестановок расширенного ключа Перестановка применяется к каждого из ключей к^ со смещением, в зависимости от I по следующей таблице:_

/ 0 1 2 3 4 5 6

дви г

Табл. 5 Таблица сдвигов 1-ого ключа Далее идёт сжатие ключа с 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 бита. Над блоком выполняется конечная перестановка IР-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 11 51 19 59 27

34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25

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

AES128

Описание

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

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

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

Байт - последовательность из 8 бит. В данном алгоритме байт - элемент поля Галуа GF(28), т.е. байту соответствует многочлен Yi^obiX1 в поле GF(28).

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

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

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

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

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

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

У

0 1 2 3 4 5 6 7 8 9 a b с d e f

0 63 7с 77 7Ь £2 6b 6f c5 30 01 67 2b fe d7 ab 76

1 са 82 с9 7d fa 59 47 fO ad d4 a2 a£ 9c a4 72 cO

2 Ъ7 fd 93 26 36 3f f 7 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 2с 1а lb 6e 5a 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 d0 ef аа fb 43 4d 33 85 45 f 9 02 If 50 3c 9f a8

7 51 аЗ 40 8f 92 9d 38 £5 be b6 da 21 10 ££ f3 d2

8 cd 0с 13 ее 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73

9 60 81 4£ dc 22 2a 90 88 46 ее b8 14 de 5e 0b db

а е0 32 За 0а 49 06 24 5c c2 d3 ac 62 91 95 e4 79

Ь е7 с8 37 6d 8d d5 4e a9 6c 56 f 4 ea 65 7a ae 08

с Ьа 78 25 2е lc 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 9e

е el f 8 98 11 69 d9 8e 94 9b le 87 e9 ce 55 28 df

f 8с al 89 0d bf e6 42 68 41 99 2d Of bO 54 bb 16

Табл. 8 Таблица подстановок

№ - количество слов в блоке.

№ - количество слов в ключе.

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

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

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

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

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

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

• MixColumns - смешивание данных внутри каждого столбца формы (state).

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

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

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

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

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

Преобразование заключается в циклическом сдвиге влево каждой

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

^од 42

1

^2.0 ^2,2 ^1 ъ

^3,0 ¿3.1 ¿3,

а

г

г

0 50Д

*3:3 ^ п

Рис. 6 Преобразование БЫйКолуб Первая строка не сдвигается, вторая сдвигается на 1 байт, третья - на 2, четвертая - на три.

Преобразование М\хСо1итт

Рис. 7 Преобразование М1хСо1ишпв

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

г 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02

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

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

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

о'

О* —

2,с

$0,с

$2,с

_ ¿ .V _

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

Функция расширения ключа Ехра^Кеу

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

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

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

• Если номер текущей колонки I кратен № (4 в нашем случае), то берём колонку слева (I — 1), выполняем над ней циклический сдвиг влево на 1 элемент, затем над каждым байтом выполняем преобразование SubBytes из таблицы подстановок. Далее выполняется операция XOR между колонкой I —

Ык, колонкой I — 1 и колонкой таблицы ) (см. табл. 9). Результат

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

• Для остальных колонок выполняется команда сложения по

01 02 04 08 10 20 40 80 1Ь 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 00 00 00 00

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

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

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

1пу8иЬБу1ев - подстановка байтов с помощью обратной таблицы подстановок.

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

1пуМ1хСо1ишпв - смешивание данных внутри каждого столбца формы. Остальные процедуры остаются неизменными.

У

0 1 2 3 4 5 6 7 8 9 а Ь с (1 е £

0 52 09 6а аь 30 36 аЬ 38 Ь£ 40 аЗ 9е 81 £3 а7 £Ь

1 7с еЗ 39 82 9Ь 2£ ff 87 --,4 Вя 43 44 с4 ае е9 сЬ

2 54 7Ь 94 32 аб с2 23 3<1 ее 4с 95 оь 42 £ а сЗ 4 е

3 08 2 е а 1 66 28 <19 24 Ь2 76 5Ь л2 49 6Л еь а1 25

4 72 £8 £6 64 В6 68 98 16 (14 а4 5с сс 5(1 65 Ьб 92

5 бс 70 48 50 са ей Ь9 сЗа 5е 15 46 57 а7 еа 9а 84

6 90 <18 аЬ 00 8с Ьс <13 0а £7 е4 58 05 Ь8 ьз 45 06

7 ¿0 2 с 1е 8£ са 3£ 0£ 02 с1 а£ Ь<1 03 01 13 8а 6Ь

8 За 91 11 41 4£ 67 (1с еа 97 £2 с£ се £0 Ь4 еб 73

9 96 ас 74 22 в7 ас! 35 85 е2 £9 37 е8 1с 75 <1£ бе

а 47 £1 1а 71 1(1 29 89 б£ Ь7 62 Ое аа 18 Ье 1Ь

Ь £с 56 Зе 4Ь сб <12 79 20 9а сЗЬ сО £е 78 са 5а £4

с 1£ а8 33 88 07 с7 31 Ы 12 10 59 27 80 ее 5 £

а 60 51 11 а9 19 Ъ5 4а 0<1 2Л е5 7а 9 £ 93 с9 9с е£

е аО еО ЗЬ 4 с1 ае 2а £5 ЬО с8 еЬ ЬЬ Зс 83 53 99 61

£ 17 2Ь 04 7в Ьа 77 <16 26 е1 69 14 63 55 21 0с 7а

Табл. 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 - таблица перестановки Р.

• PCIPermutation и PC2Permutation - таблицы подстановок для генерации ключей.

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

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

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

• Остальные методы данного класса являются вспомогательными для различных разбиений/объединений/логических операций.

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

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

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

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

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

- Nr.

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

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

• InverseSubstitutionBox - таблица подстановок для расшифрования.

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

• SubBytes - метод для шага SubBytes алгоритма. Параметр invert указывает на направление операции шифрования.

• MixColumns - метод для шага MixColumns алгоритма. Параметр invert указывает на направление операции шифрования.

• ShiftRows - метод для шага ShiftRows алгоритма. Параметр invert указывает на направление операции шифрования.

• КеуЕхрашюп - метод для шага ЕхраМКеу алгоритма. Расширение исходного ключа.

• ЛёёКоипёКеу - метод для шага AddRoundKey алгоритма. В качестве параметров принимает текущую форму, матрицу ключей, номер раунда.

• Остальные методы являются вспомогательными и реализуют сдвиги массивов байт влево/вправо, а также умножение в поле СР(28).

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

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

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

Заключение

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

16 32 64 512 2 10

Объём байт байта байта байт 1 кбайт кбайта кбайт

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 2 10

Объём байт байта байта байт 1 кбайт кбайта кбайт

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

I ГОСТ Parallel | 2 | 1 | 1 | 10 | 1б | 3б | 12б | Исходя из этих двух таблиц можно сделать следующие выводы:

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

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

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

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

Использованные источники:

1. «AES Proposal: Rijndael» - Joan Daemen, Vincent Rijmen, 1998

2. «Криптография на Си и С++ в действии.» - М. Вельшенбах, ISBN 5-89392-083-X, 2004

3. ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.»

4. «Основы криптографии» - А. П. Алферов, А. Ю. Зубов

5. http://ru.wikipedia.org/

6. http ://habrahabr.ru/