Кузнечик Общий Дизайнеров ООО «ИнфоТеКС» [1] Впервые опубликовано 2015 г. Сертификация ГОСТ и ФСС Деталь шифра Ключевые размеры 256- битная сеть Фейстеля Размеры блоков 128 бит Структура Сеть подстановки-перестановки Раундов 10 Лучший публичный криптоанализ Встречаются в-середине атаки на 5 патронов. [2]
Кузнечик ( русский : Кузнечик , буквально «кузнечик») - симметричный блочный шифр . Он имеет размер блока 128 бит и длину ключа 256 бит. Он определен в Национальном стандарте Российской Федерации ГОСТ Р 34.12-2015 на английском языке [3], а также в RFC 7801 .
Название шифра может быть переведено , как кузнечик , однако, стандарт явно говорит о том , что английское название шифра Kuznyechik ( ). Разработчики утверждают, что, называя шифр Kuznyechik, они следуют тенденции трудно произносимых имен алгоритмов, установленной Rijndael и Keccak . [4] Ходят также слухи, что шифр назван в честь его создателей: А.С. Кузьмина, [5] А.А. Нечаева [6] и Компании (рус.: Куз ьмин, Неч аев и К омпания). [ необходима цитата ]
Стандарт ГОСТ Р 34.12-2015 определяет новый шифр в дополнение к старому блочному шифру ГОСТ (теперь называемому Magma) как один и не объявляет старый шифр устаревшим. [7]
Кузнечик основан на сети замещения-перестановки , хотя в ключевом расписании используется сеть Фейстеля .
Обозначения [ править ] F {\ Displaystyle \ mathbb {F}} - Конечное поле . грамм F ( 2 8 ) {\ displaystyle GF (2 ^ {8})} Икс 8 + Икс 7 + Икс 6 + Икс + 1 {\ displaystyle x ^ {8} + x ^ {7} + x ^ {6} + x + 1}
B я п 8 : Z п → V 8 {\ displaystyle Bin_ {8}: \ mathbb {Z} _ {p} \ rightarrow V_ {8}} - ( ) Z п {\displaystyle \mathbb {Z} _{p}} p = 2 8 {\displaystyle p=2^{8}}
B i n 8 − 1 : V 8 → Z p {\displaystyle {Bin_{8}}^{-1}:V_{8}\rightarrow \mathbb {Z} _{p}} - . B i n 8 {\displaystyle Bin_{8}}
δ : V 8 → F {\displaystyle \delta :V_{8}\rightarrow \mathbb {F} } - . F {\displaystyle \mathbb {F} }
δ − 1 : F → V 8 {\displaystyle \delta ^{-1}:\mathbb {F} \rightarrow V_{8}} - δ {\displaystyle \delta }
Для шифрования, дешифрования и генерации ключей используются следующие функции:
A d d 2 [ k ] ( a ) = k ⊕ a {\displaystyle Add_{2}[k](a)=k\oplus a} , Где , бинарные строки вида ... ( это строка конкатенация ). k {\displaystyle k} a {\displaystyle a} a = a 15 | | {\displaystyle a=a_{15}||} | | a 0 {\displaystyle ||a_{0}} | | {\displaystyle ||}
N ( a ) = S ( a 15 ) | | {\displaystyle N(a)=S(a_{15})||} … Это обратное преобразование . | | S ( a 0 ) . N − 1 ( a ) {\displaystyle ||S(a_{0}).~~N^{-1}(a)} N ( a ) {\displaystyle N(a)}
G ( a ) = δ ( a 15 , {\displaystyle G(a)=\delta (a_{15},} ... ... , a 0 ) | | a 15 | | {\displaystyle ,a_{0})||a_{15}||} | | a 1 . {\displaystyle ||a_{1}.}
G − 1 ( a ) {\displaystyle G^{-1}(a)} - обращенный трансформация , ... ... G ( a ) {\displaystyle G(a)} G − 1 ( a ) = a 14 | | a 13 | | {\displaystyle G^{-1}(a)=a_{14}||a_{13}||} | | a 0 | | δ ( a 14 , a 13 , {\displaystyle ||a_{0}||\delta (a_{14},a_{13},} , a 0 , a 15 ) . {\displaystyle ,a_{0},a_{15}).}
H ( a ) = G 16 ( a ) {\displaystyle H(a)=G^{16}(a)} , где - композиция преобразований и т. д. G 16 {\displaystyle G^{16}} G 15 {\displaystyle G^{15}} G {\displaystyle G}
F [ k ] ( a 1 , a 0 ) = ( H N A d d 2 [ k ] ( a 1 ) ⊕ a 0 , a 1 ) . {\displaystyle F[k](a_{1},a_{0})=(HNAdd_{2}[k](a_{1})\oplus a_{0},a_{1}).}
Нелинейное преобразование [ править ] Нелинейное преобразование задается заменой S = Bin 8 S 'Bin 8 −1 .
Значения подстановки S ' задаются в виде массива S' = (S '(0), S' (1),…, S '(255)) :
S ′ = ( 252 , 238 , 221 , 17 , 207 , 110 , 49 , 22 , 251 , 196 , 250 , 218 , 35 , 197 , 4 , 77 , 233 , {\displaystyle S'=(252,238,221,17,207,110,49,22,251,196,250,218,35,197,4,77,233,} 119 , 240 , 219 , 147 , 46 , 153 , 186 , 23 , 54 , 241 , 187 , 20 , 205 , 95 , 193 , 249 , 24 , 101 , {\displaystyle 119,240,219,147,46,153,186,23,54,241,187,20,205,95,193,249,24,101,} 90 , 226 , 92 , 239 , 33 , 129 , 28 , 60 , 66 , 139 , 1 , 142 , 79 , 5 , 132 , 2 , 174 , 227 , 106 , 143 , {\displaystyle 90,226,92,239,33,129,28,60,66,139,1,142,79,5,132,2,174,227,106,143,} 160 , 6 , 11 , 237 , 152 , 127 , 212 , 211 , 31 , 235 , 52 , 44 , 81 , 234 , 200 , 72 , 171 , 242 , 42 , {\displaystyle 160,6,11,237,152,127,212,211,31,235,52,44,81,234,200,72,171,242,42,} 104 , 162 , 253 , 58 , 206 , 204 , 181 , 112 , 14 , 86 , 8 , 12 , 118 , 18 , 191 , 114 , 19 , 71 , 156 , {\displaystyle 104,162,253,58,206,204,181,112,14,86,8,12,118,18,191,114,19,71,156,} 183 , 93 , 135 , 21 , 161 , 150 , 41 , 16 , 123 , 154 , 199 , 243 , 145 , 120 , 111 , 157 , 158 , 178 , {\displaystyle 183,93,135,21,161,150,41,16,123,154,199,243,145,120,111,157,158,178,} 177 , 50 , 117 , 25 , 61 , 255 , 53 , 138 , 126 , 109 , 84 , 198 , 128 , 195 , 189 , 13 , 87 , 223 , {\displaystyle 177,50,117,25,61,255,53,138,126,109,84,198,128,195,189,13,87,223,} 245 , 36 , 169 , 62 , 168 , 67 , 201 , 215 , 121 , 214 , 246 , 124 , 34 , 185 , 3 , 224 , 15 , 236 , {\displaystyle 245,36,169,62,168,67,201,215,121,214,246,124,34,185,3,224,15,236,} 222 , 122 , 148 , 176 , 188 , 220 , 232 , 40 , 80 , 78 , 51 , 10 , 74 , 167 , 151 , 96 , 115 , 30 , 0 , {\displaystyle 222,122,148,176,188,220,232,40,80,78,51,10,74,167,151,96,115,30,0,} 98 , 68 , 26 , 184 , 56 , 130 , 100 , 159 , 38 , 65 , 173 , 69 , 70 , 146 , 39 , 94 , 85 , 47 , 140 , 163 , {\displaystyle 98,68,26,184,56,130,100,159,38,65,173,69,70,146,39,94,85,47,140,163,} 165 , 125 , 105 , 213 , 149 , 59 , 7 , 88 , 179 , 64 , 134 , 172 , 29 , 247 , 48 , 55 , 107 , 228 , 136 , {\displaystyle 165,125,105,213,149,59,7,88,179,64,134,172,29,247,48,55,107,228,136,} 217 , 231 , 137 , 225 , 27 , 131 , 73 , 76 , 63 , 248 , 254 , 141 , 83 , 170 , 144 , 202 , 216 , 133 , {\displaystyle 217,231,137,225,27,131,73,76,63,248,254,141,83,170,144,202,216,133,} 97 , 32 , 113 , 103 , 164 , 45 , 43 , 9 , 91 , 203 , 155 , 37 , 208 , 190 , 229 , 108 , 82 , 89 , 166 , {\displaystyle 97,32,113,103,164,45,43,9,91,203,155,37,208,190,229,108,82,89,166,} 116 , 210 , 230 , 244 , 180 , 192 , 209 , 102 , 175 , 194 , 57 , 75 , 99 , 182 ) . {\displaystyle 116,210,230,244,180,192,209,102,175,194,57,75,99,182).}
Линейное преобразование [ править ] γ {\displaystyle \gamma } : … γ ( a 15 , {\displaystyle \gamma (a_{15},} , a 0 ) = δ − 1 ( 148 ∗ δ ( a 15 ) + 32 ∗ δ ( a 14 ) + 133 ∗ δ ( a 13 ) + 16 ∗ δ ( a 12 ) + {\displaystyle ,a_{0})=\delta ^{-1}~(148*\delta (a_{15})+32*\delta (a_{14})+133*\delta (a_{13})+16*\delta (a_{12})+} 194 ∗ δ ( a 11 ) + 192 ∗ δ ( a 10 ) + 1 ∗ δ ( a 9 ) + 251 ∗ δ ( a 8 ) + 1 ∗ δ ( a 7 ) + 192 ∗ δ ( a 6 ) + {\displaystyle 194*\delta (a_{11})+192*\delta (a_{10})+1*\delta (a_{9})+251*\delta (a_{8})+1*\delta (a_{7})+192*\delta (a_{6})+} 194 ∗ δ ( a 5 ) + 16 ∗ δ ( a 4 ) + 133 ∗ δ ( a 3 ) + 32 ∗ δ ( a 2 ) + 148 ∗ δ ( a 1 ) + 1 ∗ δ ( a 0 ) ) , {\displaystyle 194*\delta (a_{5})+16*\delta (a_{4})+133*\delta (a_{3})+32*\delta (a_{2})+148*\delta (a_{1})+1*\delta (a_{0})),}
операции сложения и умножения выполняются в поле . F {\displaystyle \mathbb {F} }
Генерация ключей [ править ] Алгоритм генерации ключа использует итеративную константу , i = 1,2,… 32
и устанавливает общий ключ следующим образом: … . C i = H ( B i n 128 ( i ) ) {\displaystyle C_{i}=H(Bin_{128}(i))} K = k 255 | | {\displaystyle K=k_{255}||} | | k 0 {\displaystyle ||k_{0}}
Итерированные ключи:
K 1 = k 255 | | {\displaystyle K_{1}=k_{255}||} … | | k 128 {\displaystyle ||k_{128}}
K 2 = k 127 | | {\displaystyle K_{2}=k_{127}||} … | | k 0 {\displaystyle ||k_{0}}
( K 2 i + 1 , K 2 i + 2 ) = F [ C 8 ( i − 1 ) + 8 ] {\displaystyle (K_{2i+1},K_{2i+2})=F[C_{8(i-1)+8}]} … F [ C 8 ( i − 1 ) + 1 ] ( K 2 i + 1 , K 2 i ) , i = 1 , 2 , 3 , 4. {\displaystyle F[C_{8(i-1)+1}](K_{2i+1},K_{2i}),i=1,2,3,4.}
Алгоритм шифрования [ править ] E ( a ) = A d d 2 [ K 10 ] H N A d d 2 [ K 9 ] {\displaystyle E(a)=Add_{2}[K_{10}]HNAdd_{2}[K_{9}]} … Где - 128-битная строка. H N A d d 2 [ K 2 ] H N A d d 2 [ K 1 ] ( a ) , {\displaystyle HNAdd_{2}[K_{2}]HNAdd_{2}[K_{1}](a),}
Алгоритм дешифрования [ править ] D ( a ) = A d d 2 [ K 1 ] H − 1 N − 1 A d d 2 [ K 2 ] {\displaystyle D(a)=Add_{2}[K_{1}]H^{-1}N^{-1}Add_{2}[K_{2}]} … H − 1 N − 1 A d d 2 [ K 9 ] H − 1 N − 1 A d d 2 [ K 10 ] ( a ) . {\displaystyle H^{-1}N^{-1}Add_{2}[K_{9}]H^{-1}N^{-1}Add_{2}[K_{10}](a).}
Криптоанализ [ править ] Riham AlTawy и Амр М. Юсеф описывают метод встречи посередине на 5-раунде пониженной Kuznyechik , который обеспечивает восстановление ключа с временной сложностью 2 140 , сложность памяти из 2 153 , и сложность данных 2 113 . [2]
Алекс Бирюков , Лео Перрин и Алексей Удовенко опубликовали статью, в которой показывают, что S-блоки Кузнечика и Стрибога были созданы не псевдослучайно, а с помощью скрытого алгоритма, который они смогли реконструировать . [8]
Позже Лео Перрин и Алексей Удовенко опубликовали две альтернативные декомпозиции S-блока и доказали его связь с S-блоком белорусского шифра BelT. [9] Авторы статьи отмечают, что, хотя причина использования такой структуры остается неясной, генерация S-блоков с помощью скрытого алгоритма противоречит концепции чисел « ничего в рукаве», которые могут доказать, что никаких слабых мест не было намеренно введено. в их дизайне.
Рихам Альтави, Онур Думан и Амр М. Юссеф опубликовали две атаки с ошибкой на Кузнечик, которые демонстрируют важность защиты реализаций шифра. [10]
Принятие [ править ] VeraCrypt ( ответвление TrueCrypt ) включил Kuznyechik в качестве одного из поддерживаемых алгоритмов шифрования. [11]
Исходный код [ править ] https://web.archive.org/web/20160424051147/http://tc26.ru/standard/draft/PR_GOSTR-bch_v4.zip https://web.archive.org/web/20180406230057/https://fossies.org/windows/misc/VeraCrypt_1.22_Source.zip/src/Crypto/kuznyechik.c (альтернативная ссылка на случай, если первая ссылка не работает ) Ссылки [ править ] ^ "Архивная копия" . Архивировано из оригинала на 2016-04-24 . Проверено 13 апреля 2016 . CS1 maint: archived copy as title (link) ^ a b Рихам Альтави и Амр М. Юсеф (2015-04-17). «Встреча в средней атаке на сокращенный раунд Кузнечика» (PDF) . CS1 maint: uses authors parameter (link) ^ Http://tc26.ru/en/standard/gost/GOST_R_34_12_2015_ENG.pdf архивации 2017-11-04 в Вайбак Machine Национальный стандарт Российской Федерации ГОСТ Р 34.12-2015 (английская версия) ^ https://mjos.fi/doc/rus/gh_ctcrypt.pdf Low-Weight и Hi-End: проект российского стандарта шифрования ^ https://www.researchgate.net/scientific-contributions/69696703_A_S_Kuzmin ^ https://www.researchgate.net/profile/A_Nechaev ^ http://www.itsec.ru/articles2/crypto/gost-r-chego-ozhidat-ot-novogo-standarta ГОСТ Р 34.12–2015: чего ожидать от нового стандарта? (Только русский) ^ Алекс Бирюков , Лео Перрин, и Алексей Удовенко (2016-02-18). «Обратный инжиниринг S-box Streebog, Kuznyechik и STRIBOBr1 (Полная версия)» (PDF) . CS1 maint: uses authors parameter (link) ^ Léo Перрин, Алексей Удовенко (2017). «Экспоненциальные S-блоки: связь между S-блоками БелТ и Кузнечик / Стрибог» (PDF) . ^ Рихам Альтави, Онур Думан и Амр М. Юсеф (2015-04-17). «Анализ разломов Кузнечика» (PDF) . CS1 maint: uses authors parameter (link) ^ "Кузнечик" . Документация VeraCrypt . IDRIX . Проверено 3 февраля 2018 .
История криптографии Краткое описание криптографии Криптоанализ Криптовалюта Криптосистема Криптовирология Клептография Безопасный канал Небезопасный канал Подсознательный канал Шифрование Расшифровка Информационно-теоретическая безопасность Простой текст Зашифрованный текст Поделился секретом Функция люка Маршрутизация на основе ключей Луковая маршрутизация Маршрутизация чеснока Кадемлия Смешайте сеть Криптографическая хеш-функция Блочный шифр Потоковый шифр Алгоритм с симметричным ключом Криптография с открытым ключом Квантовое распределение ключей Квантовая криптография Постквантовая криптография Код аутентификации сообщения Случайные числа Стеганография Категория