В данной статье рассматриваются два криптоалгоритма, входящих в состав ГОСТ Р 34.12–2015 и сравнивается их быстродействие.
Ключевые слова: ГОСТ Р 34.12–2015, «Кузнечик», «Магма», криптоалгоритмы.
В настоящее время особо остро стоит проблема безопасной передачи информации в каналах общей связи. Простейшим вариантом решения этой проблемы является шифрование передаваемой информации, чтобы в случае ее попадания не по месту назначения, посторонний человек не смог ею воспользоваться.
Большинство российских компаний, связанных с защитой информации, достаточно активно используют ГОСТ Р 34.12–2015. Данный ГОСТ включает в себя два блочный криптоалгоритма, которые получили названия «Кузнечик» и «Магма».
Краткое описание алгоритма «Магма». Данный алгоритм является копией блочного алгоритма шифрования и ГОСТ 28147–89 с заданной таблицей перестановок. Длин шифруемых блоков равна 64 бита, длина ключа шифрования — 256 бит.
В «Магме» каждый блок информации разделяется на две равные по длине (32 бита) части — правую и левую. Далее выполняется тридцать две итерации с использованием итерационных ключей, получаемых из исходного ключа шифрования. Во время каждой итерации с первой по тридцать первую с правой и левой половиной зашифровываемого блока производится одно преобразование, основанное на сети Фейстеля порядок действий следующий:
— правая часть складывается по модулю 32 с текущим итерационным ключом, затем полученное 32-битное число делится на восемь 4-битных и каждое из них с использованием таблицы перестановки преобразуется в другое 4-битное число;
— полученное число циклически сдвигается влево на одиннадцать разрядов;
— результат складывается по модулю два с левой половиной блока, получившееся 32-битное число записывается в правую половину блока, а старое содержимое — в левую половину.
В ходе последней (тридцать второй) итерации так же, преобразуется правая половина, после чего полученный результат пишется в левую часть исходного блока, а правая половина сохраняет свое значение.
Итерационные ключи получаются из исходного 256-битного ключа. Исходный ключ делится на восемь 32-битных подключей, и далее они используются в следующем порядке: три раза с первого по восьмой и один раз с восьмого по первый.
Немного об алгоритме «Кузнечик». Основу алгоритма составляет подстановочно-перестановочная сеть (SP — Substitution-Permutation network). Шифр на такой основе получает на вход блок данных (для алгоритма «Кузнечик» 128 бит) и ключ, с которыми совершает несколько чередующихся раундов, состоящих из нескольких стадий. В «Кузнечике» каждый раунд включает в себя:
— линейное преобразование;
— нелинейное преобразование;
— операцию наложения итерационного ключа.
Всего таких раундов десять, первых девять раундов проходят полностью, а последнем неполном раунде выполняется только наложение последнего итерационного ключа.
Итерационные (раундовые) ключи получаются путем преобразования мастер-ключа длиной 256 бит, полученного на входе. Процесс получения итерационных ключей начинается с разбиения мастер-ключа пополам, так получается первая пара раундовых ключей. Для генерации каждой последующей пары раундовых ключей применяется восемь итераций сети Фейстеля, в каждой итерации используется константа, которая вычисляется путем применения линейного преобразования алгоритма к значению номера итерации.
Тесты на скорость шифрования криптоалгоритмов проводились на программно-аппаратном комплексе межсетевого экранирования и VPN «Застава-150».
Первое тестирование производилось с помощью утилиты plg_test (входит в состав программного пакета, предустановленного на ПАКе «Застава-150»). Данная утилита запускает заданный алгоритм кодирования с определенным числом итераций и замеряет время необходимое для шифрования, а также вычисляет среднюю скорость шифрования в Мбит/с и итераций/с. За одну итерацию кодируется 1 Кбайт (1024 байт) информации. Данные полученные в результате тестирования (время, потраченное на шифрование определенного объема информации в зависимости от криптоалгоритма) представлены в таблице 1.
Таблица 1
Сравнительная характеристика скорости шифрования
«Кузнечик» |
«Магма» |
|
100 Кбайт |
0.007787 с |
0.005715 с |
1000 Кбайт |
0.074484 с |
0.055194 с |
10 000 Кбайт |
0.740529 с |
0.549552 с |
50 000 Кбайт |
3.708025 с |
2.748987 с |
100 000 Кбайт |
7.417684 с |
5.498026 с |
200 000 Кбайт |
14.820075 с |
10.994278 с |
1 000 000 итераций |
79.697352 с |
55.213849 с |
Так же в результате тестирования получили следующие средние показатели скорости шифрования:
— для алгоритма «Магма»: 141 Мбит/с (18188 итераций/с);
— для алгоритма «Кузнечик»: 98 Мбит/с (13403 итераций/с).
Как видно из данных, приведенных в таблице 1, и средних показателей, приведенных выше, скорость шифрования информации алгоритмом «Магма» примерно в 1,4 раза быстрее, чем алгоритмом «Кузнечик».
Второе тестирование производилось с помощью утилиты iperf (распространяется бесплатно). Iperf является консольной клиент-серверной программой — генератором TCP, UDP и SCTP трафика для тестирования пропускной способности сети. Переданный объем информации в результате тестирования в зависимости от времени передачи и алгоритма шифрования (или его отсутствия) представлен в таблице 2.
Таблица 2
Сравнительная характеристика скорости передачи информации
Без шифрования |
«Кузнечик» |
«Магма» |
|
60 секунд |
6,57 Гбайт |
0,63 Гбайт |
0,9 Гбайт |
120 секунд |
12,9 Гбайт |
1,38 Гбайт |
1,8 Гбайт |
180 секунд |
19,7 Гбайт |
2,08 Гбайт |
2,71 Гбайт |
240 секунд |
26,3 Гбайт |
2,7 Гбайт |
3,61 Гбайт |
В результате тестирования получили следующие средние показатели скорости шифрования:
— без использования криптоалгоритма: 940 Мбит/с;
— для криптоалгоритма «Магма»: 129 Мбит/с;
— для криптоалгоритма «Кузнечик»: 93 Мбит/с.
Как видно из результатов, приведенных выше, скорость передачи информации при использовании шифрования алгоритмом «Магма» примерно в 1,4 раза быстрее, чем алгоритмом «Кузнечик». Скорость передачи незащищенной информации выше в 7,3 и 10 раз, чем при передаче информации, зашифрованной криптоалгоритмами «Магма» и «Кузнечик» соответственно.
Можно сделать следующие выводы: алгоритм «Магма» реализуется проще, и скорость шифрования выше примерно в 1,4 раза, чем в алгоритме «Кузнечик». Но при этом алгоритм «Кузнечик» более современный и теоретически более стойкий, чем алгоритм «Магма».
Литература:
- ГОСТ Р 34.12–2015. Информационная технология. Криптографическая защита информации: Блочные шифры.
- Русская «Магма». Как работает отечественный алгоритм блочного шифрования. — Текст: электронный // xakep.ru: [сайт]. — URL: https://xakep.ru/2018/05/10/working-with-magma/ (дата обращения: 12.04.2021).
- Работаем с алгоритмом блочного шифрования «Кузнечик» из ГОСТ 34.12–2015. — Текст: электронный // xakep.ru: [сайт]. — URL: https://xakep.ru/2017/02/02/working-with-grasshopper/ (дата обращения: 12.04.2021).