Byla vydána referenční implementace kryptografické hash funkce BLAKE3 1.0, která se vyznačuje velmi vysokým výkonem při výpočtu hashe a zajišťuje spolehlivost na úrovni SHA-3. V testu generování hashe pro soubor o velikosti 16 KB překonává BLAKE3 s 256bitovým klíčem SHA3-256 17krát, SHA-256 14krát, SHA-512 9krát, SHA-1 6krát a BLAKE2b 5krát. Významný náskok se zachovává i při zpracování velmi velkých objemů dat, například BLAKE3 byl rychlejší než SHA-256 8krát při výpočtu hashe pro 1 GB náhodných dat. Kód referenční implementace BLAKE3 je dodáván v variantách v jazycích C a Rust pod dvojí licencí – veřejná doména (CC0) a Apache 2.0.

Hash funkce je určena pro použití, jako je kontrola integrity souborů, autentizace zpráv a generování dat pro kryptografické digitální podpisy. BLAKE3 není určena pro hashování hesel, protože je zaměřena na co nejrychlejší výpočet hashů (pro hesla se doporučuje používat pomalé hash funkce jako yescrypt, bcrypt, scrypt nebo Argon2). Zvažovaná hash funkce je necitlivá na velikost hashovaných dat a je chráněna před útoky zaměřenými na hledání kolizí a před preimage útoky.
Algoritmus vyvinuli známi specialisté v oblasti kryptografie (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) a pokračuje ve vývoji algoritmu BLAKE2 a pro kódování řetězových bloků využívá mechanismus Bao. Na rozdíl od BLAKE2 (BLAKE2b, BLAKE2s) nabízí BLAKE3 jednotný algoritmus pro všechny platformy, který není vázán na bitovou velikost a velikost hashe.
Zvýšení výkonu bylo dosaženo zkrácením počtu kol z 10 na 7 a odděleným hashováním bloků po kouskách o velikosti 1 KB. Podle tvrzení tvůrců našli přesvědčivý matematický důkaz, že při zachování stejné úrovně spolehlivosti lze vystačit se 7 koly místo 10 (pro názornost lze uvést příklad s mixováním ovoce v mixéru – po 7 sekundách jsou již plody zcela promíchány a dalších 3 sekundy neovlivní konzistenci směsi). Někteří vědci však vyjadřují pochybnosti, domnívajíce se, že i když jsou v současnosti 7 kola dostatečná pro odolnost proti všem známým útokům na hash, další 3 kola by mohla být užitečná v případě vzniku nových útoků v budoucnu.
Pokud jde o rozdělení na bloky, v BLAKE3 se proud dělí na kousky o velikosti 1 KB a každý kousek je hashován nezávisle. Na základě hashů kousků se na základě binárního Merkleova stromu vytváří jeden velký hash. Toto rozdělení umožňuje vyřešit problém s paralelizací zpracování dat při výpočtu hash – například lze využít 4vláknové SIMD instrukce pro současný výpočet hashů 4 bloků. Tradiční hashovací funkce SHA-* zpracovávají data sekvenčně.
Funkce BLAKE3:
- Vysoký výkon, BLAKE3 je výrazně rychlejší než MD5, SHA-1, SHA-2, SHA-3 a BLAKE2.
- Bezpečnost, včetně odolnosti vůči útoku na prodlužování zprávy, na který je náchylný SHA-2;
- K dispozici jsou varianty v jazyce Rust optimalizované pro použití instrukcí SSE2, SSE4.1, AVX2, AVX-512 a NEON.
- Zajištění paralelizace výpočtů na libovolný počet vláken a SIMD kanálů.
- Možnost inkrementální aktualizace a ověřeného zpracování proudů;
- Použití v režimech PRF, MAC, KDF, XOF a jako běžný hash;
- Jediný algoritmus pro všechny architektury, rychlý jak na systémech x86-64, tak na 32-bitových procesorech ARM.
Hlavní rozdíly BLAKE3 od BLAKE2:
- Použití binární stromové struktury, která umožňuje neomezený paralelismus při výpočtu hashe.
- Snížení počtu kol z 10 na 7.
- Tři pracovní režimy: hashování, hashování s klíčem (HMAC) a generování klíče (KDF).
- Absence dalších režijních nákladů při hashování s klíčem díky použití oblasti, kterou dříve zabíral blok parametrů klíče.
- Vestavěný mechanismus fungující jako funkce s prodlužovaným výstupem (XOF, Extendable Output Function), která umožňuje paralelizaci a př positioning (seek).
Zdroj: opennet.ru
