Калина (шифр)
«Калина» (англ. Kalyna) — блочний симетричний шифр описаний у національному стандарті України ДСТУ 7624:2014 «Інформаційні технології. Криптографічний захист інформації. Алгоритм симетричного блокового перетворення». Стандарт набрав чинності з 1 липня 2015 року наказом Мінекономрозвитку від 2 грудня 2014 року №1484.[2] .
Державний стандарт України | |
---|---|
Позначення | ДСТУ 7624:2014 |
Назва | Інформаційні технології. Криптографічний захист інформації. Алгоритм симетричного блокового перетворення |
Інформаційні дані | |
Тип стандарту | Державний стандарт України |
Розробники | Приватне акціонерне товариство «Інститут інформаційних технологій» |
Внесено | Мінекономрозвитку України |
Введено в дію | наказ від 29 грудня 2014 р. № 1484 |
Чинний від | 1 липня 2015 року |
Статус | Чинний[1] |
Останні зміни | ІПС №1-03-2016 |
Пов'язані стандарти | ДСТУ 7564:2014, ДСТУ 4145-2002, ДСТУ ГОСТ 28147:2009 |
Кількість сторінок | 228 |
База нормативних документів |
Стандарт ДСТУ 7624:2014 розроблено у співпраці Держспецзв'язку та провідних українських науковців і враховує досвід та результати проведення міжнародних і відкритого національного конкурсу криптографічних алгоритмів[3][4][5]. Він призначений для поступової заміни міждержавного стандарту ДСТУ ГОСТ 28147:2009[6].
Згідно чинного наказу Мінцифри від 30 вересня 2020 року №140/614[7] після 1 січня 2022 року разом з функцією гешування Купина є обов'язковим для використання при накладанні та перевірці електронного цифрового підпису за ДСТУ 4145-2002 замість криптографічного перетворення за ДСТУ ГОСТ 28147:2009.
Режими роботи та їх позначення
ред.У стандарті описані наступні режими роботи криптографічного алгоритму, їх позначення та послуги безпеки, які забезпечує відповідний режим:
# | Назва режиму | Позначення | Послуга безпеки |
---|---|---|---|
1 | Проста заміна (базове перетворення) | ЕСВ | Конфіденційність |
2 | Гамування | CTR | Конфіденційність |
3 | Гамування зі зворотним зв'язком за шифротекстом | CFB | Конфіденційність |
4 | Вироблення імітовставки | СМАС | Цілісність |
5 | Зчеплення шифроблоків | CBC | Конфіденційність |
6 | Гамування зі зворотним зв'язком за шифрогамою | OFB | Конфіденційність |
7 | Вибіркове гамування із прискореним виробленням імітовставки | GCM, GMAC | Конфіденційність і цілісність (GCM), тільки цілісність (GMAC) |
8 | Вироблення імітовставки і гамування | CCM | Цілісність і конфіденційність |
9 | Індексована заміна | XTS | Конфіденційність |
10 | Захист ключових даних | KW | Конфіденційність і цілісність |
Режим роботи криптографічного алгоритму, позначають так: «Калина-I/k-позначення режиму-параметри режиму» (для деяких режимів параметрів немає), де I - розмір блока базового перетворення, k - довжина ключа. Наприклад, «Калина-256/512-ССМ-32,128» визначає використання базового перетворення з розміром блока 256 бітів, довжиною ключа 512 бітів, застосування у режимі вироблення імітовставки і гамування, довжина конфіденційної (та відкритої) частини повідомлення завжди менше ніж 232 байтів, довжина імітовставки дорівнює 128 бітів. Режим простої заміни збігається з базовим перетворенням, тому крім позначення «Калина-I/k-ЕСВ» можна використовувати позначення «Калина-I/k».
Алгоритм
ред.Стан шифру
ред.Стан шифру описується матрицею 8 x елементів скінченного розширеного двійкового поля , сформованого незвідним поліномом . Кількість раундів та кількість рядків у матриці стану наведені у таблиці: [8]
# | Розмір блоку (I) | Розмір ключа (k) | Кількість раундів (v) | Рядків у матриці стану (с) |
---|---|---|---|---|
1 | 128 | 128 | 10 | 2 |
2 | 256 | 14 | ||
3 | 256 | 256 | 14 | 4 |
4 | 512 | 18 | ||
5 | 512 | 512 | 18 | 8 |
Зашифрування
ред.Перетворення зашифрування описується як
Перетворення η(Kv)
ред.Перетворення — це додавання до матриці стану раундового ключа за модулем . При додаванні використовується порядок little endian.
Перетворення πl'
ред.Перетворення — це заміна байтів у матриці стану
Підстановка π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 |
Стандартом передбачено можливість використання інших S-блоків у окремих застосуваннях, що є спільною рисою з алгоритмом шифрування, визначеним ДСТУ ГОСТ 28147:2009.
Перетворення τ
ред.Перетворення — це перестановка елементів у матриці (циклічний зсув вправо). matrix . Кількість зсунутих елементів залежить від номера рядка та розміру блоку . Кількість зсунутих елементів обчислюється за формулою .
Перетворення ψ
ред.Перетворення — це лінійне перетворення елементів матриці стану над скінченним полем
Перетворення κ(Kυ)
ред.Перетворення — це додавання до матриці стану раундового ключа за модулем 2, також відоме як побітове виключне «або» (XOR).
Розшифрування
ред.Перетворення розшифрування описується як
Перетворення , , , є оберненими перетвореннями до перетворень , , , відповідно.
Розгортання ключів
ред.Розгортання ключів відбувається у 2 етапи:
- обчислення з ключа шифрування проміжного ключа ;
- обчислення з проміжного ключа раундових ключів.
Проміжний ключ має той же розмір, що і блок даних 8 x .
Обчислення проміжного ключа виконується перетворенням .
Якщо розмір блока і розмір ключа шифрування однакові, то . Якщо ж розмір ключа шифрування вдвічі більший, ніж розмір блока, то .
Як аргумент для перетворення використовується l-бітне представлення значення виразу з порядком бітів little-endian.
Обчислення раундових ключів з парними індексами ( ) виконується перетворенням .
Перетворення описані вище. Перетворення .
Вхідними даними для перетворення є значення , де — ключ шифрування, якщо розмір ключа дорівнює розміру блока.
Якщо ж розмір ключа шифрування більший розміру блоку, то вхідними даними для перетворення є , для та , для
Обчислення раундових ключів з непарними індексами ( ) виконується за формулою .
Принципи проектування
ред.Шифр спроектовано на основі SP-мережі. Як лінійне перетворення використана MDS-матриця. Як нелінійні елементи використані чотири випадкові блоки підстановок. Використане пре- та пост- забілювання шляхом складання з раундовими ключами за модулем .
Використання
ред.Kalyna-reference [Архівовано 11 червня 2018 у Wayback Machine.] — код референсної реалізаціі на C
cppcrypto [Архівовано 12 червня 2017 у Wayback Machine.] — Бібліотека з відкритим вихідним кодом на C++
cryptonite [Архівовано 13 червня 2018 у Wayback Machine.] — бібліотека криптографічних перетворень від ПриватБанку з відкритим програмним кодом на C, має експертний висновок UA.14360570.00001-01 90 01-1 за результатами державної експертизи у галузі КЗІ [Архівовано 3 серпня 2020 у Wayback Machine.]
Криптостійкість
ред.Було виявлено деякі атаки на скорочені варіанти шифру, але вони не є практичними[9][10][11].
Примітки
ред.- ↑ ДСТУ 7624:2014 в Каталозі НД України
- ↑ Про прийняття нормативних документів України та пробних національних стандартів України, гармонізованих з міжнародними нормативними документами, міжнародного та європейських стандартів як національних стандартів України, затвердження національних стандартів України, скасування національних стандартів України та міждержавних стандартів в Україні. Архів оригіналу за 5 травня 2019. Процитовано 5 травня 2019.
- ↑ Горбенко, I.Д.; Тоцький, О.С.; Казьміна, С.В. (2007). Перспективний блоковий шифр “Калина” – основні положення та специфікація. Прикладна радіоелектроніка (укр.). АН ПРЭ. 6 (2): С.195-208. Архів оригіналу за 6 травня 2021. Процитовано 22 серпня 2020.
{{cite journal}}
:|pages=
має зайвий текст (довідка) - ↑ Оголошення про проведення відкритого конкурсу симетричних блокових криптографічних алгоритмів. Архів оригіналу за 5 травня 2019. Процитовано 5 травня 2019.
- ↑ Oliynykov, Roman; Gorbenko, Ivan; Dolgov, Viktor; Ruzhentsev, Victor (2010). Results of Ukrainian national public cryptographic competition. Tatra Mountains Mathematical Publications (англ.). Sciendo. 47 (1): 99—113. doi:10.2478/v10127-010-0033-6. Архів оригіналу за 2 червня 2018. Процитовано 22 серпня 2020.
- ↑ Держспецзв’язку впроваджує нові стандарти криптографічного захисту інформації. Архів оригіналу за 5 травня 2019. Процитовано 5 травня 2019.
- ↑ Наказ № 140/614 від 30.09.2020 "Про встановлення вимог до технічних засобів, процесів їх створення, використання та функціонування у складі інформаційно-телекомунікаційних систем під час надання кваліфікованих електронних довірчих послуг". zakon.rada.gov.ua (укр.). Міністерство цифрової трансформації України. 30 вересня 2020. Архів оригіналу за 2 червня 2021. Процитовано 4 січня 2021.
- ↑ Oliynykov, Roman; Gorbenko, Ivan; Kazymyrov, Oleksandr; Ruzhentsev, Victor; Kuznetsov, Oleksandr; Gorbenko, Yurii; Dyrda, Oleksandr; Dolgov, Viktor; Pushkaryov, Andrii; Mordvinov, Ruslan; Kaidalov, Dmytro (2015). A New Encryption Standard of Ukraine: The Kalyna Block Cipher (PDF). IACR Cryptol (англ.). ePrint Archive. Архів оригіналу (PDF) за 16 липня 2017. Процитовано 28 березня 2017.
- ↑ Chang, Akshima; Chang, Donghoon; Ghosh, Mohona; Goel, Aarushi; Sanadhya, Somitra Kumar (2015). Single Key Recovery Attacks on 9-round Kalyna-128/256 and Kalyna-256/512 (PDF). IACR Cryptol (англ.). ePrint Archive. Архів оригіналу (PDF) за 13 січня 2022. Процитовано 22 серпня 2020.
- ↑ AlTawy, Riham; Abdelkhalek, Riham; Youssef, Amr M. (2016). A Meet-in-the-Middle Attack on Reduced-Round Kalyna-b/2b. IEICE Transactions on Information and Systems (англ.). E99.D (4): 1246—1250. doi:10.1587/transinf.2015EDL8174. Архів оригіналу (PDF) за 7 червня 2018. Процитовано 22 серпня 2020.
- ↑ Lin, Li; Wu, Wenling (2016). Improved Meet-in-the-Middle Attacks on Reduced-Round Kalyna-128/256 and Kalyna-256/512 (PDF). IACR Cryptol (англ.). ePrint Archive. Архів оригіналу (PDF) за 20 січня 2022. Процитовано 22 серпня 2020.