Калина (шифр)

український блочний симетричний шифр

«Калина» (англ. 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].

Примітки

ред.
  1. ДСТУ 7624:2014 в Каталозі НД України
  2. Про прийняття нормативних документів України та пробних національних стандартів України, гармонізованих з міжнародними нормативними документами, міжнародного та європейських стандартів як національних стандартів України, затвердження національних стандартів України, скасування національних стандартів України та міждержавних стандартів в Україні. Архів оригіналу за 5 травня 2019. Процитовано 5 травня 2019.
  3. Горбенко, I.Д.; Тоцький, О.С.; Казьміна, С.В. (2007). Перспективний блоковий шифр “Калина” – основні положення та специфікація. Прикладна радіоелектроніка (укр.). АН ПРЭ. 6 (2): С.195-208. Архів оригіналу за 6 травня 2021. Процитовано 22 серпня 2020. {{cite journal}}: |pages= має зайвий текст (довідка)
  4. Оголошення про проведення відкритого конкурсу симетричних блокових криптографічних алгоритмів. Архів оригіналу за 5 травня 2019. Процитовано 5 травня 2019.
  5. 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.
  6. Держспецзв’язку впроваджує нові стандарти криптографічного захисту інформації. Архів оригіналу за 5 травня 2019. Процитовано 5 травня 2019.
  7. Наказ № 140/614 від 30.09.2020 "Про встановлення вимог до технічних засобів, процесів їх створення, використання та функціонування у складі інформаційно-телекомунікаційних систем під час надання кваліфікованих електронних довірчих послуг". zakon.rada.gov.ua (укр.). Міністерство цифрової трансформації України. 30 вересня 2020. Архів оригіналу за 2 червня 2021. Процитовано 4 січня 2021.
  8. 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.
  9. 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.
  10. 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.
  11. 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.

Див. також

ред.