Кузнечик (шифр): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
оформление, уточнение
Строка 242: Строка 242:


=== Пример алгоритма зашифрования ===
=== Пример алгоритма зашифрования ===
{{В планах}}

Открытый текст <math>a=1122334455667700ffeeddccbbaa9988,</math>
Открытый текст <math>a=1122334455667700ffeeddccbbaa9988,</math>


Строка 253: Строка 253:
| year=2016
| year=2016
| url=https://eprint.iacr.org/2016/071.pdf
| url=https://eprint.iacr.org/2016/071.pdf
}}</ref><ref>{{cite web
| author=Alex Biryukov, Léo Perrin, Aleksei Udovenko
| title=Reverse Engineering the S-Box of Streebog, Kuznechik and Stribob
| year=2015
| url=http://crypto.2015.rump.cr.yp.to/1ea2c6c01144e0e7f6b14b324c5e4562.pdf
}}</ref>. Позднее Лео Перрин и Алексей Удовенко опубликовали два альтернативных алгоритма генерации S-блока и доказали его связь с S-блоком белорусского шифра BeIT<ref>{{cite web
}}</ref>. Позднее Лео Перрин и Алексей Удовенко опубликовали два альтернативных алгоритма генерации S-блока и доказали его связь с S-блоком белорусского шифра BeIT<ref>{{cite web
| author=Léo Perrin, Aleksei Udovenko
| author=Léo Perrin, Aleksei Udovenko
Строка 272: Строка 267:
== Ссылки ==
== Ссылки ==
* [http://habrahabr.ru/post/266359/ В ГОСТе сидел «Кузнечик»]{{неавторитетный источник|05|01|2016}}
* [http://habrahabr.ru/post/266359/ В ГОСТе сидел «Кузнечик»]{{неавторитетный источник|05|01|2016}}
* [https://eprint.iacr.org/2016/071.pdf Reverse-Engineering the S-Box of Streebog, Kuznyechik and STRIBOBr1 (Full Version)], 2016

== Литература ==
* [http://www.tc26.ru/download/kuznechik_description_cor.pdf Kuznechik description] / ТЕХНИЧЕСКИЙ КОМИТЕТ ПО СТАНДАРТИЗАЦИИ «КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ» (TK 26)


{{симметричные криптоалгоритмы}}
{{симметричные криптоалгоритмы}}

Версия от 15:06, 8 января 2018

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

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

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

Данный шифр утверждён (наряду с блочным шифром «Магма») в качестве стандарта в ГОСТ Р 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-преобразования

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











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

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

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

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

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

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

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

Примечания

Ссылки

  • В ГОСТе сидел «Кузнечик»[неавторитетный источник]