Kupyna

31
Криптографічнийзахист інформації Функція ґешування Р.В.Олійников; І.Д.Горбенко; О.В.Казимиров; В.І.Руженцев; А.О. Бойко; О.О.Кузнєцов; Ю.І.Горбенко; В.І.Долгов; О.В.Дирда; А.І.Пушкарьов; Київ 2015 НАЦІОНАЛЬНИЙСТАНДАРТ УКРАЇНИ ДСТУ 7564:2014 Інформаційні технології http://slideshare.net/oliynykov ОСНОВНІВЛАСТИВОСТІ

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-бітових платформах

� ефективність реалізації систем криптографічного захисту: основні елементи спільні для національних стандартівґешування і шифрування (блокового перетворення)

Походження назви

Рослина: купина лікарська(поширена по всій Україні, росте в хвойних і мішаних

лісах, занесена до Червоної книги України)