Kupyna
-
Upload
roman-oliynykov -
Category
Internet
-
view
328 -
download
0
Transcript of Kupyna
Криптографічний захист інформаціїФункція ґешування
Р.В.Олійников; І.Д.Горбенко; О.В.Казимиров; В.І.Руженцев; А.О. Бойко; О.О.Кузнєцов;
Ю.І.Горбенко; В.І.Долгов; О.В.Дирда; А.І.Пушкарьов;
Київ 2015
НАЦІОНАЛЬНИЙ СТАНДАРТ УКРАЇНИ
ДСТУ 7564:2014
Інформаційні технології
http://slideshare.net/oliynykov
ОСНОВНІ ВЛАСТИВОСТІ
Актуальність
� наявність теоретичних атак для застарілого міждержавного стандарту ґешування ДСТУ ГОСТ 34.311:2009 (ГОСТ 34.311-95), його обчислювальна неефективність на перспективних платформах
� довжина ґеш-значення 256 бітів вже недостатня для деяких застосувань (моральна застарілість)
� відмова інших країн від використання ГОСТ 34.311-95 (ГОСТ Р 34.11-94):� білоруський стандарт СТБ 34.101.31-2011 визначає в т.ч. функцію ґешування
� російський стандарт ГОСТ Р 34.11-2012 визначає нову функцію ґешування (“Стрибог”)
Теоретичні вразливості ДСТУ ГОСТ 34.311:2009
Складність криптоаналітичних атак менша ніж переборних:
� пошук прообразу зі складністю 2192
� знаходження колізії зі складністю 2105
Криптоаналітичні атаки залишаються теоретичними:
� вимоги щодо обсягу пам’яті перевищують 275
Функція ґешування SHA-2
� гармонізована в Україні як міжнародний стандарт (ДСТУ ISO/IEC 10118-3, ДСТУ ETSI TS 102 176-1)
� забезпечує високий рівень швидкодії� відомі атаки ефективні лише проти версій з обмеженою кількостю раундів (41 раунд з 64 для SHA-256 та 46 раундів з 80 для SHA-512)
Функція ґешування SHA-3 (Keccak )
� потенційна заміна SHA-2 у майбутньому (у разі необхідності)
� експериментальнаконструкція (один з мотивів при визначенні фіналіста конкурса SHA3 – заохочення відкритих досліджень)
Національний стандарт України ДСТУ 7564:2014
� функція ґешування “Купина” (можливість вибору довжини ґеш-значення; наявність стандартних рекомендованих параметрів)
� додаток: нелінійні таблиці заміни (S-блоки)� додаток: приклади для перевірки, включаючи повідомлення із довжиною, не кратною розміру блоку і байту
� додаток: режим застосування функції ґешування для формування коду автентифікації повідомлення (імітовставки)
Вимоги щодо перспективної функції ґешування під час проектування (ч. І)
� формування ґеш-значення довжиною 256, 384 і 512 біт (підтримуються довжини від 8 біт до 512 біт з кроком 8 біт)
� формування ґеш-значень для повідомлень від 0 біт (пусте повідомлення) до 296-1 біт
� обробка повідомлень довільної бітової довжини, не кратної байту
� підтримка додаткового режиму формування коду автентифікації повідомлень (КАП)
� консервативний підхід до розробки, використання лише добре перевірених рішень
� наявність запасу стійкості до криптоаналітичних атак
� оптимізація для перспективних 64-бітових платформ� ефективна робота при 32-бітовій реалізації� швидкодія вища, ніж у ДСТУ ГОСТ 34.311:2009
Вимоги щодо перспективної функції ґешування під час проектування (ч. ІІ)
Загальна конструкція функції ґешування
Схема Меркля-Дамгорда(конструкція відома з 1979 р., покладена у основу більшості сучасних функцій ґешування )
Високорівнева конструкція функції ґешування: Девіса-Мейєра
Багато розповсюджених та добре досліджених функцій ґешування (включаючи SHA-2) побудовані саме на цій
конструкції
Схема Івена-Мансура для побудови доказово стійкого блокового шифра та її застосування у функції стиснення
P,Q – псевдовипадковіпідстановки
Q – схема розгортанняключів блокового шифру
“Купина”: побудова функції стиснення
� конструкція Девіса-Мейєра у складі схеми Меркля-Дамгорда
� блоковий шифр на основі високорівневої конструкції Івена-Мансура
“Купина”: псевдовипадкові підстановки P,Q
� основані на симетричному блоковому шифрі “Калина”, визначеному в ДСТУ 7624:2014
� відрізняються:� раундовими константами
� різними операціями вводу раундових констант (додавання mod 264, XOR)
Раундові константи у перетвореннях P,Q
Константи для Q: оптимальна кількість переносів між байтами стану
Використання перетворень блокового шифру «Калина» (визначеного в ДСТУ 7624:2014)
� забезпечення високого і надвисокого рівнякриптографічної стійкості
� висока швидкість криптографічнихперетворень
� компактна реалізация� Rijndael-подібна структура, що забезпечує властивості псевдовипадкової підстановки навіть при постійних раундових ключах (або при їх відсутности взагалі)
Властивості S-блоків (4 різні, спільні з шифром «Калина»)
Characteristics of Boolean functions:� Balanced = True� Nonlinearity = 104� Degree = 7� SAC = False
Characteristics of substitution:� Is bijection = True� Maximum of diff table = 8� Maximum of lin table = 26� Cycles = {5 циклів або 6 циклів, мінімальна довжина від 9 до 12 в залежності від підстановки}
� Algebraic immunity : degree=3 equations=441
Найкращій показник нелінійності для S-блоків, що можуть бути описані системою виключно 3-го степеня (краще, ніж в Сrypton, Safer+, Skipjack, SNOW, Twofish, Whirlpool, СS, Anubis, “Стрибог/Кузнечик”, СТБ, та ін.)
Лінійне перетворення (МДВ-матриця, спільна з шифром «Калина»)
� максимальний індекс галуження (Bn=9 )� ефективна програмна и програмно-апаратна реалізація
⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅⊕⋅
=
76543210
76543210
76543210
76543210
76543210
76543210
76543210
76543210
7
6
5
4
3
2
1
0
0104070608010501
0101040706080105
0501010407060801
0105010104070608
0801050101040706
0608010501010407
0706080105010104
0407060801050101
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaa
b
b
b
b
b
b
b
b
Стійкість до криптоаналітичних атак
25122256Збільшення довжини
25122256Фіксовані точки
25122256Другий прообраз
25122256Прообраз
22562128Колізія
Купина-512Купина-256Вид атаки
Атаки на основі усічених диференціалів, внутрішніх диференціалів, «зміни напрямку» (rebound attack) не є ефективними вже для 4 циклівперетворень P та Q (використовується 10 або 14 циклів)
Принципи проектування функціїґешування «Купина»:
� використання перевірених конструкцій (аналогічнірішення серед алгоритмів-фіналістів SHA-3)
� прозорість обраних рішень� захист від відомих методів криптографічного аналізу, наявність достатнього запасу стійкості
� орієнтація на перспективні програмні платформи (64 біта), ефективність на існуючих (32 біта), проста апаратна реалізація
стійкість – швидкість – компактність
Статистичні властивості функції ґешування “Купина” (NIST STS )
Відповідність вимогам до псевдовипадкових послідовностей (NIST STS)
Швидкодія функції ґешування “Купина” (Linux, 64 біта), Мбіт/с
1995.87771921.1097846.5142425.6768105.593513.2705SHA3-512
2546.75082434.2331861.3900430.6540107.531713.4418SHA3-256
1751.71681699.2065853.7648426.7106106.531113.3027SHA2-512
1213.77681193.6766598.1311582.1411145.323318.1766SHA2-256
343.2474336.6720153.215298.599624.71273.1070GOST 34.311-95
371.3182356.2702100.419967.433916.84042.1136Stribog (256,512)
415.3906393.1851113.858556.977114.21491.7897Groestl-512
691.6352664.9972198.0558121.847229.89653.7825Groestl-256
506.0145484.2588176.916388.204122.06112.7493Kupyna-512
778.3093755.2504255.7291239.726459.89767.4839Kupyna-256
4096 bytes2048 bytes64 bytes32 bytes8 bytes1 byte
Розмір блоку, що обробляєтьсяФункція
ґешування
Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, GNU/Linux gcc останньої версії (2012 р.)
Швидкодія функції ґешування “Купина” (Linux, 64 біта), Мбіт/с
Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, GNU/Linux gcc останньої версії (2012 р.)
0
100
200
300
400
500
600
700
800
Мбіт/с
Швидкодія
Швидкодія ґеш-функції на 64-бітовій платформі (GNU/Linux)
Ряд1 778,3093 506,0145 343,2474 371,3182 691,6352 415,3906
Kupyna-256
Kupyna-512
GOST 34.311-
Stribog (256,512)
Groestl-256
Groestl-512
Швидкодія функції ґешування “Купина” (Linux, 32 біта), Мбіт/с
Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, GNU/Linux gcc останньої версії (2012 р.)
237.4684229.3933109.083454.718313.66871.7078SHA3-512
349.6356335.1056129.995364.719016.17262.0136SHA3-256
460.5604446.6852231.1188115.858728.99063.6229SHA2-512
1180.27601160.6899570.8548549.9312137.956617.1522SHA2-256
330.1143323.5602147.152894.428823.72962.9687GOST 34.311-95
250.2085239.668567.428145.311111.38521.4240Stribog (256,512)
180.8638171.967856.610728.26977.06870.8826Groestl-512
183.1670178.832770.747356.773014.52961.8052Groestl-256
276.6373264.629695.192847.587311.90411.4866Kupyna-512
346.1454334.7128112.3242120.655030.15383.7725Kupyna-256
4096 bytes2048 bytes64 bytes32 bytes8 bytes1 byte
Розмір блоку, що обробляєтьсяФункція
ґешування
Швидкодія функції ґешування “Купина” (Linux, 32 біта), Мбіт/с
Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz, GNU/Linux gcc останньої версії (2012 р.)
0
50
100
150
200
250
300
350
Мбіт/с
Швидкодія
Швидкодія ґеш-функції на 32-бітовій платформі (GNU/Linux)
Ряд1 346,1454 276,6373 330,1143 250,2085 183,167 180,8638
Kupyna-256
Kupyna-512
GOST 34.311-
Stribog (256,512)
Groestl-256
Groestl-512
Швидкодія функції ґешування “Купина” (Windows, 64 біта), Мбіт/с
Intel Core i5-2300 2,8 ГГц; Windows Server 2008 R2 x64; Microsoft Visual Studio 2010/Visual C++
1494.60881442.2018670.4617332.092583.807710.5050SHA3-512
1865.21231783.6379671.0126337.602783.645610.4968SHA3-256
1549.75051499.7867738.1971372.159293.136011.7292SHA2-512
1123.51221105.4231547.9792525.4211132.215716.4943SHA2-256
315.8514309.0954133.305885.335821.35312.6846GOST 34.311-95
316.0483293.859983.561556.011014.12971.7691Stribog (256,512)
465.3006433.9076104.357352.199913.03511.6242Groestl-512
707.8276704.3535153.426899.164924.48783.0401Groestl-256
483.6045462.5867164.282182.809120.72262.5807Kupyna-512
711.6397695.1105281.2595228.829857.15597.1643Kupyna-256
4096 bytes2048 bytes64 bytes32 bytes8 bytes1 byte
Розмір блоку, що обробляєтьсяФункція
ґешування
Швидкодія функції ґешування “Купина” (Windows, 64 біта), Мбіт/с
Intel Core i5-2300 2,8 ГГц; Windows Server 2008 R2 x64; Microsoft Visual Studio 2010/Visual C++
0
100
200
300
400
500
600
700
800
Мбіт/с
Швидкодія
Швидкодія ґеш-функцій для 64-бітової реалізації (Windows Server 2008 R2)
Ряд1 711,6397 483,6045 315,8514 316,0483 707,8276 465,3006
Kupyna-256
Kupyna-512
GOST 34.311-
Stribog (256,512)
Groestl-256
Groestl-512
Швидкодія функції ґешування “Купина” (Windows, 32 біта), Мбіт/с
Intel Core i5-2300 2,8 ГГц; Windows Server 2008 R2 x64; Microsoft Visual Studio 2010/Visual C++
217.1344209.9916101.689150.699012.70961.5782SHA3-512
268.9411258.3613101.644751.010812.71191.5863SHA3-256
589.6123571.1605283.1616141.956235.59324.4543SHA2-512
997.5488980.8201474.7652444.6520112.747614.1968SHA2-256
299.0621292.7297125.052579.399619.83792.4893GOST 34.311-95
144.4780139.085442.414029.43227.39590.9261Stribog (256,512)
278.0338260.077368.721534.32388.59421.0712Groestl-512
195.1246189.117966.745850.801112.76391.5974Groestl-256
285.0508272.530798.036949.141012.27171.5440Kupyna-512
387.4621378.7078155.2432126.800131.85473.9820Kupyna-256
4096 bytes2048 bytes64 bytes32 bytes8 bytes1 byte
Розмір блоку, що обробляєтьсяФункція
ґешування
Швидкодія функції ґешування “Купина” (Windows, 32 біта), Мбіт/с
Intel Core i5-2300 2,8 ГГц; Windows Server 2008 R2 x64; Microsoft Visual Studio 2010/Visual C++
0
50
100
150
200
250
300
350
400
Мбіт/с
Швидкодія
Швидкодія ґеш -функцій для 32-бітової реалізації (Windows Server 2008 R2)
Ряд1 387,4621 285,0508 299,0621 144,478 195,1246 278,0338
Kupyna-256
Kupyna-512
GOST 34.311-
Stribog (256,512)
Groestl-256
Groestl-512
Функція ґешування “Купина”� забезпечує стійкість до відомих методів криптографічного аналізу і має достатній запас стійкості
� ґрунтується на перевірених конструкціях та прозорих рішеннях
� вихідні послідовності відповідають вимогам до псевдовипадкових послідовностей (NIST STS)
� забезпечує високий рівень швидкодії, продуктивніша за ДСТУ ГОСТ 34.311:2009 та ГОСТ Р 34.11-13 («Стрибог») на 64-бітових та 32-бітових платформах
� ефективність реалізації систем криптографічного захисту: основні елементи спільні для національних стандартівґешування і шифрування (блокового перетворення)