Научная статья на тему 'МЕТОДЫ ОПТИМИЗАЦИИ ГОСТ 34.12 - 2015 "МАГМА" ДЛЯ 8 БИТНОЙ АРХИТЕКТУРЫ'

МЕТОДЫ ОПТИМИЗАЦИИ ГОСТ 34.12 - 2015 "МАГМА" ДЛЯ 8 БИТНОЙ АРХИТЕКТУРЫ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
267
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГОСТ 34.12 - 2015 "МАГМА" / МИКРОКОНТРОЛЛЕРЫ / БЛОЧНЫЕ ШИФРЫ / ИНФОРМАЦИОННАЯ БЕЗОПАСНОСТЬ / НИЗКОРЕСУРСНАЯ КРИПТОГРАФИЯ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Штанов Е.Ю., Поляков М.В.

Данная работа посвящена разработке методов оптимизации алгоритма шифрования ГОСТ Р 34.12 -2015 «Магма» при его реализации на 8-битных микроконтроллерах. В данной статье приводится ряд техник, использование которых позволяет создать специализированные реализации алгоритма: 1) ориентированную на скорость работы; 2) ориентированную на уменьшение используемой памяти устройства; 3) оптимальная, которая включила в себя лучшие решения из двух предыдущих реализаций. Для каждого метода оптимизации дано описание и приведены числовые показатели полученных результатов в сравнении с прямой реализацией алгоритма. Так, в оптимальной реализация алгоритма процесс шифрования ускорен в 11 раз, а количество занимаемой памяти составляет 1/32 памяти микроконтроллера. Для оптимизации программного кода были использованы встроенные средства компилятора. Описанные техники применимы для любой 8-битной платформы.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Штанов Е.Ю., Поляков М.В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

OPTIMIZING GOST R 34.12 "MAGMA" ALGORITHMS FOR 8-BIT MICROCONTROLLERS

The paper concentrates on development of optimizing methods for the GOST R 34.12-2015 "Magma" cipher algorithm when it is implemented on 8-bit microcontrollers. There is a number of techniques in the paper, which being used, allow you to create the specialized implementations of the algorithm: 1) focused on the operation speed; 2) focused on reducing the memory used; 3) optimal which involves the best solutions based on two previous implementations. Each optimization method is represented by description and performance indicators of the results obtained in comparison with the direct implementation of the algorithm. So, in the case of optimal algorithm implementation the enciphering process is 11 times accelerated, and an amount of the occupied memory is 1/32 of the microcontroller's memory. The built-in compiler tools were used to optimize the software code. The techniques described are applicable to any 8-bit platform.

Текст научной работы на тему «МЕТОДЫ ОПТИМИЗАЦИИ ГОСТ 34.12 - 2015 "МАГМА" ДЛЯ 8 БИТНОЙ АРХИТЕКТУРЫ»

Математика и математическое моделирование. 2021. № 02. С. 1 - 21.

БО!: 10.24108/шаШш.0221.0000236

© ЕЮ. Штанов, М.В. Поляков, 2021

1АО Центр «Атомзащитаинформ», Москва, Россия 2МГТУ им. Н.Э. Баумана, Москва, Россия evg.bhtaiiov@gmail.com

Математика й Математическое

моделирование

Сетевое научное издание http://mathmelpub.ru ISSN 2412-5911

2015

УДК 004.056.5

Методы оптимизации ГОСТ Р 34.12 -«Магма» для 8-битной архитектуры

_ 1 л __-7

Штанов Е.Ю1' , Поляков М.В.2

Данная работа посвящена разработке методов оптимизации алгоритма шифрования ГОСТ Р 34.12 -2015 «Магма» при его реализации на 8-битных микроконтроллерах. В данной статье приводится ряд техник, использование которых позволяет создать специализированные реализации алгоритма: 1) ориентированную на скорость работы; 2) ориентированную на уменьшение используемой памяти устройства; 3) оптимальная, которая включила в себя лучшие решения из двух предыдущих реализаций. Для каждого метода оптимизации дано описание и приведены числовые показатели полученных результатов в сравнении с прямой реализацией алгоритма. Так, в оптимальной реализация алгоритма процесс шифрования ускорен в 11 раз, а количество занимаемой памяти составляет 1/32 памяти микроконтроллера. Для оптимизации программного кода были использованы встроенные средства компилятора. Описанные техники применимы для любой 8-битной платформы.

Ключевые слова: ГОСТ Р 34.12 - 2015 «Магма», микроконтроллеры, блочные шифры, информационная безопасность, низкоресурсная криптография

Представлена в редакцию: 09.03.2021, исправлена 23.03.2021

Введение

Стремительное развитие компьютерных систем повлекло за собой удешевление тех.процесса производства электронных компонентов. Как следствие - появление на рынке доступных и дешевых микроконтроллеров, которые нашли повсеместное применение в современном мире. С каждым годом список сфер применения данных компонентов становится все больше. Самые яркие примеры использования микроконтроллеров - это Интернет вещей (1оТ) и системы умного дома.

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

