Купина (геш-функція)
«Купина» (англ. Kupyna) — ітеративна криптографічна геш-функція описана у національному стандарті України ДСТУ 7564:2014 «Інформаційні технології. Криптографічний захист інформації. Функція хешування». Стандарт набрав чинності з 1 квітня 2015 року наказом Мінекономрозвитку від 2 грудня 2014 року №1431[2]. Текст стандарту є у вільному доступі [3].
Державний стандарт України | |
---|---|
| |
Позначення | ДСТУ 7564:2014 |
Назва | Інформаційні технології. Криптографічний захист інформації. Функція хешування |
Інформаційні дані | |
Розробники | Приватне акціонерне товариство «Інститут інформаційних технологій» |
Внесено | Мінекономрозвитку України |
Введено в дію | наказ від 2 грудня 2014 р. № 1431 |
Чинний від | 1 квітня 2015 року |
Статус | Чинний[1] |
Останні зміни | ІПС №11-2015 |
Пов'язані стандарти | ДСТУ 7624:2014, ДСТУ 4145-2002, ГОСТ 34.311-95 |
Кількість сторінок | 40 |
База нормативних документів |
Стандарт ДСТУ 7564:2014 розроблено задля поступової заміни міждержавного стандарту ГОСТ 34.311-95[4] та згідно чинного наказу Мінцифри від 30 вересня 2020 року №140/614[5] може застосовуватися для створення кваліфікованого електронного підпису з 01 січня 2021 року, та обов'язковий для застосування після 1 січня 2022 року замість функції гешування за ГОСТ 34.311-95.
Функція стиснення Купини складається з двох фіксованих 2n-бітних перестановок T⊕ і T+, структура яких запозичена у шифра Калина. Зокрема, використовуються чотири таких самих S-блока. Результат роботи геш-функції може мати довжину від 8 до 512 біт. Варіант, який повертає n біт, позначається як Купина-n.[6]
Алгоритм
Спочатку повідомлення доповнюється до довжини, кратної розміру блока. Для цього до повідомлення додається 1 біт , після нього нульових бітів, де і 96 біт, які містять довжину повідомлення в бітах. Таким чином, максимальна довжина повідомлення становить біт.
Далі повідомлення розбивається на блоків по біт у кожному. Для варіантів функції, які повертають до 256 біт включно, = 512. Для варіантів, які повертають значення, довші 256 біт, = 1024.
Далі, будується геш-функція, з використанням наступного ітеративного алгоритму[6].
де
, якщо l = 512, або , якщо l = 1024
— функція, яка повертає найбільш значущих бітів блока розміром [6]
Кількість ітерацій для варіантів функції, які повертають до 256 біт включно — 10. Кількість ітерацій для варіантів функції, які повертають значення, довші 256 біт, — 14[6].
Перестановки T⊕ і T+
Ці перетворення керують станом, представленим матрицею G, яка містить у кожній комірці 1 байт інформації[6]. Матриця має розмір 8Х8 (при ) або 8Х16 (при )[6].
Спочатку матриця G заповнюється послідовністю байт[6]. Наприклад для послідовності 00 01 02 … 3f матриця G виглядає так[6].
Аналогічно заповнюється матриця 8 X 16[6].
Перестановки і визначені як:
Функція додає по модулю 2 вектор
до кожного стовпця матриці стану ( — номер раунду)[6].
Функція додає по модулю вектор
до кожного стовпця матриці стану ( — номер раунду)[6].
Функція підміняє елементи матриці стану підстановкою з одного з чотирьох S-блоків (номер S-блока визначається як )[6].
Функція виконує циклічний зсув вправо елементів матриці стану. Рядки з номерами зсуваються на елементів, а рядок 7 зсувається на 7 елементів при або на 11 елементів при [6].
Для виконання функції кожен елемент матриці стану представляється як елемент скінченного поля , сформованого незвідним поліномом . Кожен елемент матриці стану обчислюється за формулою:
де — вектор (0x01, 0x01, 0x05, 0x01, 0x08, 0x06, 0x07, 0x04), а — номер стовпця матриці стану [6].
S-блоки
Підстановка π0
A8 | 43 | 5F | 06 | 6B | 75 | 6C | 59 | 71 | DF | 87 | 95 | 17 | F0 | D8 | 09 |
6D | F3 | 1D | CB | C9 | 4D | 2C | AF | 79 | E0 | 97 | FD | 6F | 4B | 45 | 39 |
3E | DD | A3 | 4F | B4 | B6 | 9A | 0E | 1F | BF | 15 | E1 | 49 | D2 | 93 | C6 |
92 | 72 | 9E | 61 | D1 | 63 | FA | EE | F4 | 19 | D5 | AD | 58 | A4 | BB | A1 |
DC | F2 | 83 | 37 | 42 | E4 | 7A | 32 | 9C | CC | AB | 4A | 8F | 6E | 04 | 27 |
2E | E7 | E2 | 5A | 96 | 16 | 23 | 2B | C2 | 65 | 66 | 0F | BC | A9 | 47 | 41 |
34 | 48 | FC | B7 | 6A | 88 | A5 | 53 | 86 | F9 | 5B | DB | 38 | 7B | C3 | 1E |
22 | 33 | 24 | 28 | 36 | C7 | B2 | 3B | 8E | 77 | BA | F5 | 14 | 9F | 08 | 55 |
9B | 4C | FE | 60 | 5C | DA | 18 | 46 | CD | 7D | 21 | B0 | 3F | 1B | 89 | FF |
EB | 84 | 69 | 3A | 9D | D7 | D3 | 70 | 67 | 40 | B5 | DE | 5D | 30 | 91 | B1 |
78 | 11 | 01 | E5 | 00 | 68 | 98 | A0 | C5 | 02 | A6 | 74 | 2D | 0B | A2 | 76 |
B3 | BE | CE | BD | AE | E9 | 8A | 31 | 1C | EC | F1 | 99 | 94 | AA | F6 | 26 |
2F | EF | E8 | 8C | 35 | 03 | D4 | 7F | FB | 05 | C1 | 5E | 90 | 20 | 3D | 82 |
F7 | EA | 0A | 0D | 7E | F8 | 50 | 1A | C4 | 07 | 57 | B8 | 3C | 62 | E3 | C8 |
AC | 52 | 64 | 10 | D0 | D9 | 13 | 0C | 12 | 29 | 51 | B9 | CF | D6 | 73 | 8D |
81 | 54 | C0 | ED | 4E | 44 | A7 | 2A | 85 | 25 | E6 | CA | 7C | 8B | 56 | 80 |
Підстановка π1
CE | BB | EB | 92 | EA | CB | 13 | C1 | E9 | 3A | D6 | B2 | D2 | 90 | 17 | F8 |
42 | 15 | 56 | B4 | 65 | 1C | 88 | 43 | C5 | 5C | 36 | BA | F5 | 57 | 67 | 8D |
31 | F6 | 64 | 58 | 9E | F4 | 22 | AA | 75 | 0F | 02 | B1 | DF | 6D | 73 | 4D |
7C | 26 | 2E | F7 | 08 | 5D | 44 | 3E | 9F | 14 | C8 | AE | 54 | 10 | D8 | BC |
1A | 6B | 69 | F3 | BD | 33 | AB | FA | D1 | 9B | 68 | 4E | 16 | 95 | 91 | EE |
4C | 63 | 8E | 5B | CC | 3C | 19 | A1 | 81 | 49 | 7B | D9 | 6F | 37 | 60 | CA |
E7 | 2B | 48 | FD | 96 | 45 | FC | 41 | 12 | 0D | 79 | E5 | 89 | 8C | E3 | 20 |
30 | DC | B7 | 6C | 4A | B5 | 3F | 97 | D4 | 62 | 2D | 06 | A4 | A5 | 83 | 5F |
2A | DA | C9 | 00 | 7E | A2 | 55 | BF | 11 | D5 | 9C | CF | 0E | 0A | 3D | 51 |
7D | 93 | 1B | FE | C4 | 47 | 09 | 86 | 0B | 8F | 9D | 6A | 07 | B9 | B0 | 98 |
18 | 32 | 71 | 4B | EF | 3B | 70 | A0 | E4 | 40 | FF | C3 | A9 | E6 | 78 | F9 |
8B | 46 | 80 | 1E | 38 | E1 | B8 | A8 | E0 | 0C | 23 | 76 | 1D | 25 | 24 | 05 |
F1 | 6E | 94 | 28 | 9A | 84 | E8 | A3 | 4F | 77 | D3 | 85 | E2 | 52 | F2 | 82 |
50 | 7A | 2F | 74 | 53 | B3 | 61 | AF | 39 | 35 | DE | CD | 1F | 99 | AC | AD |
72 | 2C | DD | D0 | 87 | BE | 5E | A6 | EC | 04 | C6 | 03 | 34 | FB | DB | 59 |
B6 | C2 | 01 | F0 | 5A | ED | A7 | 66 | 21 | 7F | 8A | 27 | C7 | C0 | 29 | D7 |
Підстановка π2
93 | D9 | 9A | B5 | 98 | 22 | 45 | FC | BA | 6A | DF | 02 | 9F | DC | 51 | 59 |
4A | 17 | 2B | C2 | 94 | F4 | BB | A3 | 62 | E4 | 71 | D4 | CD | 70 | 16 | E1 |
49 | 3C | C0 | D8 | 5C | 9B | AD | 85 | 53 | A1 | 7A | C8 | 2D | E0 | D1 | 72 |
A6 | 2C | C4 | E3 | 76 | 78 | B7 | B4 | 09 | 3B | 0E | 41 | 4C | DE | B2 | 90 |
25 | A5 | D7 | 03 | 11 | 00 | C3 | 2E | 92 | EF | 4E | 12 | 9D | 7D | CB | 35 |
10 | D5 | 4F | 9E | 4D | A9 | 55 | C6 | D0 | 7B | 18 | 97 | D3 | 36 | E6 | 48 |
56 | 81 | 8F | 77 | CC | 9C | B9 | E2 | AC | B8 | 2F | 15 | A4 | 7C | DA | 38 |
1E | 0B | 05 | D6 | 14 | 6E | 6C | 7E | 66 | FD | B1 | E5 | 60 | AF | 5E | 33 |
87 | C9 | F0 | 5D | 6D | 3F | 88 | 8D | C7 | F7 | 1D | E9 | EC | ED | 80 | 29 |
27 | CF | 99 | A8 | 50 | 0F | 37 | 24 | 28 | 30 | 95 | D2 | 3E | 5B | 40 | 83 |
B3 | 69 | 57 | 1F | 07 | 1C | 8A | BC | 20 | EB | CE | 8E | AB | EE | 31 | A2 |
73 | F9 | CA | 3A | 1A | FB | 0D | C1 | FE | FA | F2 | 6F | BD | 96 | DD | 43 |
52 | B6 | 08 | F3 | AE | BE | 19 | 89 | 32 | 26 | B0 | EA | 4B | 64 | 84 | 82 |
6B | F5 | 79 | BF | 01 | 5F | 75 | 63 | 1B | 23 | 3D | 68 | 2A | 65 | E8 | 91 |
F6 | FF | 13 | 58 | F1 | 47 | 0A | 7F | C5 | A7 | E7 | 61 | 5A | 06 | 46 | 44 |
42 | 04 | A0 | DB | 39 | 86 | 54 | AA | 8C | 34 | 21 | 8B | F8 | 0C | 74 | 67 |
Підстановка π3
68 | 8D | CA | 4D | 73 | 4B | 4E | 2A | D4 | 52 | 26 | B3 | 54 | 1E | 19 | 1F |
22 | 03 | 46 | 3D | 2D | 4A | 53 | 83 | 13 | 8A | B7 | D5 | 25 | 79 | F5 | BD |
58 | 2F | 0D | 02 | ED | 51 | 9E | 11 | F2 | 3E | 55 | 5E | D1 | 16 | 3C | 66 |
70 | 5D | F3 | 45 | 40 | CC | E8 | 94 | 56 | 08 | CE | 1A | 3A | D2 | E1 | DF |
B5 | 38 | 6E | 0E | E5 | F4 | F9 | 86 | E9 | 4F | D6 | 85 | 23 | CF | 32 | 99 |
31 | 14 | AE | EE | C8 | 48 | D3 | 30 | A1 | 92 | 41 | B1 | 18 | C4 | 2C | 71 |
72 | 44 | 15 | FD | 37 | BE | 5F | AA | 9B | 88 | D8 | AB | 89 | 9C | FA | 60 |
EA | BC | 62 | 0C | 24 | A6 | A8 | EC | 67 | 20 | DB | 7C | 28 | DD | AC | 5B |
34 | 7E | 10 | F1 | 7B | 8F | 63 | A0 | 05 | 9A | 43 | 77 | 21 | BF | 27 | 09 |
C3 | 9F | B6 | D7 | 29 | C2 | EB | C0 | A4 | 8B | 8C | 1D | FB | FF | C1 | B2 |
97 | 2E | F8 | 65 | F6 | 75 | 07 | 04 | 49 | 33 | E4 | D9 | B9 | D0 | 42 | C7 |
6C | 90 | 00 | 8E | 6F | 50 | 01 | C5 | DA | 47 | 3F | CD | 69 | A2 | E2 | 7A |
A7 | C6 | 93 | 0F | 0A | 06 | E6 | 2B | 96 | A3 | 1C | AF | 6A | 12 | 84 | 39 |
E7 | B0 | 82 | F7 | FE | 9D | 87 | 5C | 81 | 35 | DE | B4 | A5 | FC | 80 | EF |
CB | BB | 6B | 76 | BA | 5A | 7D | 78 | 0B | 95 | E3 | AD | 74 | 98 | 3B | 36 |
64 | 6D | DC | F0 | 59 | A9 | 4C | 17 | 7F | 91 | B8 | C9 | 57 | 1B | E0 | 61 |
Криптостійкість
Автори запевняють, що диференціальні атаки і rebound-атаки неефективні вже після 4 ітерацій функцій перестановок. У таблиці наведені заявлені авторами показники криптостійкості.
Вид атаки | Купина-256 | Купина-512 |
---|---|---|
Колізія | 2128 | 2256 |
Першовзір | 2256 | 2512 |
Другий першовзір | 2256 | 2512 |
Фіксовані точки | 2256 | 2512 |
У результаті незалежного криптоаналізу вдалося провести атаку тільки на перші 5 раундів; складність знаходження колізії для скороченої до 5 раундів функції Купина-256 складає 2120.[7][8]
Використання
Kupyna-reference — код референсної реалізаціі на C
cppcrypto — Бібліотека з відкритим вихідним кодом на C++
cryptonite — бібліотека криптографічних перетворень від ПриватБанку з відкритим програмним кодом на C, має експертний висновок UA.14360570.00001-01 90 01-1 за результатами державної експертизи у галузі КЗІ
Примітки
- ДСТУ 7564:2014 в Каталозі НД України
- Про прийняття національних стандартів України, гармонізованих з європейськими стандартами, міжнародних стандартів як національних стандартів України, затвердження національних стандартів України, скасування міждержавних стандартів в Україні та внесення зміни до наказу Державного комітету стандартизації, метрології та сертифікації України від 12.06.2002 №357
- Текст стандарту ДСТУ 7564:2014 на сайті Державного підприємства «Український науково-дослідний і навчальний центр проблем стандартизації, сертифікації та якості»
- Держспецзв’язку впроваджує нові стандарти криптографічного захисту інформації
- Наказ № 140/614 від 30.09.2020 "Про встановлення вимог до технічних засобів, процесів їх створення, використання та функціонування у складі інформаційно-телекомунікаційних систем під час надання кваліфікованих електронних довірчих послуг". zakon.rada.gov.ua (укр.). Міністерство цифрової трансформації України. 30 вересня 2020. Процитовано 4 січня 2021.
- https://eprint.iacr.org/2015/885.pdf Roman Oliynykov, Ivan Gorbenko, Oleksandr Kazymyrov, Victor Ruzhentsev, Oleksandr Kuznetsov, Yurii Gorbenko, Artem Boiko, Oleksandr Dyrda, Viktor Dolgov, Andrii Pushkaryov A New Standard of Ukraine: The Kupyna Hash Function
- Christoph Dobraunig, Maria Eichlseder, and Florian Mendel (2015). Analysis of the Kupyna-256 Hash Function (англ.). Процитовано 1 жовтня 2015.
- Jian Zou, Le Dong (2015). Cryptanalysis of the Round-Reduced Kupyna Hash Function (англ.). Процитовано 2 жовтня 2015.