Kupyna

Перейти к навигацииПерейти к поиску
Kupyna
РазработчикиЧАО «Институт информационных технологий» (г. Харьков)
Создан2014
Опубликован2 декабря 2014
ПредшественникГОСТ 34.311-95
СтандартыДСТУ 7564:2014
Размер хеша переменный, 8-512 бит (рекомендуемые значения 256, 384, 512)
Число раундов 10 при длине хеша 8-256 бит; 14 при длине хеша 264-512 бит
Типхеш-функция

Kupyna (укр. Купина) — итеративная криптографическая хеш-функция. Принята в качестве национального стандарта Украины ДСТУ 7564:2014[1] в качестве замены устаревшей хеш-функции ГОСТ 34.311-95. Сжимающая функция Kupyna состоит из двух фиксированных 2n-битных перестановок T и T+, структура которых заимствована у шифра Kalyna. В частности, используется четыре таких же S-блока. Результат работы хеш-функции может иметь длину от 8 до 512 бит. Вариант, возвращающий n бит, называется «Kupyna-n»[2].

Происхождение названия

Купена аптечная — растение семейства Иглицевые (Ruscaceae), произрастающие на территории всей Украины в хвойных и смешанных лесах, занесена в Красную книгу Украины.[3]

Алгоритм

Сначала сообщение дополняется до длины, кратной размеру блока. Для этого к сообщению добавляется 1 бит , затем нулевых битов, где и 96 бит, содержащих длину сообщения в битах. Таким образом, максимальная длина сообщения бит.

После этого сообщение разбивается на блоков по бит каждый. Для вариантов функции, возвращающих до 256 бит, = 512. Для вариантов, возвращающих большие значения, = 1024.

Далее, строится хеш-функция, используя следующий итеративный алгоритм.

где

, если l = 512, или , если l = 1024

- функция, возвращающая наиболее значимых битов блока размером

Перестановки T и T+

Эти преобразования управляют состоянием, которое представляется матрицей G, содержащей в каждой ячейке 1 байт информации. Матрица имеет размер 8Х8 (при ) или 8Х16 (при ).

Сначала матрица G заполняется последовательностью байт. Например для последовательности 00 01 02 … 3f матрица G выглядит следующим образом.

Аналогичным образом заполняется матрица 8 X 16.

Перестановки и определены как:

Функция прибавляет по модулю 2 вектор

к каждому столбцу матрицы состояния ( - номер раунда).

Функция прибавляет по модулю 64 вектор

к каждому столбцу матрицы состояния ( - номер раунда).

Функция заменяет элементы матрицы состояния подстановкой из одного из четырёх S-блоков (номер S-блока определяется как ).

Функция производит циклический сдвиг вправо элементов матрицы состояния. Строки с номерами сдвигаются на элементов, а строка 7 сдвигается на 7 элементов при или на 11 элементов при .

Для выполнения функции каждый элемент матрицы состояния представляется как элемент конечного поля , сформированного неприводимым полиномом . Каждый элемент результирующей матрицы состояния вычисляется по формуле:

где - вектор (0x01, 0x01, 0x05, 0x01, 0x08, 0x06, 0x07, 0x04), а - номер столбца матрицы состояния .

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

Создатели уверяют, что дифференциальные атаки и rebound атаки неэффективны уже после 4 итераций функций перестановок. В таблице приведены заявленные создателями показатели криптостойкости.

Вид атакиKupyna-256Kupyna-512
Коллизия21282256
Прообраз22562512
Второй прообраз22562512
Фиксированные точки22562512

В результате независимого криптоанализа удалось провести атаку только на первые 5 раундов; сложность нахождения коллизии для сокращённой до 5 раундов функции Kupyna-256 составляет 2120.[4][5]

S-блоки

Подстановка π0

6DF31DCBC94D792CE097FD6F4B4539
3EDDA34FB4B61F9ABF15E149D293C6
92729E61D163F4FA19D5AD58A4BBA1
DCF2833742E49C7ACCAB4A8F6E0427
2EE7E25A9616C22365660FBCA94741
3448FCB76A8886A5F95BDB387BC31E
2233242836C78EB277BAF5149F0855
9B4CFE605CDACD187D21B03F1B89FF
EB84693A9DD767D340B5DE5D3091B1
781101E50068C59802A6742D0BA276
B3BECEBDAEE91C8AECF19994AAF626
2FEFE88C3503FBD405C15E90203D82
F7EA0A0D7EF8C4500757B83C62E3C8
AC526410D0D912132951B9CFD6738D
8154C0ED4E4485A725E6CA7C8B5680

Подстановка π1

