Interested Article - Кузнечик (шифр)

«Кузнечик» ( англ. Kuznyechik или англ. Kuznechik ) — симметричный алгоритм блочного шифрования с размером блока 128 бит и длиной ключа 256 бит, использующий для генерации раундовых ключей SP-сеть .

Общие сведения

Данный шифр утверждён (наряду с блочным шифром «Магма» ) в качестве стандарта в ГОСТ Р 34.12-2015 «Информационная технология. Криптографическая защита информации. Блочные шифры» приказом от 19 июня 2015 года № 749-ст . Стандарт вступил в действие с 1 января 2016 года . Шифр разработан Центром защиты информации и специальной связи ФСБ России с участием АО «Информационные технологии и коммуникационные системы» ( АО «ИнфоТеКС» ). Внесён Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации» .

Протоколом № 54 от 29 ноября 2018 года , на основе ГОСТ Р 34.12-2015 , Межгосударственным советом по метрологии, стандартизации и сертификации был принят межгосударственный стандарт ГОСТ 34.12-2018 . Приказом Федерального агентства по техническому регулированию и метрологии от 4 декабря 2018 года № 1061-ст стандарт ГОСТ 34.12-2018 введен в действие в качестве национального стандарта Российской Федерации с 1 июня 2019 года .

Обозначения

поле Галуа по модулю неприводимого многочлена .

— биективное отображение, ставящее в соответствие элементу кольца ( ) его двоичное представление.

— отображение, обратное к .

— биективное отображение, ставящее в соответствие двоичной строке элемент поля .

— отображение, обратное к

Описание алгоритма

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

, где , — двоичные строки вида ( — символ конкатенации строк).

— обратное к преобразование.

— обратное к преобразование, причём

, где — композиция преобразований и и т. д.

Нелинейное преобразование

Нелинейное преобразование задается подстановкой S = Bin 8 S' Bin 8 −1 .

Значения подстановки S' заданы в виде массива S' = (S'(0), S'(1), …, S'(255)) :

Линейное преобразование

Задаётся отображением :

где операции сложения и умножения осуществляются в поле .

Генерация ключа

Алгоритм генерации ключа использует итерационные константы , i=1,2,…32. Задается общий ключ .

Вычисляются итерационные ключи

Алгоритм зашифрования

где a — строка размером 128 бит.

Алгоритм расшифрования

Пример

Строка «a» задается в шестнадцатеричном виде и имеет размер 16 байт, причём каждый байт задается двумя шестнадцатеричными числами.

Таблица соответствия строк в двоичном и в шестнадцатеричном виде:

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 a b c d e f

Пример N-преобразования

Пример G-преобразования

Пример H-преобразования

Пример генерации ключа









В итоге получаем итерационные ключи:

Пример алгоритма зашифрования

Открытый текст

Криптостойкость

Ожидается, что новый блочный шифр «Кузнечик» будет устойчив ко всем видам атак на блочные шифры .

На конференции «CRYPTO 2015» Алекс Бирюков, Лео Перрин и Алексей Удовенко представили доклад, в котором говорится о том, что несмотря на утверждения разработчиков, значения S-блока шифра Кузнечик и хеш-функции Стрибог не являются (псевдо)случайными числами, а сгенерированы на основе скрытого алгоритма, который им удалось восстановить методами обратного проектирования . Позднее Лео Перрин и Алексей Удовенко опубликовали два альтернативных алгоритма генерации S-блока и доказали его связь с S-блоком белорусского шифра BelT . В этом исследовании авторы также утверждают, что, хотя причины использования такой структуры остаются неясны, использование скрытых алгоритмов для генерации S-блоков противоречит принципу , который мог бы служить доказательством отсутствия специально заложенных уязвимостей в дизайне алгоритма.

Riham AlTawy и Amr M. Youssef описали атаку « встречи посередине » на 5 раундов шифра Кузнечик, имеющую вычислительную сложность 2 140 и требующую 2 153 памяти и 2 113 данных .

Примечания

  1. Согласно ГОСТ Р 34.12-2015 и шифр может именоваться на английском как Kuznyechik
  2. Согласно ГОСТ 34.12-2018 шифр может именоваться на английском как Kuznechik .
  3. Некоторые программные реализации шифра с открытым исходным кодом используют наименование Grasshopper
  4. . Дата обращения: 4 сентября 2015. Архивировано из 24 сентября 2015 года.
  5. . Дата обращения: 4 сентября 2015. 27 сентября 2016 года.
  6. . Дата обращения: 14 декабря 2014. 18 декабря 2014 года.
  7. . Дата обращения: 13 апреля 2016. Архивировано из 24 апреля 2016 года.
  8. от 26 декабря 2014 на Wayback Machine см. Контрольные примеры
  9. Alex Biryukov, Léo Perrin, Aleksei Udovenko. (8 мая 2016). Дата обращения: 21 мая 2021. 4 марта 2021 года.
  10. Léo Perrin, Aleksei Udovenko. (3 февраля 2017). Дата обращения: 14 сентября 2017. 17 апреля 2021 года.
  11. Riham AlTawy and Amr M. Youssef. (17 апреля 2015). Дата обращения: 8 июня 2016. 16 июля 2017 года.

Ссылки

  • «Информационная технология. Криптографическая защита информации. Блочные шифры»
  • «Информационная технология. Криптографическая защита информации. Блочные шифры»
  • [ неавторитетный источник ]
Источник —

Same as Кузнечик (шифр)