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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Kuznechik»)
Перейти к навигации Перейти к поиску
Кузнечик (входит в ГОСТ Р 34.12-2015)
Размер ключа 256 бит
Размер блока 128 бит
Число раундов 10
Тип Подстановочно-перестановочная сеть

Блочный шифр «Кузнечик» (входит в стандарт ГОСТ Р 34.12-2015) — симметричный алгоритм блочного шифрования с размером блока 128 бит и длиной ключа 256 бит и использующий для генерации раундовых ключей сеть Фейстеля.

Общие сведения[править | править код]

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

Протоколом № 54 от 29 ноября 2018 года, на основе ГОСТ Р 34.12-2012, Межгосударственным советом по метрологии, стандартизации и сертификации был принят межгосударственный стандарт ГОСТ 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 бит.

Алгоритм расшифрования[править | править код]

Пример[5][править | править код]

Строка «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-блока шифра Кузнечик и хеш-функции Стрибог не являются (псевдо)случайными числами, а сгенерированы на основе скрытого алгоритма, который им удалось восстановить методами обратного проектирования[6]. Позднее Лео Перрин и Алексей Удовенко опубликовали два альтернативных алгоритма генерации S-блока и доказали его связь с S-блоком белорусского шифра BelT[7]. В этом исследовании авторы также утверждают, что, хотя причины использования такой структуры остаются неясны, использование скрытых алгоритмов для генерации S-блоков противоречит принципу отсутствия козыря в рукаве, который мог бы служить доказательством отсутствия специально заложенных уязвимостей в дизайне алгоритма.

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

Примечания[править | править код]

  1. «ГОСТ Р 34.12-2015» (недоступная ссылка). Дата обращения 4 сентября 2015. Архивировано 24 сентября 2015 года.
  2. «О введении новых криптографических стандартов»
  3. «www.tc26.ru»
  4. Архивированная копия (недоступная ссылка). Дата обращения 13 апреля 2016. Архивировано 24 апреля 2016 года.
  5. http://www.tc26.ru/standard/draft/GOSTR-bsh.pdf Архивная копия от 26 декабря 2014 на Wayback Machine см. Контрольные примеры
  6. Alex Biryukov, Léo Perrin, Aleksei Udovenko. Reverse-Engineering the S-Box of Streebog, Kuznyechik and STRIBOBr1 (Full Version) (2016).
  7. Léo Perrin, Aleksei Udovenko. Exponential S-Boxes: a Link Between the S-Boxes of BelT and Kuznyechik/Streebog (2017).
  8. Riham AlTawy and Amr M. Youssef. A Meet in the Middle Attack on Reduced Round Kuznyechik (17 апреля 2015).

Ссылки[править | править код]