буется изрядное количество ресурсов и машинного времени, что существенно замедляет систему и, как следствие, ведет к её удорожанию. Многие производители сознательно игнорируют аспект безопасности в своих разработках, так, например, умная колонка «Ян-декс.Станция» при активации передает пароль от Wi-Fi в явном виде [1]. Производитель сознательно пошел на данное решение, закрыв данную уязвимость организационными мерами, поскольку процесс активации данного устройства носит единичный характер и происходит в доверенном контуре.

Многие менее именитые бренды не могут предложить даже подобное решение и относятся к безопасности своих устройств недостаточно серьёзно, используя устаревшие и слабые системы безопасности. Помимо угрозы компрометации данных это может привести и утрате контроля над устройством. Проблему безопасности такого рода устройств подтверждает тенденция последних лет - в DDOS атаках большая часть запросов на атакуемый ресурс поступает от устройств IoT [2].

Одной из причин такой ситуации несомненно является дороговизна любой системы безопасности, особенно на изначально слабых устройствах. Реализация систем шифрования для устройств с ограниченной вычислительной мощностью привела к созданию нового направления в информационной безопасности под названием «легковесная (или низкоресурсная) криптография» [3].

Синтез алгоритмов легковесной криптографии представляет большой интерес для специалистов вот уже на протяжении более 15 лет. Традиционно в низкоресурной криптографии используются симметричные криптосистемы из-за скорости работы и простоты реализации. Самым известным и абсолютным лидером по использованию является алгоритм шифрования AES - многие современные устройства уже аппаратно его поддерживают [4]. Данный алгоритм обладает прекрасной скоростью работы и криптостойкостью, является стандартом шифрования в США, был создан в результате конкурса AES [5] для выбора нового стандарта (победителем данного конкурса был алгоритм Rijndael, который теперь часто называют по имени конкурса).

Принятие шифра Rijndael, как стандарта, породило проект eSTREAM, задачей которого было выявление новых поточных шифров. Конкурс проходил в три этапа, все шифры делились на две категории - программные и аппаратные. В качестве эталона производительности был выбран Rijndael. Задача конкурсантов - показать производительность выше эталона, при этом сохранив надежность. В 2008 проект был завершен, определив 4 победителя в программной категории (HC-128, Rabbit, Salsa20/12, SOSEMANUK) и 3 в аппаратной (Grain, MICKEY, Trivium) [6].

В 2013 году были опубликованы алгоритмы Simon/ Speck. Данное семейство алгоритмов лучше всего подходит под определение «легковесной криптографии». Так Simon оптимизирован для аппаратных реализаций, тогда как опубликованный вместе с ним Speck оптимизирован для программных реализаций. Именно к результатам работы Simon мы будем стремиться приблизиться [7].

В России же существует отечественный алгоритм шифрования ГОСТ Р 34.12-2015 -«Магма», который также обладает достойными характеристиками. Также в соответствии с ФЗ № 152-ФЗ [8], любые персональные данные необходимо шифровать. Для этого необходимо использовать определенные ГОСТы, одним из которых и является «Магма», ранее известный как ГОСТ 28147-89.

Ввиду почтенного возраста, на данный алгоритм существует ряд атак, которые снижают его стойкость. Самые известные из них - атаки T.Isobe [9], атака Shamir, Dinur, Dunkleman[10], атака на шифросистему с 12 связанными ключами[11]. Для реализации самой простой из них требуется 232 пар открытого и шифрованного текстов, полученных на одном ключе, что на практике недостижимо, поскольку смена ключа происходит гораздо раньше, чем злоумышленник успевает накопить необходимое для атаки количество информации.

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

1. Описание ГОСТ Р 34.12 - 2015

ГОСТ Р 34.12 - 2015 «Магма». Магма - сеть Фейстеля с длиной блока 64 бит и ключом 256 бит.

Данный алгоритм можно разделить на два основных этапа:

• алгоритм развертывания ключа;

• алгоритм шифрования.

1.1. Выработка раундовых ключей

Набор раундовых ключей K G V32, i = 1,2, ...,32 вырабатывается на основе общего 256-битного ключа алгоритма K = (к255, к254 ,..., к0 ) и записывается в восемь 32-разрядных векторов K1; K2, ... K8:

Ki = (k255, k254 ,..., k224) , K2 = (к223, к222 ,..., к192) ,

K = (кбз, кб2 ,..., кз2) , K8 = (кз1, кзо ,..., ко) .

В качестве раундовых ключей K1, K2, ... , K32 выбирается содержание соответствующего вектора по правилу:

Кг+8=К г = 1,2,...,8; К1+1в = К г = 1,2,...,8; К+24 = К I = 1,2,...,8; Пусть блок открытого текста М = (т1 V т2 V ... V т64); т^ Е Ъ2 Для зашифрования исходный блок М текста разбивается на два полублока М (А0, В0). На /-ом цикле используется цикловой ключ К:

