«Кузнечик» (Согласно ГОСТ Р 34.12-2015 и RFC 7801 шифр может именоваться на английском как или Согласно ГОСТ 34.12-2018 шифр может именоваться на английском как .Некоторые программные реализации шифра с открытым исходным кодом используют наименование ) — симметричный алгоритм блочного шифрования с размером блока 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 = Bin8 S' Bin8−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-преобразования

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

…

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

http://www.tc26.ru/standard/draft/GOSTR-bsh.pdf см. Контрольные примеры

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

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

Примечания

Литература

Ссылки

В ГОСТе сидел «Кузнечик»

Категория:Блочные шифры Категория:SP-сеть Категория:Стандарты криптографии Категория:ГОСТ