SHA-3 (конкурс)

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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 (проблеми з продуктивністю, можливі проблеми з безпекою)

Геш-функції, що не пройшли до другого раунду

Наступні представники геш-функцій були прийняті до першого раунду, але не пройшли до другого. У них не було суттєвих криптографічних вразливостей. Більшість з них мають слабкі місця в дизайні компонентів або у них були помічені проблеми з продуктивністю.

Заявлені геш-функції з істотними уразливостями

Не пройшли в перший раунд хеш-функції, які мали суттєві криптографічні уразливості.

Конкурсанти, які відмовилися

Протягом першого раунду деякі конкурсанти самі відмовилися від участі в конкурсі, тому що були зламані на NIST official Round One Candidates web site Шаблон:Webarchive. Вони не брали участі в конкурсі.

Відхилені учасники

Деякі геш-функції не були прийняті кандидатами, після внутрішнього огляду NIST.[5] NIST не повідомила подробиць щодо того, чому ці кандидати були відхилені. NIST також не дала повний список відхилених алгоритмів, але 13 з них відомі,[5][71].Проте, тільки такі з них були прилюднені:

Класифікація кандидатів

У таблиці перераховані відомі учасники конкурсу із зазначенням основних атрибутів хеш-функцій і знайдених атак.[82] В ній використовуються наступні абревіатури:

Шаблон:Початок прихованого блоку Шаблон:Початок цитати

Геш-алгоритм FN WP KEY MDS OUT SBOX FSR ARX BOOL COL PRE
Abacus - X - 4 x 4 X 8 x 8 X - - 2172 2172
ARIRANG X X X 4 x 4, 8 x 8 - 8 x 8 - - - - -
AURORA - - X 4 x 4 X 8 x 8 - - - 2234.61/2229.6 2291/231.6
BLAKE X - X - - - - X — - - -
Blender - X - - - - - X - 10*2n4 10*2n4
BMW - X X - - - - X - - -
*Boole - - - - X - X - 234 29*nr
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 - - 2509
*DHC - - X - - 8 x 8 - - - 29 29
DynamicSHA X - X - - - - - , , ¬ 2114 -
DynamicSHA2 X - X - - - - X , , ¬ - -
ECHO - X - 4 x 4 - 8 x 8 - - - - -
ECOH - - X - - - - - - - -
Edon-R - X X - - - - X - - 22*n3
EnRUPT - X - - - - - X - - 2480/2480
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 - - - 2510.3/2510.3
Keccak - X - - - - - - , ¬ - -
*Khichidi-1 - - X - - - X - - 1 1/233
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 - - 23n/8 23n/4
MD6 - X - - - - X - - -
*MeshHash - - - - X 8 x 8 - - - - 2323.2/2n2
NaSHA X - - - - 8 x 8 X - - 2128 -
SANDstorm - - X - - 8 x 8 - - , ¬ - -
Sarmal X - - 8 x 8 - 8 x 8 - - - - 2384/2128
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 - - - 240/229 2461.7/2462.7
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 - - - - n*2n2
SWIFFTX - - - - - 8 x 8 - - - - -
*Tangle - X X - - 8 x 8 - X , , ¬ 219 -
TIB3 U - X - - 3 x 3 - - - - -
Twister - X - 8 x 8 X 8 x 8 - - - 2252 2448/264
Vortex - - - 4 x 4 X 8 x 8 - - - 2122.5/2122.5 23/2n4
*WAMM - X - - X 8 x 8 - - - - -
*Waterfall - X - - X 8 x 8 X - - 2 -

Шаблон:Кінець цитати Шаблон:Кінець прихованого блоку

Примітки

Шаблон:Reflist

Посилання

Шаблон:Геш-функції та коди аутентифікації повідомлення

  1. Шаблон:Cite web
  2. Шаблон:Cite web
  3. 3,0 3,1 Шаблон:Cite web
  4. Шаблон:Cite web
  5. 5,00 5,01 5,02 5,03 5,04 5,05 5,06 5,07 5,08 5,09 5,10 Шаблон:Cite web
  6. Шаблон:Cite web
  7. 7,0 7,1 Шаблон:Cite web
  8. Шаблон:Cite web
  9. Шаблон:Cite web
  10. Шаблон:Cite web
  11. Шаблон:Cite web
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. THIRD (FINAL) ROUND CANDIDATES Шаблон:Webarchive Retrieved 9 Nov 2011
  17. 17,0 17,1 17,2 17,3 Шаблон:Cite webШаблон:Недоступне посилання
  18. Шаблон:Cite web
  19. Status Report on the Second Round of the SHA- 3 Cryptographic Hash Algorithm Competition Шаблон:Webarchive (PDF). Retrieved 2 March 2011
  20. Шаблон:Cite web
  21. Шаблон:Cite web Шаблон:Webarchive
  22. Шаблон:Cite web
  23. Шаблон:Cite web
  24. Шаблон:Cite web
  25. Шаблон:Cite web
  26. Шаблон:Cite web
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. Шаблон:Cite web
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite web Шаблон:Недоступне посилання
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Cite web
  37. Шаблон:Cite web
  38. Шаблон:Cite web
  39. Шаблон:Cite web
  40. Шаблон:Cite web
  41. Шаблон:Cite web
  42. Шаблон:Cite web
  43. Шаблон:Cite web
  44. Шаблон:Cite web
  45. Шаблон:Cite web
  46. Шаблон:Cite web
  47. Шаблон:Cite web
  48. Шаблон:Cite web
  49. Шаблон:Cite web
  50. Шаблон:Cite web
  51. Шаблон:Cite webШаблон:Dead link
  52. Шаблон:Cite web
  53. Шаблон:Cite web
  54. Шаблон:Cite web
  55. Шаблон:Cite web
  56. Шаблон:Cite web
  57. Шаблон:Cite web
  58. Шаблон:Cite web
  59. Шаблон:Cite web
  60. Шаблон:Cite web
  61. Шаблон:Cite web
  62. Шаблон:Cite web
  63. Шаблон:Cite web
  64. Шаблон:Cite web Шаблон:Webarchive
  65. Шаблон:Cite web
  66. Шаблон:Cite web
  67. Шаблон:Cite web
  68. Шаблон:Cite web
  69. Шаблон:Cite web
  70. Шаблон:Cite web
  71. Шаблон:Cite web
  72. Шаблон:Cite web
  73. Шаблон:Cite web
  74. Шаблон:Cite web
  75. Шаблон:Cite web
  76. Шаблон:Cite web
  77. Шаблон:Cite web
  78. Шаблон:Cite web
  79. Шаблон:Cite web
  80. Шаблон:Cite web
  81. Шаблон:Cite web Шаблон:Webarchive
  82. Шаблон:Cite web