А1+1=В1еПА0К1) Ви 1 = ^

ПАиВд = е (5(^-1 ш «< И))

/ осуществляет отображение 2|2 X ^22 ^ ^22 (Рисунок 1)

Рисунок 1. Устройство частичной раундовой функции

1. 32-битный вектор данных, составляющих полублок А[, и 32-битный цикловой ключ

32

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

2. 32-битный вектор, полученный в п.1, делится на восемь 4-битных слов. Каждое из них поступает на вход соответствующего Е 5(К4)- блока, которые обозначены как 51( 52,53,54,55,56,57,58. Информация об 5-блоках будет приведена ниже. Восемь 4-битных слов, являющихся выходами ^-блоков, конкатенируются в 32-битный вектор.

3. 32-битный вектор, полученный в п.2, поступает на вход перестановки Р, (Р-блок размера 32 X 32), которая осуществляет циклический сдвиг влево, в сторону старших разрядов, на 11 позиций.

Полученный на выходе перестановки P информационный блок является значением

Г(А0кд .

Одним из важных параметров данного алгоритма шифрования является узлы замены (5-блоки). Неправильные узлы снижают стойкость шифра. Для ГОСТ Р 34.13 - 2015 узел замены определен Техническим комитетом по стандартизации "Криптографическая защита информации" (сокращенно - ТК 26) Росстандарта Г12].

Идентификатор: id-tc26-gost-28147-param-Z

OID: 1.2.643.7.1.2.5.1.1

2.Определение максимально возможных показателей

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

• такты процессора;

• объем полученной прошивки (в байтах);

• объем используемой Flash и RAM памяти (в байтах);

• время выполнения программы (десятитысячные секунды).

Список реализаций алгоритма приведен ниже:

1. Base - данная реализация алгоритма не будет оптимизироваться по каким-либо параметрам и является простейшей «прямой» реализацией алгоритма. Именно с данной реализацией будут сравниваться остальные (Рисунок 2);

Рисунок 2. Зависимость параметров реализации Base

2) Speed - реализация алгоритма, направленная на сокращение времени выполнения процедуры зашифрования и расшифрования, также процедуры генерации ключей (Рисунок 3);

Память

Рисунок 3. Зависимость параметров реализации Speed

3) Space - реализация, оптимизированная по объему используемой памяти и размеру полученной прошивки (Рисунок 4);

Памя!

Рисунок 4. Зависимость параметров реализации Space

4) Optimal - оптимальная реализация алгоритма, которая сочетает быстродействие и экономию памяти (Рисунок 5).

Память

Рисунок 5. Зависимость параметров реализации Optimal

3. Описание лабораторного стенда

Поскольку данная работа ориентирована на получение практических результатов о затратах ресурсов в каждой реализации алгоритма, был создан лабораторный стенд на базе 8-битного микроконтроллера STM8L151C8T6 [13].

Основные особенности данного МК:

1) максимальная тактовая частота 16 МГц;

2) 64 Кб Flash памяти, 2 Кб EEPROM, 4 Кб RAM;

3) несколько режимов пониженного энергопотребления.

Подробнее необходимо описать подсчет времени. Данный МК тактируется от внешнего кварцевого резонатора с частотой 8 МГц. В качестве таймера используется аппаратный таймер TIM1, предделитель которого сконфигурирован на 8000. Следовательно, ин-крементирование таймера происходит с частотой 10 КГц (0,0001 с).

Замеры времени проходят напрямую из регистров во время отладки.

4. Реализация Base

Данная версия прошивки является «прямой» реализацией алгоритма шифрования без какой-либо оптимизации под архитектуру микроконтроллера.

Эта реализация состоит из двух функций - функция генерация ключей MakeRoundsKeys (u32 * inputmessage, u32 * outputmessage, short int mode) и функции шифрования GOST ECB (u32 * key, u32 * data).

Пример кода представлен в репозитории GOST-on-STM8 на сайте GitHub[14]

В таблице 1 показаны результаты замеров работы данной реализации без каких оптимизации компилятора. В таблице 2 представлены результаты тестов с включенной оптимизацией компилятора максимальной оптимизацией по скорости и памяти (сбалансированная).

Таблица 1. Реализация "Base" без оптимизации

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Enc Dec

Такты 110050 6457 6874

Время (c) 0.0177 0.0005 0.0005

Память 5S3 bytes с= readwrite data memory f+ S absolute) На диске: 4.Ö0 КБ (4 D96 байт)

Таблица 2. Реализация "Base" с оптимизацией

Параметры С оптимизацией(high balanced)

Функция шифр Выработка ключей

Enc Enc Dec

Такты 93378 3626 3795

Время (с) 0.0152 0.0005 0.0005

Память 533 bytes cz readwrite data memory 5 absolute) На диске: 4. DD КБ (4 D9G байт)

5. Реализация Speed

Для ускорения работы алгоритма и функции шифрования были предприняты следующие действия:

1. изменение исходного узла замены;

