Inilabas ang isang reference na pagpapatupad ng cryptographic hash function na BLAKE3 1.0, na kapansin-pansin para sa napakataas na pagganap ng pagkalkula ng hash habang tinitiyak ang pagiging maaasahan sa antas ng SHA-3. Sa pagsubok sa pagbuo ng hash para sa isang 16 KB file, ang BLAKE3 na may 256-bit na key ay higit na gumaganap sa SHA3-256 ng 17 beses, SHA-256 ng 14 na beses, SHA-512 ng 9 na beses, SHA-1 ng 6 na beses, at BLAKE2b - 5 beses. Nananatili ang isang makabuluhang agwat kapag nagpoproseso ng napakalaking dami ng data, halimbawa, ang BLAKE3 ay naging 256 beses na mas mabilis kaysa sa SHA-8 kapag nagkalkula ng hash para sa 1GB ng random na data. Ang BLAKE3 reference implementation code ay available sa C at Rust na bersyon sa ilalim ng dual public domain (CC0) at Apache 2.0 na lisensya.

Ang hash function ay idinisenyo para sa mga application tulad ng pagsuri sa integridad ng file, pagpapatotoo ng mensahe, at pagbuo ng data para sa mga cryptographic na digital na lagda. Ang BLAKE3 ay hindi inilaan para sa pag-hash ng mga password, dahil nilalayon nitong kalkulahin ang mga hash sa lalong madaling panahon (para sa mga password, inirerekomendang gamitin ang mabagal na hash function na yescrypt, bcrypt, scrypt o Argon2). Ang hash function na isinasaalang-alang ay hindi sensitibo sa laki ng na-hash na data at pinoprotektahan mula sa mga pag-atake sa pagpili ng banggaan at paghahanap ng preimage.
Ang algorithm ay binuo ng mga kilalang eksperto sa cryptography (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) at ipinagpatuloy ang pagbuo ng BLAKE2 algorithm at ginagamit ang mekanismo ng Bao upang i-encode ang block chain tree . Hindi tulad ng BLAKE2 (BLAKE2b, BLAKE2s), nag-aalok ang BLAKE3 ng isang algorithm para sa lahat ng platform, na hindi nakatali sa bit depth at laki ng hash.
Ang tumaas na pagganap ay nakamit sa pamamagitan ng pagbabawas ng bilang ng mga round mula 10 hanggang 7 at pag-hash ng mga bloke nang hiwalay sa 1 KB na mga piraso. Ayon sa mga creator, nakahanap sila ng nakakumbinsi na mathematical proof na posible na makayanan gamit ang 7 rounds sa halip na 10 habang pinapanatili ang parehong antas ng pagiging maaasahan (para sa kalinawan, maaari kaming magbigay ng isang halimbawa sa paghahalo ng prutas sa isang mixer - pagkatapos ng 7 segundo ang prutas ay ganap na halo-halong, at ang karagdagang 3 segundo ay hindi makakaapekto sa pagkakapare-pareho ng timpla). Gayunpaman, ang ilang mga mananaliksik ay nagpahayag ng mga pagdududa, na naniniwalang kahit na ang 7 round ay kasalukuyang sapat upang kontrahin ang lahat ng kilalang pag-atake sa mga hash, kung gayon ang karagdagang 3 round ay maaaring maging kapaki-pakinabang kung ang mga bagong pag-atake ay matukoy sa hinaharap.
Tulad ng para sa paghahati sa mga bloke, sa BLAKE3 ang stream ay nahahati sa 1 KB na mga piraso at ang bawat piraso ay na-hash nang nakapag-iisa. Batay sa mga hash ng mga piraso, isang malaking hash ang nabuo batay sa binary na Merkle tree. Ang dibisyong ito ay nagbibigay-daan sa amin na lutasin ang problema sa pagpaparis sa pagpoproseso ng data kapag kinakalkula ang mga hash - halimbawa, maaari mong gamitin ang 4-threaded na mga tagubilin sa SIMD upang sabay na kalkulahin ang mga hash ng 4 na bloke. Ang mga tradisyunal na SHA-* hash function ay nagpoproseso ng data nang sunud-sunod.
Mga tampok ng BLAKE3:
- Mataas ang performance, ang BLAKE3 ay mas mabilis kaysa sa MD5, SHA-1, SHA-2, SHA-3 at BLAKE2.
- Seguridad, kabilang ang paglaban sa mga pag-atake sa pagpapahaba ng mensahe kung saan ang SHA-2 ay madaling kapitan;
- Available sa Rust, na-optimize para sa SSE2, SSE4.1, AVX2, AVX-512, at NEON na mga tagubilin.
- Tinitiyak ang parallelization ng mga kalkulasyon sa anumang bilang ng mga thread at SIMD channel.
- Posibilidad ng incremental na pag-update at na-verify na pagproseso ng mga stream;
- Gamitin sa PRF, MAC, KDF, XOF mode at bilang regular na hash;
- Isang solong algorithm para sa lahat ng arkitektura, mabilis sa parehong x86-64 system at 32-bit ARM processor.
Ang mga pangunahing pagkakaiba sa pagitan ng BLAKE3 at BLAKE2:
- Paggamit ng binary tree structure na nagbibigay-daan para sa walang limitasyong parallelism sa mga kalkulasyon ng hash.
- Pagbabawas ng bilang ng mga round mula 10 hanggang 7.
- Tatlong mode ng operasyon: hashing, hashing na may key (HMAC) at key derivation (KDF).
- Walang karagdagang overhead kapag nagha-hash gamit ang isang key dahil sa paggamit ng lugar na dating inookupahan ng key parameter block.
- Built-in na mekanismo ng pagpapatakbo sa anyo ng isang function na may pinalawig na resulta (XOF, Extendable Output Function), na nagpapahintulot sa parallelization at pagpoposisyon (seek).
Pinagmulan: opennet.ru
