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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Державний стандарт України
Калина (шифр)
Калина (шифр)
Позначення ДСТУ 7624:2014
Назва Інформаційні технології. Криптографічний захист інформації. Алгоритм симетричного блокового перетворення
Інформаційні дані
Розробники Приватне акціонерне товариство «Інститут інформаційних технологій»
Внесено Мінекономрозвитку України
Введено в дію наказ від 29 грудня 2014 р. № 1484
Чинний від 1 липня 2015 року
Статус Чинний[1]
Останні зміни ІПС №1-03-2016
Пов'язані стандарти ДСТУ 7564:2014, ДСТУ 4145-2002, ДСТУ ГОСТ 28147:2009
Кількість сторінок 228
База нормативних документів

«Калина» (англ. Kalyna) — блочний симетричний шифр описаний у національному стандарті України ДСТУ 7624:2014 «Інформаційні технології. Криптографічний захист інформації. Алгоритм симетричного блокового перетворення». Стандарт набрав чинності з 1 липня 2015 року наказом Мінекономрозвитку від 2 грудня 2014 року №1484.[2] Текст стандарту у вільному доступі [3].

Стандарт ДСТУ 7624:2014 розроблено у співпраці Держспецзв'язку та провідних українських науковців і враховує досвід та результати проведення міжнародних і відкритого національного конкурсу криптографічних алгоритмів[4][5][6]. Він призначений для поступової заміни міждержавного стандарту ДСТУ ГОСТ 28147:2009[7].

Згідно чинного наказу Мінцифри від 30 вересня 2020 року №140/614[8] після 1 січня 2022 року разом з функцією гешування Купина є обов'язковим для використання при накладанні та перевірці електронного цифрового підпису за ДСТУ 4145-2002 замість криптографічного перетворення за ДСТУ ГОСТ 28147:2009.

Режими роботи та їх позначення

У стандарті описані наступні режими роботи криптографічного алгоритму, їх позначення та послуги безпеки, які забезпечує відповідний режим:

# Назва режиму Позначення Поcлуга безпеки
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 елементів скінченного розширеного двійкового поля , сформованого незвідним поліномом . Кількість раундів та кількість рядків у матриці стану наведені у таблиці: [9]

# Розмір блоку (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 — код референсної реалізаціі на C

cppcrypto — Бібліотека з відкритим вихідним кодом на C++

cryptonite — бібліотека криптографічних перетворень від ПриватБанку з відкритим програмним кодом на C, має експертний висновок UA.14360570.00001-01 90 01-1 за результатами державної експертизи у галузі КЗІ

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

Було виявлено деякі атаки на скорочені варіанти шифру, але вони не є практичними[10][11][12].

Примітки

  1. ДСТУ 7624:2014 в Каталозі НД України
  2. Про прийняття нормативних документів України та пробних національних стандартів України, гармонізованих з міжнародними нормативними документами, міжнародного та європейських стандартів як національних стандартів України, затвердження національних стандартів України, скасування національних стандартів України та міждержавних стандартів в Україні
  3. Текст стандарту ДСТУ 7624:2014 на сайті Державного підприємства «Український науково-дослідний і навчальний центр проблем стандартизації, сертифікації та якості»
  4. Горбенко, I.Д.; Тоцький, О.С.; Казьмiна, С.В. (2007). Перспективний блоковий шифр “Калина” – основнi положення та специфiкацiя. Прикладна радiоелектронiка (укр.). АН ПРЭ. 6 (2): С.195-208. {{cite journal}}: |pages= має зайвий текст (довідка)
  5. Оголошення про проведення відкритого конкурсу симетричних блокових криптографічних алгоритмів
  6. 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.
  7. Держспецзв’язку впроваджує нові стандарти криптографічного захисту інформації
  8. Наказ № 140/614 від 30.09.2020 "Про встановлення вимог до технічних засобів, процесів їх створення, використання та функціонування у складі інформаційно-телекомунікаційних систем під час надання кваліфікованих електронних довірчих послуг". zakon.rada.gov.ua (укр.). Міністерство цифрової трансформації України. 30 вересня 2020. Процитовано 4 січня 2021.
  9. 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.
  10. 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.
  11. AlTawy, Riham; Abdelkhalek, Riham; Youssef, Amr M. (2016). A Meet-in-the-Middle Attack on Reduced-Round Kalyna-b/2b (PDF). IEICE Transactions on Information and Systems (англ.). E99.D (4): 1246—1250. doi:10.1587/transinf.2015EDL8174.
  12. 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.

Див. також