Выпуск эталоннай рэалізацыі крыптаграфічнай хэш-функцыі BLAKE3 1.0

Адбыўся рэліз эталоннай рэалізацыі крыптаграфічнай хэш-функцыі BLAKE3 1.0, характэрнай вельмі высокай прадукцыйнасцю вылічэнні хеша пры забеспячэнні надзейнасці на ўзроўні SHA-3. У цесцю на генерацыю хеша для файла, памерам 16 КБ, BLAKE3 з 256-бітным ключом апярэджвае SHA3-256 у 17 разоў, SHA-256 – у 14 разоў, SHA-512 – у 9 разоў, SHA-1 – у 6 разоў, а BLAKE2b - у 5 разоў. Значны адрыў захоўваецца і пры апрацоўцы вельмі вялікіх аб'ёмаў дадзеных, напрыклад, BLAKE3 апынуўся хутчэй SHA-256 у 8 разоў пры вылічэнні хеша для 1ГБ выпадковых дадзеных. Код эталоннай рэалізацыя BLAKE3 пастаўляецца ў варыянтах на мовах Сі і Rust пад падвойнай ліцэнзіяй – грамадскі здабытак (CC0) і Apache 2.0.

Выпуск эталоннай рэалізацыі крыптаграфічнай хэш-функцыі BLAKE3 1.0

Хэш-функцыя разлічана на такое ўжыванне, як праверка цэласнасці файлаў, аўтэнтыфікацыя паведамленняў і фармаванне дадзеных для крыптаграфічных лічбавых подпісаў. BLAKE3 не прызначана для хэшавання пароляў, бо накіравана на максімальна хуткае вылічэнне хэшаў (для пароляў рэкамендуецца выкарыстоўваць павольныя хэш-функцыі yescrypt, bcrypt, scrypt або Argon2). Разгляданая хэш-функцыя неадчувальная да памеру хэшуемых дадзеных і абаронена ад нападаў па падборы калізій і знаходжанню правобразу.

Алгарытм распрацаваны вядомымі спецыялістамі па крыптаграфіі (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) і працягвае развіццё алгарытму BLAKE2 і прымяняе для кадавання дрэва ланцужкоў блокаў механізм Bao. У адрозненне ад BLAKE2 (BLAKE2b, BLAKE2s), у BLAKE3 для ўсіх платформаў прапанаваны адзіны алгарытм, не прывязаны да разраднасці і памеру хеша.

Падвышэнні прадукцыйнасці атрымалася дамагчыся дзякуючы скарачэнню ліку раўндаў з 10 да 7 і паасобнаму хэшаванню блокаў кавалачкамі па 1 Кб. Па заяве стваральнікаў, яны знайшлі пераканаўчы матэматычны доказ, што можна абыйсціся 7 раўндамі замест 10 пры захаванні таго ж узроўня надзейнасці (для нагляднасці можна прывесці прыклад з мяшаннем садавіны ў міксеры - праз 7 секунд садавіна ўжо цалкам перамяшаныя, і дадатковыя 3 секунды не адаб'юцца на кансістэнцыі сумесі). Пры гэтым некаторыя даследнікі выказваюць сумнеў, мяркуючы, што нават калі ў цяперашні час 7 раўндаў досыць для супрацьстаяння ўсім вядомым нападам на хешы, то дадатковыя 3 раўнда могуць апынуцца карысныя ў выпадку выяўлення новых нападаў у будучыні.

Што да падзелу на блокі, то ў BLAKE3 струмень разбіваецца на кавалачкі па 1 Кб і кожны кавалачак хэшуецца незалежна. На аснове хэшаў кавалачкаў на базе бінарнага дрэва Меркла фармуецца адзін вялікі хэш. Указаны падзел дазваляе вырашыць праблему з распаралельваннем апрацоўкі дадзеных пры вылічэнні хеша — напрыклад, можна выкарыстоўваць 4-струменевыя SIMD-інструкцыі для адначасовага вылічэнні хешаў 4 блокаў. Традыцыйныя хэш-функцыі SHA-* апрацоўваюць дадзеныя паслядоўна.

Асаблівасці BLAKE3:

  • Высокая прадукцыйнасць, BLAKE3 значна хутчэй MD5, SHA-1, SHA-2, SHA-3 і BLAKE2.
  • Бяспека, у тым ліку ўстойлівасць да нападу падаўжэннем паведамлення, якой схільны SHA-2;
  • Даступныя варыянты на мове Rust, аптымізаваныя для выкарыстання інструкцый SSE2, SSE4.1, AVX2, AVX-512 і NEON.
  • Забеспячэнне распаралельвання вылічэнняў на любую колькасць патокаў і SIMD-каналаў.
  • Магчымасць інкрыментальнага абнаўлення і верыфікаванай апрацоўкі патокаў;
  • Ужыванне ў рэжымах PRF, MAC, KDF, XOF і як звычайны хэш;
  • Адзіны алгарытм для ўсіх архітэктур, хуткі як на сістэмах x86-64, так і на 32-разрадных працэсарах ARM.

Асноўныя адрозненні BLAKE3 ад BLAKE2:

  • Выкарыстанне бінарнай дрэвападобнай структуры, якая дазваляе дамагчыся неабмежаванага паралелізму пры вылічэнні хеша.
  • Скарачэнне колькасці раўндаў з 10 да 7.
  • Тры рэжыму працы: хэшаванне, хэшаванне з ключом (HMAC) і фармаванне ключа (KDF).
  • Адсутнасць дадатковых накладных выдаткаў пры хэшаванні з ключом за кошт выкарыстання вобласці, раней займанай блокам параметраў ключа.
  • Убудаваны механізм працы ў форме функцыі з падаўжальным вынікам (XOF, Extendable Output Function), якая дапускае распаралельванне і пазіцыянаванне (seek).

Крыніца: opennet.ru

Дадаць каментар