421556B4651C8843C55C36BAF557678D
31F664589EF422AA750F02B1DF6D734D
7C262EF7085D443E9F14C8AE5410D8BC
1A6B69F3BD33ABFAD19B684E169591EE
4C638E5BCC3C19A181497BD96F3760CA
E72B48FD9645FC41120D79E5898CE320
30DCB76C4AB53F97D4622D06A4A5835F
2ADAC9007EA255BF11D59CCF0E0A3D51
7D931BFEC44709860B8F9D6A07B9B098
1832714BEF3B70A0E440FFC3A9E678F9
8B46801E38E1B8A8E00C23761D252405
F16E94289A84E8A34F77D385E252F282
507A2F7453B361AF3935DECD1F99ACAD
722CDDD087BE5EA6EC04C60334FBDB59
B6C201F05AEDA766217F8A27C7C029D7

Подстановка π2

4A172BC294F4BBA362E471D4CD7016E1
493CC0D85C9BAD8553A17AC82DE0D172
A62CC4E37678B7B4093B0E414CDEB290
25A5D7031100C32E92EF4E129D7DCB35
10D54F9E4DA955C6D07B1897D336E648
56818F77CC9CB9E2ACB82F15A47CDA38
1E0B05D6146E6C7E66FDB1E560AF5E33
87C9F05D6D3F888DC7F71DE9ECED8029
27CF99A8500F3724283095D23E5B4083
B369571F071C8ABC20EBCE8EABEE31A2
73F9CA3A1AFB0DC1FEFAF26FBD96DD43
52B608F3AEBE19893226B0EA4B648482
6BF579BF015F75631B233D682A65E891
F6FF1358F1470A7FC5A7E7615A064644
4204A0DB398654AA8C34218BF80C7467

Подстановка π3

2203463D2D4A5383138AB7D52579F5BD
582F0D02ED519E11F23E555ED1163C66
705DF34540CCE8945608CE1A3AD2E1DF
B5386E0EE5F4F986E94FD68523CF3299
3114AEEEC848D330A19241B118C42C71
724415FD37BE5FAA9B88D8AB899CFA60
EABC620C24A6A8EC6720DB7C28DDAC5B
347E10F17B8F63A0059A437721BF2709
C39FB6D729C2EBC0A48B8C1DFBFFC1B2
972EF865F67507044933E4D9B9D042C7
6C90008E6F5001C5DA473FCD69A2E27A
A7C6930F0A06E62B96A31CAF6A128439
E7B082F7FE9D875C8135DEB4A5FC80EF
CBBB6B76BA5A7D780B95E3AD74983B36
646DDCF059A94C177F91B8C9571BE061

Примеры хешей Kupyna

Значения разных вариантов хеша от пустой строки.

Kupyna-256("")
0x cd5101d1ccdf0d1d1f4ada56e888cd724ca1a0838a3521e7131d4fb78d0f5eb6
Kupyna-512("")
0x 656b2f4cd71462388b64a37043ea55dbe445d452aecd46c3298343314ef04019
   bcfa3f04265a9857f91be91fce197096187ceda78c9c1c021c294a0689198538

Малое изменение сообщения с большой вероятностью приводит к значительным изменениям в значении хеш-функции благодаря лавинному эффекту, как показано в следующем примере:

Kupyna-256("The quick brown fox jumps over the lazy dog")
0x 996899f2d7422ceaf552475036b2dc120607eff538abf2b8dff471a98a4740c6
Kupyna-256("The quick brown fox jumps over the lazy dog.")
0x 88ea8ce988fe67eb83968cdc0f6f3ca693baa502612086c0dcec761a98e2fb1f

Примечания

  1. http://csm.kiev.ua/index.php?view=article&id=3022 Архивная копия от 21 ноября 2021 на Wayback Machine В Украине внедряются новые стандарты криптографической защиты информации
  2. http://eprint.iacr.org/2015/885.pdf Архивная копия от 25 сентября 2015 на Wayback Machine A New Standard of Ukraine: The Kupyna Hash Function
  3. http://www.slideshare.net/oliynykov/kupyna Архивная копия от 25 сентября 2015 на Wayback Machine Main properties of the new Ukrainian national standard on cryptographic hash function
  4. Christoph Dobraunig, Maria Eichlseder, and Florian Mendel. Analysis of the Kupyna-256 Hash Function (англ.) (2015). Дата обращения: 1 октября 2015. Архивировано 4 марта 2016 года.
  5. Jian Zou, Le Dong. Cryptanalysis of the Round-Reduced Kupyna Hash Function (англ.) (2015). Дата обращения: 2 октября 2015. Архивировано 4 марта 2016 года.