Kuznechik

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Kuznechik
Раундів10
Типмережа замін-перестановок

Kuznechik (або англ. Kuznyechik, або рос. Кузнечик) — симетричний алгоритм блочного шифрування з розміром блоку 128 бітів і довжиною ключа 256 бітів який входить в стандарту ГОСТ Р 34.12-2015 та ГОСТ 34.12-2018. Шифр використовує для генерації раундових ключів мережу замін-перестановок.

Загальні дані

[ред. | ред. код]

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

Позначення

[ред. | ред. код]

 — поле Галуа за модулем незвідного багаточлена .

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

 — відображення, зворотне до .

 — бієктивне відображення, що ставить у відповідність двійковому рядку елемент поля .

 — відображення, зворотне до

Опис алгоритму

[ред. | ред. код]

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

, де ,  — двійкові рядки виду ( — символ конкатенації рядків).

 — зворотнє до перетворення.

 — зворотнє до перетворення, при чому

, де  — композиція перетворень і і т. д.


Нелінійне перетворення

[ред. | ред. код]

Нелінійне перетворення задається підстановкою 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-перетворення

[ред. | ред. код]

Приклад генерації ключа

[ред. | ред. код]











У підсумку отримуємо ітераційні ключі:

Приклад алгоритму шифрування

[ред. | ред. код]

Відкритий текст

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

[ред. | ред. код]

Очікується, що новий блочний шифр Kuznechik буде стійкий до всіх видів атак на блочні шифри.

На конференції «CRYPTO-2015» Алекс Бірюков, Лео Перрін і Олексій Удовенко представили доповідь, в якій говориться про те, що незважаючи на твердження розробників, значення S-блоку шифру Kuznechik і геш-функції Streebog не є (псевдо) випадковими числами, а згенеровані на основі прихованого алгоритму, який їм вдалося відновити методами зворотного проектування[3]. Пізніше Лео Перрін і Олексій Удовенко опублікували два альтернативних алгоритми генерації S-блоку і довели його зв'язок з S-блоком білоруського шифру BelT[4]. У цьому дослідженні автори також стверджують, що, хоча причини використання такої структури залишаються неясні, використання прихованих алгоритмів для генерації S-блоків суперечить принципу відсутності козиря в рукаві, який міг би служити доказом відсутністі спеціально закладених вразливостей в дизайні алгоритму.

Riham AlTawy і Amr M. Youssef описали атаку «зустрічі посередині» на 5 раундів шифру Kuznechik, 256-бітний майстер-ключ відновлюється з складністю часу 2140.3 і вимагає 2153.3 пам'яті та 2113 даних.[5]

Примітки

[ред. | ред. код]
  1. «ГОСТ Р 34.12-2015» (PDF). Архів оригіналу (PDF) за 25 вересня 2018. Процитовано 25 вересня 2018.
  2. «Про введення нових криптографічних стандартів». Архів оригіналу за 27 вересня 2016. Процитовано 10 квітня 2018.
  3. Alex Biryukov, Léo Perrin, Aleksei Udovenko (2016). Reverse-Engineering the S-Box of Streebog, Kuznyechik and STRIBOBr1 (Full Version) (PDF). Архів оригіналу (PDF) за 16 липня 2017. Процитовано 10 квітня 2018.
  4. Léo Perrin, Aleksei Udovenko (2017). Exponential S-Boxes: a Link Between the S-Boxes of BelT and Kuznyechik/Streebog (PDF). Архів оригіналу (PDF) за 17 квітня 2021. Процитовано 10 квітня 2018.
  5. Riham AlTawy and Amr M. Youssef (17 квітня 2015). A Meet in the Middle Attack on Reduced Round Kuznyechik (PDF). Архів оригіналу (PDF) за 16 липня 2017. Процитовано 10 квітня 2018.

Посилання

[ред. | ред. код]

Див. також

[ред. | ред. код]