2. разложение циклов;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. изменение этапа объединения векторов после пропуска через узел замены.

Каждая последующая реализация наследует изменения, внесенные в предыдущей!

5.1. Изменение S-блоков

Согласно алгоритму шифрования, результат функции f (А ¿, к ¿) делится на восемь четырехбитных векторов. Ввиду особенностей архитектуры используемой платформы (длинна машинного слова - 8 бит), было бы оптимально оперировать не восьмью четырехбитными векторами, а взять четыре восьмибитных вектора. Количество векторов, а, следовательно, пропусков через узел замены уменьшится в два раза. Но для реализации подобного также необходимо изменить узел замены.

Оригинальные узлы замены представляют собой двумерный массив размерностью 8 на 16, что суммарно дает 128 байт. Преобразование узла для уменьшения векторов приведет к расширению последнего до двумерно массива размерностью 4 на 256 и общим размером 1024 байта.

Программный код изменения S блока на примере узла замены id-tc26-gost-28147-param-Z приведен на рисунке 6.

stai-ic const uintÖ_t SBox[3] [16] -{

{OxC,0x4,Ok6,0x2,OxA,0x5,OxB,0x5,OxE,0x3,OxD,0x7,0x0,0x3,OxF,0x1}, {0x6,0x3,0x2,0x3,0x9,OxA,0x5,OxC,Oxl,OxE,0x4,0x7,OxB,OxD,0x0,OxF}, {OxB, 0x3, 0x5, 0x8, 0x2, OxF, OxA, OxD, OxE,Oxl,0x7,0x4,OxC,ОхЭ,0x6,0x0}, {OxC,ОхЭ,0x2,Oxl,OxD,0x4,OxF,0x6,0x7,0x0,OxA,0x5,0x3,OxE,0x5,OxB}, {0x7,OxF,0x5,OxA,0x9,Oxl,0x6,OxD,0x0,0x5,0x3,OxE,OxB,0x4,0x2,OxC}, {0x5,OxD,OxF,0x6,0x9,0x2,OxC,OxA,OxB,0x7, 0x8,Oxl, 0x4, 0x3, OxE, 0x0}, {0x3, OxE, 0x2, 0x5, 0x6,Ox5, Oxl,OxC,OxF,0x4,OxB,0x0,OxD,OxA,0x3,0x7}, {Oxl,0x7,OxE,OxD,0x0,0x5,0x3,0x3,0x4,OxF,OxA,0x6,0x5,OxC, OxB, 0x2} } ;

uint3_t SBoxNew[4][256];

for {int i = 0; i < 4

{

for {int j - 0; 2 {

SBoxNew[i][j] SBoxNew[i][j] SBoxNew[i][j]

}

Рисунок 6. Пример преобразования узла замены

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

Таблица 3. Реализация "Speed" с новыми S блоками, без оптимизации

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Enc Dec

Такты 71002 6457 6874

Время (c) 0.0110 0.0008 0.0009

Память " 583 bytes of readwrite data memory i+ S absolute) Размер: З.Э6 КБ {3 9G2 байт) На диске: 4.DD КБ [4 D9G байт)

В таблице 4 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по скорости).

; i++) < 2 56; j++)

= SBox[2 * i][j i Oxf]i = SBoxNew[i][j] << 4;

= SBoxNew[i][j] I SBox[2^1 + 1] [j » 4];

Таблица 4. Реализация "Speed" с новыми S блоками, с оптимизацией

Параметры С оптимизацией(high speed)

Функция шифр Выработка ключей

Enc Enc Dec

Такты 50449 2463 2632

Время (с) 0.0080 0.0003 0.0004

Память 5S3 bytes cf readwrite data memory i+ 5 absolute) На диске: 4. QD КБ (4 D9G байт)

Согласно данным из таблицы видно ускорение работы программы примерно на 30% (если сравнивать с версией без оптимизации), но объем занимаемой памяти увеличился практически на два мегабайта (в 7 раз).

5.2. Разложение циклов

В процессе работы процедур зашифрования и выработки раундовых ключей активно используются циклы и ветвления. Для их работы требуется использование инструкции call/jump, а также отдельных манипуляций с регистром ip(instruction pointer). Все эти действия увеличивают накладные расходы и занимают такты процессора. Для достижения максимальных показателей по скорости работы шифра предлагается произвести полную развертку циклов в коде.

В данной реализации функция шифрования реализуется с разверткой цикла. Это приводит к резкому росту занимаемой памяти, но также дает существенное уменьшение количества тактов процессора, необходимых для выполнения функции шифрования.

В таблице 5 представлены результаты тестов данной реализации без включения флагов оптимизации компилятора. В таблице 6 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по скорости).

Таблица 5. Реализация "Speed" с разложением циклов, без оптимизации

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Enc Dec

Такты 31090 6457 6874

Время (с) 0.0051 0.0008 0.0009

Память " 5S3 bytes cf readwrite data memory f+ S absolute)

Таблица 6. Реализация "Speed" с разложением циклов, с оптимизацией

