Došlo k vydaniu referenčnej implementácie kryptografickej hash funkcie BLAKE3 1.0, ktorá sa vyznačuje veľmi vysokým výkonom pri výpočte hashu pri zachovaní spoľahlivosti na úrovni SHA-3. V teste na generáciu hashu pre súbor s veľkosťou 16 KB, BLAKE3 s 256-bitovým kľúčom predbehne SHA3-256 17-násobne, SHA-256 14-násobne, SHA-512 9-násobne, SHA-1 6-násobne a BLAKE2b 5-násobne. Výrazný náskok pretrváva aj pri spracovaní veľmi veľkých objemov údajov, napríklad, BLAKE3 bol rýchlejší ako SHA-256 8-násobne pri výpočte hashu pre 1 GB náhodných údajov. Kód referenčnej implementácie BLAKE3 je dodávaný v variantoch v jazykoch C a Rust pod dvojitou licenciou — verejný doménový (CC0) a Apache 2.0.

Hash funkcia je určená na aplikácie, ako je kontrola integrity súborov, autentifikácia správ a vytváranie údajov pre kryptografické digitálne podpisy. BLAKE3 nie je určená na hashovanie hesiel, pretože je zameraná na čo najrýchlejšie výpočty hashov (na heslá sa odporúčajú používať pomalé hash funkcie ako yescrypt, bcrypt, scrypt alebo Argon2). Predkladaná hash funkcia nie je citlivá na veľkosť hashovaných údajov a je chránená pred útokmi zameranými na nájdenie kolízií a pre-image.
Algoritmus vyvinuli známi odborníci na kryptografiu (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) a pokračuje vo vývoji algoritmu BLAKE2 a na kódovanie stromu reťazcov blokov používa mechanizmus Bao. Na rozdiel od BLAKE2 (BLAKE2b, BLAKE2s) ponúka BLAKE3 pre všetky platformy jednotný algoritmus, ktorý nie je viazaný na bitovú šírku a veľkosť hashu.
Zvýšenie výkonu sa podarilo dosiahnuť skrátením počtu kôl z 10 na 7 a samostatným hashovaním blokov po kusoch po 1 kB. Podľa vyhlásení autorov našli presvedčivý matematický dôkaz, že je možné vystačiť s 7 kolami namiesto 10 pri zachovaní tej istej úrovne spoľahlivosti (pre názornosť je možné uviesť príklad miešania ovocia v mixéri — po 7 sekundách sú ovocie už úplne premiešané a ďalšie 3 sekundy neovplyvnia konzistenciu zmesi). Niektorí výskumníci však vyjadrujú pochybnosti, domnievajúc sa, že aj keď v súčasnosti je 7 kôl dostatočných na odolanie všetkým známym útokom na hashe, ďalšie 3 kolá môžu byť užitočné v prípade objavenia nových útokov v budúcnosti.
Pokiaľ ide o delenie na bloky, tok BLAKE3 je rozdelený na kusy po 1 kB a každý kus je hashovaný nezávisle. Na základe hashov kusov na báze binárneho Merkleovho stromu sa vytvára jeden veľký hash. Toto delenie umožňuje vyriešiť problém s paralelizáciou spracovania dát pri výpočte hashu — napríklad je možné použiť 4-vláknové inštrukcie SIMD na súčasný výpočet hashov 4 blokov. Tradičné hashovacie funkcie SHA-* spracovávajú dáta postupne.
Vlastnosti BLAKE3:
- Vysoký výkon, BLAKE3 je podstatne rýchlejší ako MD5, SHA-1, SHA-2, SHA-3 a BLAKE2.
- Bezpečnosť, vrátane odolnosti voči útoku na predĺženie správy, čomu je vystavený SHA-2;
- K dispozícii sú varianty v jazyku Rust, optimalizované na použitie inštrukcií SSE2, SSE4.1, AVX2, AVX-512 a NEON.
- Zabezpečenie paralelizácie výpočtov na ľubovoľný počet vlákien a SIMD kanálov.
- Možnosť inkrementálneho aktualizovania a verifikovanej správy prúdov;
- Použitie v režimoch PRF, MAC, KDF, XOF a ako bežný hash;
- Jednoduchý algoritmus pre všetky architektúry, rýchly ako na systémoch x86-64, tak aj na 32-bitových procesoroch ARM.
Hlavné rozdiely medzi BLAKE3 a BLAKE2:
- Použitie binárnej stromovej štruktúry, ktorá umožňuje dosiahnuť neobmedzený paralelizmus pri výpočte hashu.
- Skrátenie počtu kôl z 10 na 7.
- Tri režimy činnosti: hashovanie, hashovanie s kľúčom (HMAC) a generovanie kľúča (KDF).
- Absencia dodatočných nákladov pri hashovaní s kľúčom vďaka využívaniu oblasti, ktorú predtým zaberalo parametrového bloku kľúča.
- Vstavaný mechanizmus fungovania vo forme funkcie s predlžovaným výsledkom (XOF, Extendable Output Function), ktorá umožňuje paralelizáciu a pozicionovanie (seek).
Zdroj: opennet.ru
