Kuznechik
Kuznechik (або англ. Kuznyechik, або рос. Кузнечик) — симетричний алгоритм блочного шифрування з розміром блоку 128 бітів і довжиною ключа 256 бітів який входить в стандарту ГОСТ Р 34.12-2015 та ГОСТ 34.12-2018. Шифр використовує для генерації раундових ключів мережу замін-перестановок.
Алгоритм блокового шифрування | |
---|---|
Назва: | Kuznechik |
Розробник: | |
Створений: | |
Опублікований: | |
Розмір ключа: | 250 біт |
Розмір блоку: | 128 біт |
Число раундів: | 10 |
Тип: | мережа замін-перестановок |
Загальні дані
Даний шифр затверджений (поряд з блочним шифром «Магма») в якості стандарту в ГОСТ Р 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]
Примітки
- «ГОСТ Р 34.12-2015»
- «Про введення нових криптографічних стандартів»
- Alex Biryukov, Léo Perrin, Aleksei Udovenko (2016). Reverse-Engineering the S-Box of Streebog, Kuznyechik and STRIBOBr1 (Full Version).
- Léo Perrin, Aleksei Udovenko (2017). Exponential S-Boxes: a Link Between the S-Boxes of BelT and Kuznyechik/Streebog.
- Riham AlTawy and Amr M. Youssef (17 квітня 2015). A Meet in the Middle Attack on Reduced Round Kuznyechik.