Параметры С оптимизацией(high speed )

Функция шифр Выработка ключей

Enc Enc Dec

Такты 16785 2463 2632

Время (с) 0.0029 0.0003 0.0004

Память 583 bytes of readwrite data memory f+ 5 absolute) На диске: 12.0 КБ (12 230 байт)

В этой реализации наблюдается ускорение практически в три раза по сравнению с исходной реализацией (если сравнивать версии без оптимизации), но также резко возрастает размер прошивки - практически 8 мегабайт, что является восьмой частью всей памяти.

5.3. Изменение выходного вектора после пропуска через узел замены

После прохождение через 5-блоки информационный вектор, представленный как 32-битное слово, циклически сдвигается на 11 разрядов влево. В наших экспериментах используется 8-битный микроконтроллер и циклический сдвиг 32-битного слова требует использования 4 регистров, а также аккумулятора для хранения переноса из одного 8-битного слова в другое. Учитывая, что 5-блок уже выровнен под длину машинного слова, то логичным выглядит объединение всех четырех 8-битных регистров в 32-битное слово уже с учетом циклического сдвига.

Выходы всех восьми 5-блоков объединяются в 32-битное слово, затем всё слово циклически сдвигается влево (к старшим разрядам) на 11 битов. При реализации можно собирать «выходной» вектор, учитывая сдвиг. Программный код приведен на рисунке 7.

//объединение быкодн^гн: векторо^ б блок размером 32 бита

Рисунок 7. Изменение выходного вектора

В таблице 7 представлены результаты тестов данной реализации без включения флагов оптимизации компилятора. В таблице 8 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по скорости).

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Enc Dec

Такты 24562 6457 6874

Время (c) 0.0039 0.0008 0.0009

Память " 583 bytes с= readwrite data memory f+ 5 absolute) На диске: 12,0 КБ (12 233 байт)

Таблица 8. Реализация "Speed" с изменением вектора, с оптимизацией

Параметры С оптимизацией(high speed )

Функция шифр Выработка ключей

Enc Enc Dec

Такты 9940 2463 2632

Время (c) 0.0017 0.0003 0.0004

Память 5S3 bytes cf readwrite data memory f+ S absolute) На диске: 12.0 КБ [12 233 байт)

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

Исходя из результатов данной реализации можно определить максимальные параметры скорости, которые можно достичь:

Такты процессора: 9940.

Время: 0.0017 с.

6. Реализация Space

Для уменьшения затрат памяти функцией шифрования были предприняты следующие действия:

1. объединение функции генерации ключа с функцией шифрования;

2. уменьшение S блока.

Каждая последующая реализация наследует изменения, внесенные в предыдущей!

6.1 Объединение функции генерации ключа с функцией шифрования

При компиляции исходной версии алгоритма было замечено, что наибольшее количество памяти отводится для хранения байт-кода процедур, где в том числе, содержатся статические члены, например, узлы замены (S-блоки). Кроме того, выделение операций зашифрования и выработки раундовых ключей в отдельные функции может привести, во-первых, к их адресной удаленности друг от друга, что влечет за собой дополнительные накладные расходы, а во-вторых, при включенном режиме оптимизации компилятора каждая процедура преобразуется отдельно, что опять же не дает достичь максимальных показателей.

Для уменьшения затрат памяти в данной реализация предлагается объединить функцию шифрования GOST ECB (u32 * key, u32 * data, message, short int mode), с функцией генерации ключей MakeRoundsKeys.

В таблице 9 представлены результаты тестов данной реализации без включения флагов оптимизации компилятора. В таблице 10 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по памяти).

Таблица 9. Реализация "Space" без оптимизации

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Включена в функцию шифрования

Такты 108132

Время (с) 0.0175

Память 551 bytes cf readwrite data memcry f+ 5 absolute) На диске: 4, OD КБ (4 D96 байт)

Таблица 10. Реализация "Space" с оптимизацией

Параметры

Такты

Время (с)

С оптимизацией(high space)

Функция шифр

Enc

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

117391

0.0183

Выработка ключей

Включена в функцию шифрования

Память

1 Oil bytes cf readonly code 280 bytes cf readonly data 551 bytes cf readwrite data

memory memory memory

f+ 5 absolute)

Размер: На диске:

1,26 КБ (1 2Э1 байт) 4, DO КБ (4 D9G байт)

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

6.2 Уменьшение S блока

ГОСТ Р 34.12 -2015 «Магма» позволяет использовать узел замены произвольной длины. Для уменьшения объема используемой памяти возможно уменьшить узел замены с 4 векторов до 1 вектора.

Использование данного метода строго не рекомендуется поскольку снижает стойкость получившийся криптосистемы! Применение данного метода оптимизации допустимо только при шифровании небольших объемов данных в условиях максимальной экономии ресурсов и делается строго на страх и риск разработчика!

В таблице 11 представлены результаты тестов данной реализации без включения флагов оптимизации компилятора. В таблице 12 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по памяти).

