Открыть главное меню

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

(перенаправлено с «Kuznechik»)

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

Кузнечик (входит в ГОСТ Р 34.12-2015)
Размер ключа 256 бит
Размер блока 128 бит
Число раундов 10
Тип Подстановочно-перестановочная сеть

Содержание

Общие сведенияПравить

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

ОбозначенияПравить

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

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

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

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

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

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

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


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

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

   

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

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

 


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

Нелинейное преобразование задается подстановкой 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).

СсылкиПравить