Шифр Магма

Шифр «Магма» является действующим российским стандартом симметричного шифрования, фактически это еще советский шифр ГОСТ 28147-89, но с фиксированными таблицами замен.

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

Алгоритм построен на сети Фейстеля, имеет размер блока 64 бит, 256-битный раундовый ключ и выполняет 32 раунда шифрования. Структура раунда алгоритма достаточно проста, что обеспечивает неплохие скоростные характеристики шифра даже при достаточно большом числе раундов.

Шифр Магма

В каждом раунде алгоритма выполняются следующие преобразования.

Наложение раундового ключа. Содержание подблока Ri складывается по модулю 232 с 32-битовым раундовым ключом раунда Kj.

Раундовые ключи получаются из исходного 256-битового ключа шифрования простым делением на восемь частей: K0, K1, K2, K3, K4, K5, K6, K7.

В процессе шифрования подключи Kj используются в соответствии со следующим расписанием:

  • с 1 по 24 раунд – в прямой последовательности: K0, K1, K2, K3, K4, K5, K6, K7, …
  • с 25 по 32 раунд – в обратной последовательности: K7, K6, K5, K4, K3, K2, K1, K0.

Нелинейная замена. После наложения ключа 32-битовый блок разбивается на 8 частей по 4 бита, значение каждой из которых по отдельности заменяется в соответствии с одной из 8 таблиц замен (S-блоком).

Каждый S-блок алгоритма ГОСТ представляет собой вектор (одномерный массив) с 16 элементами, пронумерованными числами от 0 до 15:

  • S0 = (12, 4, 6, 2, 10, 5, 11, 9, 14, 8, 13, 7, 0, 3, 15, 1);
  • S1 = (6, 8, 2, 3, 9, 10, 5, 12, 1, 14, 4, 7, 11, 13, 0, 15);
  • S2 = (11, 3, 5, 8, 2, 15, 10, 13, 14, 1, 7, 4, 12, 9, 6, 0);
  • S3 = (12, 8, 2, 1, 13, 4, 15, 6, 7, 0, 10, 5, 3, 14, 9, 11);
  • S4 = (7, 15, 5, 10, 8, 1, 6, 13, 0, 9, 3, 14, 11, 4, 2, 12);
  • S5 = (5, 13, 15, 6, 9, 2, 12, 10, 11, 7, 8, 1, 4, 3, 14, 0);
  • S6 = (8, 14, 2, 5, 6, 9, 1, 12, 15, 4, 11, 0, 13, 10, 3, 7);
  • S7 = (1, 7, 14, 13, 0, 5, 8, 3, 4, 15, 10, 6, 9, 12, 11, 2).

Из таблицы S-блока извлекается элемент, порядковый номер которого совпадает с входным значением подстановки. Значениями S-блока также являются 4-битовые значения (целые числа от 0 до 15).

Циклический сдвиг битов обрабатываемого подблока влево на 11 битов.

Расшифрование осуществляется по этой же схеме, но с другим расписанием использования ключей:

  • с 1 по 8 раунд – в прямой последовательности: K0, K1, K2, K3, K4, K5, K6, K7;
  • с 9 по 32 раунд – в обратном порядке: K7, K6, K5, K4, K3, K2, K1, K0, …

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

С другой стороны, для SP-сети функция расшифрования отличается от функции шифрования, то есть структуры раунда шифрования и раунда расшифрования будут различны.

На SP-сетях основаны шифры SAFER+, Serpent, действующий американский стандарт симметричного шифрования AES, а также шифр «Кузнечик» российского стандарта ГОСТ Р 34.122015.

Узнай цену консультации

"Да забей ты на эти дипломы и экзамены!” (дворник Кузьмич)