Таблица 11. Реализация "Space" без оптимизации

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Включена в функцию шифрования

Такты 96479

Время (c) 0.0158

Память SSI bytes с= readwrite data memory f+ 5 absolute) На диске: 4.DD КБ (4 D96 байт)

Таблица 12. Реализация "Space" с оптимизацией

Параметры С оптимизацией(high space)

Функция шифр Выработка ключей

Enc Включена в функцию шифрования

Такты 111759

Время (c) 0.0176

Память 1€S bytes ci readonly data memory 551 bytes cf readwrite data memory f+ 5 absolute) На диске: 4. DD КБ (4 D9G байт)

В данной реализации удалось добиться экономии памяти параметров readonly code memory, readonly data memory, а также размер прошивки практически в два раза. Но вместе с тем наблюдается уменьшение скорости работы программы примерно на 10%.

Исходя из результатов данной реализации можно определить максимальные параметры памяти, которые можно достичь:

1. 994 bytes of readonly code memory

2. 168 bytes of readonly data memory

3. 551 bytes of readwrite data memory

Размер прошивки: 1162 байта.

7. Реализация Optimal

В данной реализации мы попытались объединить результаты двух предыдущих разделов и создать реализацию, оптимальную и по памяти, и по скорости работы.

В данном разделе предполагается объединение всех лучших решений из предыдущей реализации (Speed и Space), для получения оптимальных параметров скорости работы и свободной памяти.

В данной версии из реализации Speed были взяты следующие решения:

• изменение 5-блоков;

• изменение этапа объединения векторов после пропуска через узел замены;

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

В таблице 13 представлены результаты тестов данной реализации без включения флагов оптимизации компилятора. В таблице 14 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по скорости).

Таблица 13. Реализация "Optimal" без оптимизации

Параметры Без оптимизации

Функция шифр Выработка ключей

Enc Enc Dec

Такты 26978 5997 6077

Время (с) 0.0044 0.0008 0.0008

Память 1 CIS bytes of readonly code memory 2 232 bytes cf readonly data memcry 533 bytes cf readwrite data memcry Ha flHCKe: 4. DD KB (4 D96 6attT)

Таблица 14. Реализация "Optimal" с оптимизацией

Параметры

С оптимизацией (high balanced)

Функция шифр

Enc

Выработка ключей

Enc

Dec

Такты

10209

2208

2276

Время (с)

0.0016

0.0003

0.0003

Память

1 4€б bytes cf readonly code memory

2 232 bytes cf readonly data memory

533 bytes ci readwrite data memcry (+ S absolute)

Расположение: D: \Main\Work \AII\! Магистратура \2 семестр\Ы IR '■ Размер: 3.G1 КБ (3 G93 байт)

На диске: 4,DD КБ (4 Ш байт)

Данная реализация по своим показателям приближается к показателям реализации «Speed», но показатель свободной памяти сравним с исходной прошивкой. Оптимизация функции выработки раундовых ключей ускорилась на 13% (если сравнивать функции без оптимизации).

7.1. Преобразование циклов шифрования

При внимательном рассмотрении основной процедуры зашифрования/расшифрования алгоритма «Магма», видно, что в последнем раунде не происходит обмена половин информационного блока. В базовой («base») версии алгоритма для этого необходимо выделять отдельную подпроцедуру, которая вызывается при срабатывании условного выражения. Для экономии ресурсов на операции вызова и возврата из подпроцедуры, а также дополнительного условного оператора предлагается изменить схему одного раунда алгоритма «Магма» (Рис 8). Новая процедура будет содержать 2 раунда зашифрования и вызываться 16 раз.

В данной реализации происходит изменение исходного алгоритма шифрования. На рисунке 8 представлены старая и новая схемы шифрования. Одним из достоинств такой схемы - при реализации нет отдельного случая для последней итерации цикла.

Rm L,.i Rj-I

Рисунок 8. Изменение схемы шифрования

В таблице 15 представлены результаты тестов данной реализации без включения флагов оптимизации компилятора. В таблице 16 представлены результаты работы реализации с активированными флагами компилятора (максимальная оптимизация по скорости).

Параметры

Без оптимизации

Функция шифр

Enc

Выработка ключей

Enc

Dec

Такты

24920

5997

6077

Время (c)

0.0041

0.0008

0.0008

Память

1 840 bytes cf readonly code

2 232 bytes cf readonly data 533 bytes cf readwrite data

memory memory memory

Таблица 16. Реализация "Optimal" с оптимизацией, с преобразованием

Параметры С оптимизацией (high balanced)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Функция шифр Выработка ключей

Enc Enc Dec

Такты 9602 2208 2276

Время (с) 0.0015 0.0003 0.0003

Память " bytes of readwrite data memcry f+ 5 absolute) На диске: 4.00 КБ (4 D9G байт)

