Објавување на референтната имплементација на криптографската хаш функција BLAKE3 1.0

Беше објавена референтна имплементација на криптографската хаш-функција BLAKE3 1.0, забележлива по своите многу високи перформанси за пресметување на хашот, истовремено обезбедувајќи сигурност на ниво SHA-3. Во тестот за генерирање хаш за датотека од 16 KB, BLAKE3 со 256-битен клуч го надминува SHA3-256 за 17 пати, SHA-256 за 14 пати, SHA-512 за 9 пати, SHA-1 за 6 пати и BLAKE2b - 5 пати. Останува значителна празнина при обработка на многу големи количини на податоци, на пример, BLAKE3 се покажа дека е 256 пати побрз од SHA-8 кога се пресметува хаш за 1 GB случајни податоци. Референтниот код за имплементација на BLAKE3 е достапен во верзии C и Rust под лиценца за двоен јавен домен (CC0) и Apache 2.0.

Објавување на референтната имплементација на криптографската хаш функција BLAKE3 1.0

Функцијата за хаш е дизајнирана за апликации како што се проверка на интегритетот на датотеката, автентикација на пораки и генерирање податоци за криптографски дигитални потписи. BLAKE3 не е наменет за хеширање лозинки, бидејќи има за цел да ги пресмета хашовите што е можно побрзо (за лозинки се препорачува да се користат функциите за бавен хаш yescrypt, bcrypt, scrypt или Argon2). Функцијата за хаш што се разгледува не е чувствителна на големината на хашираните податоци и е заштитена од напади на избор на судир и пронаоѓање на прелиминарна слика.

Алгоритмот беше развиен од познати експерти за криптографија (Џек О'Конор, Жан-Филип Аумасон, Семјуел Невес, Зооко Вилкокс-О'Херн) и го продолжува развојот на алгоритмот BLAKE2 и го користи механизмот Бао за кодирање на дрвото на блок синџирот . За разлика од BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 нуди единствен алгоритам за сите платформи, кој не е поврзан со длабочината на битот и големината на хашот.

Зголемени перформанси беа постигнати со намалување на бројот на кругови од 10 на 7 и хаширање блокови одделно во парчиња од 1 KB. Според креаторите, тие нашле убедлив математички доказ дека е можно да се помине со 7 кругови наместо со 10, додека се одржува истото ниво на сигурност (за јасност, можеме да дадеме пример со мешање овошје во миксер - по 7 секунди овошјето е веќе целосно измешано, а дополнителни 3 секунди нема да влијаат на конзистентноста на смесата). Сепак, некои истражувачи изразуваат сомнежи, верувајќи дека дури и ако 7 рунди моментално се доволни за да се спротивстават на сите познати напади на хашови, тогаш дополнителни 3 рунди може да бидат корисни доколку се идентификуваат нови напади во иднина.

Што се однесува до поделбата на блокови, во BLAKE3 стримот е поделен на парчиња од 1 KB и секое парче се хешира независно. Врз основа на хашовите на парчињата, се формира еден голем хаш врз основа на бинарното дрво Меркл. Оваа поделба ни овозможува да го решиме проблемот со паралелизирање на обработката на податоците при пресметување на хашови - на пример, можете да користите SIMD инструкции со 4 нишки за истовремено да пресметате хашови од 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), што овозможува паралелизација и позиционирање (барање).

Извор: opennet.ru

Додадете коментар