1. Криптографічний захист інформації
Функція ґешування
Р.В.Олійников; І.Д.Горбенко; О.В.Казимиров;
В.І.Руженцев; А.О. Бойко; О.О.Кузнєцов;
Ю.І.Горбенко; В.І.Долгов; О.В.Дирда; А.І.Пушкарьов;
Київ 2015
НАЦІОНАЛЬНИЙ СТАНДАРТ УКРАЇНИ
ДСТУ 7564:2014
Інформаційні технології
http://slideshare.net/oliynykov
ОСНОВНІ ВЛАСТИВОСТІ
2. Актуальність
наявність теоретичних атак для застарілого
міждержавного стандарту ґешування
ДСТУ ГОСТ 34.311:2009 (ГОСТ 34.311-95), його
обчислювальна неефективність на перспективних
платформах
довжина ґеш-значення 256 бітів вже недостатня для
деяких застосувань (моральна застарілість)
відмова інших країн від використання ГОСТ 34.311-95
(ГОСТ Р 34.11-94):
білоруський стандарт СТБ 34.101.31-2011 визначає в
т.ч. функцію ґешування
російський стандарт ГОСТ Р 34.11-2012 визначає нову
функцію ґешування (“Стрибог”)
3. Теоретичні вразливості
ДСТУ ГОСТ 34.311:2009
Складність криптоаналітичних атак менша ніж
переборних:
пошук прообразу зі складністю 2192
знаходження колізії зі складністю 2105
Криптоаналітичні атаки залишаються
теоретичними:
вимоги щодо обсягу пам’яті
перевищують 275
4. Функція ґешування SHA-2
гармонізована в Україні як міжнародний стандарт
(ДСТУ ISO/IEC 10118-3, ДСТУ ETSI TS 102 176-1)
забезпечує високий рівень швидкодії
відомі атаки ефективні лише проти версій з
обмеженою кількостю раундів (41 раунд з 64 для
SHA-256 та 46 раундів з 80 для SHA-512)
5. Функція ґешування SHA-3 (Keccak)
потенційна заміна SHA-2 у
майбутньому (у разі
необхідності)
експериментальна
конструкція (один з
мотивів при визначенні
фіналіста конкурса SHA3
– заохочення відкритих
досліджень)
6. Національний стандарт
України ДСТУ 7564:2014
функція ґешування “Купина” (можливість
вибору довжини ґеш-значення; наявність
стандартних рекомендованих параметрів)
додаток: нелінійні таблиці заміни (S-блоки)
додаток: приклади для перевірки,
включаючи повідомлення із довжиною, не
кратною розміру блоку і байту
додаток: режим застосування функції
ґешування для формування коду
автентифікації повідомлення (імітовставки)
7. Вимоги щодо перспективної функції
ґешування під час проектування (ч. І)
формування ґеш-значення довжиною 256, 384 і 512 біт
(підтримуються довжини від 8 біт до 512 біт з кроком 8 біт)
формування ґеш-значень для повідомлень від 0 біт (пусте
повідомлення) до 296-1 біт
обробка повідомлень довільної бітової довжини, не кратної
байту
підтримка додаткового режиму формування коду
автентифікації повідомлень (КАП)
8. консервативний підхід до розробки, використання лише
добре перевірених рішень
наявність запасу стійкості до криптоаналітичних атак
оптимізація для перспективних 64-бітових платформ
ефективна робота при 32-бітовій реалізації
швидкодія вища, ніж у ДСТУ ГОСТ 34.311:2009
Вимоги щодо перспективної функції
ґешування під час проектування (ч. ІІ)
11. Схема Івена-Мансура для побудови доказово
стійкого блокового шифра та її застосування у
функції стиснення
P,Q – псевдовипадкові
підстановки
Q – схема розгортання
ключів блокового
шифру
15. Використання перетворень блокового
шифру «Калина» (визначеного в
ДСТУ 7624:2014)
забезпечення високого і надвисокого рівня
криптографічної стійкості
висока швидкість криптографічних
перетворень
компактна реалізация
Rijndael-подібна структура, що забезпечує
властивості псевдовипадкової підстановки
навіть при постійних раундових ключах (або
при їх відсутности взагалі)
16. Властивості 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, “Стрибог/Кузнечик”, СТБ, та ін.)
19. Стійкість до
криптоаналітичних атак
25122256Збільшення довжини
25122256Фіксовані точки
25122256Другий прообраз
25122256Прообраз
22562128Колізія
Купина-512Купина-256Вид атаки
Атаки на основі усічених диференціалів, внутрішніх диференціалів,
«зміни напрямку» (rebound attack) не є ефективними вже для 4 циклів
перетворень P та Q (використовується 10 або 14 циклів)
20. Принципи проектування функції
ґешування «Купина»:
використання перевірених конструкцій (аналогічні
рішення серед алгоритмів-фіналістів SHA-3)
прозорість обраних рішень
захист від відомих методів криптографічного
аналізу, наявність достатнього запасу стійкості
орієнтація на перспективні програмні платформи
(64 біта), ефективність на існуючих (32 біта),
проста апаратна реалізація
стійкість – швидкість – компактність
22. Швидкодія функції ґешування “Купина”
(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 р.)
23. Швидкодія функції ґешування “Купина”
(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
24. Швидкодія функції ґешування “Купина”
(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
Розмір блоку, що обробляєтьсяФункція
ґешування
25. Швидкодія функції ґешування “Купина”
(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
26. Швидкодія функції ґешування “Купина”
(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
Розмір блоку, що обробляєтьсяФункція
ґешування
27. Швидкодія функції ґешування “Купина”
(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
28. Швидкодія функції ґешування “Купина”
(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
Розмір блоку, що обробляєтьсяФункція
ґешування
29. Швидкодія функції ґешування “Купина” (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
30. Функція ґешування “Купина”
забезпечує стійкість до відомих методів криптографічного
аналізу і має достатній запас стійкості
ґрунтується на перевірених конструкціях та прозорих
рішеннях
вихідні послідовності відповідають вимогам до
псевдовипадкових послідовностей (NIST STS)
забезпечує високий рівень швидкодії, продуктивніша за
ДСТУ ГОСТ 34.311:2009 та ГОСТ Р 34.11-13 («Стрибог»)
на 64-бітових та 32-бітових платформах
ефективність реалізації систем криптографічного захисту:
основні елементи спільні для національних стандартів
ґешування і шифрування (блокового перетворення)
31. Походження назви
Рослина: купина лікарська
(поширена по всій Україні, росте в хвойних і мішаних
лісах, занесена до Червоної книги України)