Как видно по полученным показателям, данная реализации обладает превосходными показателями скорости - количество тактов процессора и время, которое затрачивается на функцию шифрования и функцию выработки раундовых ключей обгоняет даже максимальные значения реализации Speed (если сравнивать реализации с включенными флагами компилятора). Параметр «свободная память» не достигает показателей реализации Space, но остается на уровне исходной прошивки. Количество занимаемой памяти составляет примерно 1/32 от всей памяти микроконтроллера.

8. Заключение

В ходе проделанной работы исследовались различные варианты программной реализации криптографического алгоритма «Магма» и было предложено несколько подходов к оптимизации различных ключевых параметров: объема прошивки, скорости зашифрования/расшифрования. Кроме того, удалось показать, что указанные подходы универсальны для любой 8-битной архитектуры, а также вариант оптимальной реализации, оптимальной как по потреблению памяти МК, так и по скорости работы криптографических преобразований. В оптимальной реализации удалось достичь 11 -кратного ускорения относительно базовой версии, а также использования до 1/32 памяти устройства. Отдельно стоит отметить, что предложенные подходы могут быть использованы и в архитектурах с большей разрядностью.

Список литературы

1. Реверс инжиниринг протокола активации Яндекс. Станции. Режим доступа: https://habr.com/ru/post/469435/ (дата обращения 21.09.2020).

2. Sun Beale S., Berris P. Hacking the Internet of things: Vulnerabilities, dangers, and legal responses // Duke Law & Technology Review. 2018. Vol. 16. No. 1. Pp. 161-204.

3. Жуков А.Е. Легковесная криптография. Часть 1 // Вопросы кибербезопасности. 2015. № 1(9). С. 26-43.

4. Delivers fast, affordable data protection and security. Режим доступа: https://www.intel.ru/content/www/ru/ru/architecture-and-technology/advanced-encryption-standard-aes/data-protection-aes-general-technology.html/ (дата обращения 21.09.2020).

5. Announcing the Advanced Encryption Standard (AES) // Federal Information Processing Standards Publication. November 26, 2001. [No.]. 197. 51 p.

6. ECRYPT II: European network of excellence in cryptology II: The eSTREAM Portfolio in 2012. 16th January 2012. Режим доступа:

https://www.ecrypt.eu.org/ecrypt2/documents/D.SYM.10-v1.pdf (дата обращения 31.05.2021).

7. Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B., Wingers L. The Simon and Speck block ciphers on AVR 8-bit microcontrollers // Lightweight cryptography for security and

rH

privacy: LightSec 2014: 3 intern. workshop on lightweight cryptography for security and privacy (Istanbul, Turkey, September 1-2, 2014): Revised selected papers. Cham: Springer, 2015. Pp. 3-20. DOI: 10.1007/978-3-319-16363-5_1

8. О персональных данных: федеральный закон РФ от 27.07.2006 г. N 152-ФЗ.

9. Isobe T. A single-key attack on the full GOST block cipher // Fast software encryption: FSE-2011: 18th intern. workshop on fast software encryption (Lyngby, Denmark, February 13-16,

2011): Revised selected papers. B.: Springer, 2011. Pp. 290—305. DOI: 10.1007/978-3-642-21702-9_17

10. Dinur I., Dunkelman O., Shamir A. Improved attacks on full GOST // Fast software encryption: FSE-2012: 19th intern. workshop on fast software encryption (Wash., DC, USA, March 19-21,

2012): Revised selected papers. B.; Hdbl.: Springer, 2012. Pp. 9-28. DOI: 10.1007/978-3-642-34047-5_2

11. Pudovkina M.A., Khoruzhenko G.I. Related-key attacks on the full GOST block cipher with two or four related keys // 1st intern. conf. on Bulgarian and Balkans cryptography: BulCrypt 2012 (Sofia, Bulgaria, September 20-21, 2012): Proc. Sofia, 2012. Pp. 107-127.

12. ГОСТ Р 34.12 — 2015. Информационная технология. Криптографическая защита информации. Блочные шифры. Введ. 2016-01-01. Режим доступа: https://tc26.ru/standard/gost/GOST_R_3412-2015.pdf (дата обращения 21.09.2020).

13. STM8L151x6/8 STM8L 152x6/8:8-bit ultra-low-power MCU, up to 64-KB flash, 2-KB data EEPROM, RTC, LCD, timers, UASRTs, l2C, SPIs, ADC, DAC, comparators. 2018. Режим

доступа: https://www.st.com/resource/en/datasheet/stm8l151c8.pdf (дата обращения 21.09.2020).

14. Klavishnik007/GOST-on-STM8. Режим доступа: https://github.com/Klavishnik007/G0ST-on-STM8 (дата обращения 21.09.2020г.)

Moh^ a_n2iMathematicalMode"ng 2021 Mathematics & Mathematical

DOI: 10.24108/mathm.0221.0000236

