SHA-3 (конкурс)
SHA-3 — конкурс на нову криптографічну геш-функцію, запроваджений Національним інститутутом стандартів і технологій США (Шаблон:Lang-en), (скорочено NIST) для доповнення та подальшої заміни старих функцій: SHA-1 і SHA-2. Конкурс був анонсований в журналі Federal Register 2 листопада 2007 року[1].
NIST ініціював розробку одного або декількох додаткових алгоритмів гешування через відкритий конкурс, подібний процес розвитку був використаний раніше для шифрування Advanced Encryption Standard (скорочено AES)[2].
Конкурс завершився 12 жовтня 2012 року, коли NIST оголосив, що Keccak буде новим SHA-3 геш-алгоритмом[3].
Цілі конкурсу
Спочатку організатори конкурсу припускали замінити старі геш-функції переможцем, так як в 2006 році виникло припущення, що в майбутньому надійність геш-функції SHA-2 значно знизиться через зростання потужності й продуктивності пристроїв, а також через появу нових методів криптоаналізу.
Але до 2013 року так і не було запропоновано жодної досить серйозною атаки на SHA-2, і, на думку Брюса Шнайєра, перехід на SHA-3 не був необхідним[4].
Процес
Подача заявок була завершена 31 жовтня 2008 року. Список кандидатів, які пройшли в перший раунд, був опублікований 9 грудня 2008 року[5]. В кінці лютого 2009 року NIST провела конференцію, де представили заявлені в конкурс хеш-функції і обговорили критерії проходження до другого раунду[6]. Список із 14 кандидатів, що пройшли в раунд 2, був опублікований 24 липня 2009 року[7]. Ще одна конференція відбулася 23 — 24 серпня 2010 року в University of California, Santa Barbara, де були розглянуті кандидати, які пройшли до другого раунду[8]. Про останній тур кандидатів було оголошено 10 грудня 2010 року[9]. І тільки 2 жовтня 2012 року NIST оголосив переможця — Keccak, його творці: Guido Bertoni, Joan Daemen, Gilles Van Assche з STMicroelectronics і Michaël Peeters з NXP[3].
Критерії оцінки
У своїх звітах NIST описує критерії оцінки конкурсантів. Основними критеріями оцінки були безпека, продуктивність і алгоритм геш-функції[10][11][12].
Безпека
Розглядаючи безпеку конкурсантів, NIST оцінював можливість застосування геш-функції, її стійкість до атак, відповідність загальним для геш-функцій вимогам, а також відповідність вимогам для учасників, які використовують HMAC, псевдовипадкові функції або рандомізоване хешування. Цей критерій враховувався в першу чергу.
Продуктивність
Продуктивність — другий за важливістю критерій оцінки після безпеки. При його перевірці дивилися на швидкість роботи й вимоги до пам'яті. Порівняння відбувалося наступним чином:
- У бренчмарці ECRYPT Benchmarking of All Submitted Hashes (скорочено eBASH) проводилися виміри швидкості обчислення для великого числа 32- і 64-бітних платформ.
- Бренчмарк eXternal Benchmarking eXtension (скорочено XBX) надав результати для портативних пристроїв.
- Додатково перевірялася продуктивність і можливість оптимізації на багатоядерних архітектурах. Тести проводилися на архітектурі Cell Broadband Engine (скорочено Cell) і NVIDIA Graphics Processing Units (скорочено GPU)[13].
Також оцінювалася швидкість роботи на кінцевих пристроях: ПК, мобільних пристроях (точка доступу, роутерах, портативних медіаплеєрах, мобільн телефонах, терміналах оплати) та в віртуальних машинах[14].
Алгоритм і характеристики реалізації
Основними параметрами оцінки алгоритму були гнучкість і простота дизайну. Гнучкість включає в себе можливість використання геш-функції на великому числі платформ та можливості розширення набору інструкцій процесора і розпаралелювання (для збільшення продуктивності). Простота дизайну оцінювалася за складністю аналізу й розуміння алгоритму, таким чином простота дизайну дає більше впевненості в оцінці безпеки алгоритму.
Учасники
NIST вибрали 51 геш-функцію в перший тур.[5] 14 з них пройшло до другого раунду,[7] з яких було вибрано 5 фіналістів. Неповний список учасників представлений нижче.
Переможець
Переможець був оголошений 2 жовтня 2012 року, ним став алгоритм Keccak[15]. Він став найпродуктивнішим на апаратній реалізації серед фіналістів, а також в ньому був використаний непоширених метод шифрування — функція губки. Таким чином, атаки, розраховані на SHA-2, не працюватимуть. Ще однією істотною перевагою SHA-3 є можливість його реалізації на мініатюрних вбудованих пристроях (наприклад, USB-флеш-накопичувач).
Фіналісти
NIST вибрав п'ять кандидатів, які пройшли в третій (і останній) тур:[16]
NIST описали деякі критерії, на яких ґрунтувався вибір фіналістів:[17]
- Продуктивність: «Деякі алгоритми були уразливі через дуже високі вимоги до продуктивності.»[17]
- Безпека: «Ми вважали за краще бути консервативними в безпеці й у деяких випадках не вибрали алгоритми з винятковою продуктивністю, тому що вони менш безпечні в значній мірі.»[17]
- Аналіз: «NIST усунуто кілька алгоритмів через неповну перевірку або незрілість проекту.»
- Різноманітність: «Геш-функції, які пройшли у фінал, засновані на різних режимах роботи, в тому числі і на принципі криптографічного губки. З різними внутрішніми структурами, в тому числі на основі AES, Bit slicing і на змінних XOR з доповненням.»[17]
NIST випустив звіт, що пояснює оцінку алгоритмів[18][19].
Геш-функції, які не пройшли в фінал
Наступні геш-функції потрапили до другого раунду, але не пройшли у фінал. Також було при оголошенно фіналістів: «Жоден з цих кандидатів не був явно зламаний». В дужках вказана причина, по якій геш-функції не стала фіналістом.
- Blue Midnight Wish[20][21] (можливі проблеми з безпекою)
- CubeHash (Bernstein) (проблеми з продуктивністю)
- ECHO (France Telecom)[22] (проблеми з продуктивністю)
- Fugue (IBM) (можливі проблеми з безпекою)
- Hamsi[23] (високі вимоги до ПЗУ, можливі проблеми з безпекою)
- Luffa[24](можливі проблеми з безпекою)
- Shabal[25] (можливі проблеми з безпекою)
- SHAvite-3[26] (можливі проблеми з безпекою)
- SIMD (проблеми з продуктивністю, можливі проблеми з безпекою)
Геш-функції, що не пройшли до другого раунду
Наступні представники геш-функцій були прийняті до першого раунду, але не пройшли до другого. У них не було суттєвих криптографічних вразливостей. Більшість з них мають слабкі місця в дизайні компонентів або у них були помічені проблеми з продуктивністю.
- ARIRANG[27] (CIST — Korea University)
- CHI[28]
- CRUNCH[29]
- Шаблон:Iw
- Шаблон:Iw
- Lesamnta[30]
- MD6 (Rivest et al.)
- SANDstorm (Sandia National Laboratories)
- Sarmal[31]
- SWIFFT X
- TIB3[32]
Заявлені геш-функції з істотними уразливостями
Не пройшли в перший раунд хеш-функції, які мали суттєві криптографічні уразливості.
- AURORA (Sony and Nagoya University)[33][34]
- Blender[35][36][37]
- Cheetah[38][39]
- Dynamic SHA[40][41]
- Dynamic SHA2[42][43]
- ECOH
- Edon-R[44][45]
- EnRUPT[46][47]
- ESSENCE[48]
- LUX[49]
- MCSSHA-3[50][51]
- NaSHA
- Sgàil[52][53]
- Spectral Hash
- Twister[54][55]
- Vortex[56][57]
Конкурсанти, які відмовилися
Протягом першого раунду деякі конкурсанти самі відмовилися від участі в конкурсі, тому що були зламані на NIST official Round One Candidates web site Шаблон:Webarchive. Вони не брали участі в конкурсі.
- Abacus[5][58]
- Boole[59][60]
- DCH[5][61]
- Khichidi-1[5][62]
- MeshHash[5][63]
- SHAMATA[5][64]
- StreamHash[5][65]
- Tangle[5][66]
- WaMM[67][68]
- Waterfall[69][70]
Відхилені учасники
Деякі геш-функції не були прийняті кандидатами, після внутрішнього огляду NIST.[5] NIST не повідомила подробиць щодо того, чому ці кандидати були відхилені. NIST також не дала повний список відхилених алгоритмів, але 13 з них відомі,[5][71].Проте, тільки такі з них були прилюднені:
Класифікація кандидатів
У таблиці перераховані відомі учасники конкурсу із зазначенням основних атрибутів хеш-функцій і знайдених атак.[82] В ній використовуються наступні абревіатури:
- FN Шаблон:Lang-en — Мережа Фейстеля;
- WP Шаблон:Lang-en — метод побудови криптографічних хеш-функцій, схожих на будову Меркла-Демґарда;
- KEY Шаблон:Lang-en — алгоритм, який одержує ключі для кожного раунду хешування;
- MDS Шаблон:Lang-en — Розмір MDS матриці;
- OUT Шаблон:Lang-en — криптографічна операція, яка здійснюється в останній вихідній ітерації;
- SBOX Шаблон:Lang-en — S-блоки;
- FSR Шаблон:Lang-en — Регістр зсуву з лінійним зворотним зв'язком;
- ARX Шаблон:Lang-en — скадання, циклічний зсув і XOR;
- BOOLШаблон:Lang-en — Булева алгебра;
- COL Шаблон:Lang-en — найкраща з відомих атак на пошук колізій, краща ніж атака «днів народження»;
- PRE Шаблон:Lang-en — друга найкраща атака на пошук колізій, краща ніж Шаблон:Iw;
Шаблон:Початок прихованого блоку Шаблон:Початок цитати
| Геш-алгоритм | FN | WP | KEY | MDS | OUT | SBOX | FSR | ARX | BOOL | COL | PRE |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Abacus | - | X | - | 4 x 4 | X | 8 x 8 | X | - | - | ||
| ARIRANG | X | X | X | 4 x 4, 8 x 8 | - | 8 x 8 | - | - | - | - | - |
| AURORA | - | - | X | 4 x 4 | X | 8 x 8 | - | - | - | ||
| BLAKE | X | - | X | - | - | - | - | X — | - | - | - |
| Blender | - | X | - | - | - | - | - | X | - | ||
| BMW | - | X | X | - | - | - | - | X | - | - | - |
| *Boole | - | - | - | - | X | - | X | - | |||
| Cheetah | - | - | X | 4 x 4, 8 x 8 | - | 8 x 8 | - | - | - | - | - |
| Chi | X | X | X | - | - | 4 x 3 | - | - | , | - | - |
| CRUNCH | X | - | X | - | - | 8 x 1016 | - | - | - | - | - |
| CubeHash8/1 | - | - | - | - | - | - | - | X | - | - | |
| *DHC | - | - | X | - | - | 8 x 8 | - | - | - | ||
| DynamicSHA | X | - | X | - | - | - | - | - | , , | - | |
| DynamicSHA2 | X | - | X | - | - | - | - | X | , , | - | - |
| ECHO | - | X | - | 4 x 4 | - | 8 x 8 | - | - | - | - | - |
| ECOH | - | - | X | - | - | - | - | - | - | - | - |
| Edon-R | - | X | X | - | - | - | - | X | - | - | |
| EnRUPT | - | X | - | - | - | - | - | X | - | - | |
| Essence | - | - | - | - | - | - | X | - | - | - | - |
| FSB | - | X | - | - | X | - | - | - | - | - | - |
| Fugue | - | X | - | 4 x 4 | X | 8 x 8 | - | - | - | - | - |
| Gr0stl | - | X | - | 8 x 8 | X | 8 x 8 | - | - | - | - | - |
| Hamsi | - | - | X | - | - | 4 x 4 | - | - | - | - | - |
| JH | X | X | - | 1.5 x 1.5 | - | 4 x 4 | - | - | - | ||
| Keccak | - | X | - | - | - | - | - | - | , | - | - |
| *Khichidi-1 | - | - | X | - | - | - | X | - | - | ||
| LANE | - | - | X | 4 x 4 | X | 8 x 8 | - | - | - | - | - |
| Lesamnta | X | - | X | 2 x 2, 4 x 4 | X | 8 x 8 | - | - | - | - | - |
| Luffa | - | - | - | - | X | 4 x 4 | - | - | - | - | - |
| Lux | - | X | - | 4 x 4, 8 x 8 | X | 8 x 8 | - | - | - | - | - |
| MCSSHA-3 | - | - | - | - | - | - | X | - | - | ||
| MD6 | - | X | - | - | - | - | X | - | - | - | |
| *MeshHash | - | - | - | - | X | 8 x 8 | - | - | - | - | |
| NaSHA | X | - | - | - | - | 8 x 8 | X | - | - | - | |
| SANDstorm | - | - | X | - | - | 8 x 8 | - | - | , | - | - |
| Sarmal | X | - | - | 8 x 8 | - | 8 x 8 | - | - | - | - | |
| Sgail | - | X | X | 8 x 8, 16 x 16 | - | 8 x 8 | - | X | - | - | - |
| Shabal | - | - | X | - | - | - | X | - | , | - | - |
| *SHAMATA | X | X | X | 4 x 4 | - | 8 x 8 | - | - | - | ||
| SHAvite-3 | X | - | X | 4 x 4 | - | 8 x 8 | X | - | - | - | - |
| SIMD | X | X | X | TRSC+ | - | - | - | - | , , | - | - |
| Skein | X | X | X | - | X | - | - | X | - | - | - |
| Spectral Hash | - | - | - | - | X | 8 x 8 | - | - | - | - | - |
| *StreamHash | - | - | - | - | - | 8 x 8 | - | - | - | - | |
| SWIFFTX | - | - | - | - | - | 8 x 8 | - | - | - | - | - |
| *Tangle | - | X | X | - | - | 8 x 8 | - | X | , , | - | |
| TIB3 | U | - | X | - | - | 3 x 3 | - | - | - | - | - |
| Twister | - | X | - | 8 x 8 | X | 8 x 8 | - | - | - | ||
| Vortex | - | - | - | 4 x 4 | X | 8 x 8 | - | - | - | ||
| *WAMM | - | X | - | - | X | 8 x 8 | - | - | - | - | - |
| *Waterfall | - | X | - | - | X | 8 x 8 | X | - | - | - |
Шаблон:Кінець цитати Шаблон:Кінець прихованого блоку
Примітки
Посилання
- NIST website for competition Шаблон:Webarchive
- Official list of second round candidates Шаблон:Webarchive
- Official list of first round candidates Шаблон:Webarchive
- SHA-3 Zoo Шаблон:Webarchive
- Classification of the SHA-3 Candidates Шаблон:Webarchive
- Hash Function Lounge
- VHDL source code developed by the Cryptographic Engineering Research Group (CERG) at George Mason University Шаблон:Webarchive
Шаблон:Геш-функції та коди аутентифікації повідомлення
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 3,0 3,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 5,00 5,01 5,02 5,03 5,04 5,05 5,06 5,07 5,08 5,09 5,10 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 7,0 7,1 Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ THIRD (FINAL) ROUND CANDIDATES Шаблон:Webarchive Retrieved 9 Nov 2011
- ↑ 17,0 17,1 17,2 17,3 Шаблон:Cite webШаблон:Недоступне посилання
- ↑ Шаблон:Cite web
- ↑ Status Report on the Second Round of the SHA- 3 Cryptographic Hash Algorithm Competition Шаблон:Webarchive (PDF). Retrieved 2 March 2011
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web Шаблон:Webarchive
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web Шаблон:Недоступне посилання
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite webШаблон:Dead link
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web Шаблон:Webarchive
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web Шаблон:Webarchive
- ↑ Шаблон:Cite web