[¿on ®

Electronic journal

© E.Yu. Shtanov, M.V. Polyakov, 2021 http://mathmelpub.ru ISSN 2412-5911

Optimizing GOST R 34.12 "Magma" Algorithms for 8-Bit Microcontrollers

E.Yu. Shtanov1'*, M.V. Polyakov2

1JSC Center "Atomzashchitainform", Moscow, Russia 2Bauman Moscow State Technical University, Moscow, Russia evg.5htanov@grnail.com

Keywords: GOST R 34.12 "Magma", microcontrollers, block cipher, information security, lightweight cryptography

Received: 09.03.2021, Revised: 23.03.2021

The paper concentrates on development of optimizing methods for the GOST R 34.12-2015 "Magma" cipher algorithm when it is implemented on 8-bit microcontrollers. There is a number of techniques in the paper, which being used, allow you to create the specialized implementations of the algorithm:

1) focused on the operation speed;

2) focused on reducing the memory used;

3) optimal which involves the best solutions based on two previous implementations.

Each optimization method is represented by description and performance indicators of the

results obtained in comparison with the direct implementation of the algorithm. So, in the case of optimal algorithm implementation the enciphering process is 11 times accelerated, and an amount of the occupied memory is 1/32 of the microcontroller's memory. The built-in compiler tools were used to optimize the software code. The techniques described are applicable to any 8bit platform.

References

1. Inzhiniring protokola aktivatsii Yandeks. Stantsii [Reverse engineering of the Yandex activation protocol. Stations]. Available at: https://habr.com/ru/post/469435/, accessed 21.09.2020 (in Russian).

2. Sun Beale S., Berris P. Hacking the Internet of things: Vulnerabilities, dangers, and legal responses. Duke Law & Technology Review, 2018, vol. 16, no. 1., pp. 161-204.

3. Zhukov A.E. Lightweight cryptography. Pt. 1. Voprosy kiberbezopasnosti [Cybersecurity Issues], 2015, no. 1(9), pp. 26-43 (in Russian).

4. Delivers fast, affordable data protection and security. Available at: https://www.intel.ru/content/www/ru/ru/architecture-and-technology/advanced-encryption-standard-aes/data-protection-aes-general-technology.html/, accessed 21.09.2020.

5. Announcing the Advanced Encryption Standard (AES). Federal Information Processing Standards Publication, November 26, 2001, [no.]. 197. 51 p.

6. ECRYPT II: European network of excellence in cryptology II: The eSTREAM Portfolio in 2012. 16th January 2012. Available at:

https://www.ecrypt.eu.org/ecrypt2/documents/D.SYM.10-v1.pdf, accessed 31.05.2021.

7. Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B., Wingers L. The Simon and Speck block ciphers on AVR 8-bit microcontrollers. Lightweight cryptography for security and privacy: LightSec 2014: 3rd intern. workshop on lightweight cryptography for security and privacy (Istanbul, Turkey, September 1-2, 2014): Revised selected papers. Cham: Springer, 2015. Pp. 3-20. DOI: 10.1007/978-3-319-16363-5_1

8. Opersonal'nykh dannykh: federal'nyj zakon RF [On personal data: Federal law of the Russian Federation]. July 27th 2006. No. 152 (in Russian).

9. Isobe T. A single-key attack on the full GOST block cipher. Fast software encryption: FSE-2011: 18th intern. workshop on fast software encryption (Lyngby, Denmark, February 13-16, 2011): Revised selected papers. B.: Springer, 2011. Pp. 290—305.

DOI: 10.1007/978-3-642-21702-9_17

10. Dinur I., Dunkelman O., Shamir A. Improved attacks on full GOST. Fast software encryption: FSE-2012: 19th intern. workshop on fast software encryption (Wash., DC, USA, March 19-21, 2012): Revised selected papers. B.; Hdbl.: Springer, 2012. Pp. 9-28.

DOI: 10.1007/978-3-642-34047-5_2

11. Pudovkina M.A., Khoruzhenko G.I. Related-key attacks on the full GOST block cipher with two or four related keys. 1st intern. conf. on Bulgarian and Balkans cryptography: BulCrypt 2012 (Sofia, Bulgaria, September 20-21, 2012): Proc. Sofia, 2012. Pp. 107-127.

12. GOST R 34.12 - 2015. Informatsionnaia tekhnologiia. Kriptograficheskaia zashchita informatsii. Blochnye shifry [National standard of the Russian Federation R 34.12 - 2015. Information technology. Cryptographic data security. Block ciphers]. Available at: https://tc26.ru/standard/gost/GOST_R_3412-2015.pdf, accessed 21.09.2020 (in Russian).

13. STM8L151x6/8 STM8L 152x6/8:8-bit ultra-low-power MCU, up to 64-KB flash, 2-KB data EEPROM, RTC, LCD, timers, UASRTs, l2C, SPIs, ADC, DAC, comparators. 2018. Available at: https://www.st.com/resource/en/datasheet/stm8l151c8.pdf, accessed 21.09.2020.

14. Klavishnik007/GOST-on-STM8. Available at: https://github.com/Klavishnik007/GOST-on-STM8, accessed 21.09.2020.

i Надоели баннеры? Вы всегда можете отключить рекламу.