Izdanje referentne implementacije kriptografske hash funkcije BLAKE3 1.0

Referentna implementacija kriptografske heš funkcije BLAKE3 1.0 je objavljena, značajna po veoma visokim performansama izračunavanja heširanja uz obezbeđivanje pouzdanosti na SHA-3 nivou. U testu generisanja heša za datoteku od 16 KB, BLAKE3 sa 256-bitnim ključem je bolji od SHA3-256 za 17 puta, SHA-256 za 14 puta, SHA-512 za 9 puta, SHA-1 za 6 puta, a BLAKE2b - 5 puta. Značajan jaz ostaje pri obradi vrlo velikih količina podataka, na primjer, BLAKE3 se pokazao 256 puta bržim od SHA-8 kada je izračunao hash za 1 GB nasumičnih podataka. BLAKE3 referentni implementacijski kod dostupan je u verzijama C i Rust pod licencom dvostrukog javnog domena (CC0) i Apache 2.0.

Izdanje referentne implementacije kriptografske hash funkcije BLAKE3 1.0

Haš funkcija je dizajnirana za aplikacije kao što su provjera integriteta datoteke, autentifikacija poruke i generiranje podataka za kriptografske digitalne potpise. BLAKE3 nije namijenjen za heširanje lozinki, jer ima za cilj da izračuna hešove što je brže moguće (za lozinke se preporučuje korištenje sporih hash funkcija yescrypt, bcrypt, scrypt ili Argon2). Razmatrana hash funkcija je neosjetljiva na veličinu raspršenih podataka i zaštićena je od napada na izbor kolizije i pronalaženje preslika.

Algoritam su razvili poznati stručnjaci za kriptografiju (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) i nastavlja razvoj BLAKE2 algoritma i koristi Bao mehanizam za kodiranje stabla blok lanca . Za razliku od BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 nudi jedan algoritam za sve platforme, koji nije vezan za bitnu dubinu i veličinu heša.

Povećane performanse su postignute smanjenjem broja rundi sa 10 na 7 i heširanjem blokova odvojeno u komadima od 1 KB. Prema riječima kreatora, pronašli su uvjerljiv matematički dokaz da je moguće proći sa 7 krugova umjesto sa 10, a da se zadrži isti nivo pouzdanosti (radi jasnoće možemo navesti primjer s miješanjem voća u mikseru - nakon 7 sekundi voće je već potpuno izmiješano, a dodatne 3 sekunde neće utjecati na konzistenciju smjese). Međutim, neki istraživači izražavaju sumnje, vjerujući da čak i ako je 7 rundi trenutno dovoljno da se suprotstavi svim poznatim napadima na hasheve, onda dodatna 3 runde mogu biti korisna ako se u budućnosti identifikuju novi napadi.

Što se tiče podjele na blokove, u BLAKE3 stream je podijeljen na dijelove od 1 KB i svaki dio se hešuje nezavisno. Na osnovu hešova delova, formira se jedan veliki heš na osnovu binarnog Merkleovog drveta. Ova podjela nam omogućava da riješimo problem paraleliziranja obrade podataka prilikom izračunavanja hashova - na primjer, možete koristiti 4-nitne SIMD instrukcije da istovremeno izračunate hashove od 4 bloka. Tradicionalne SHA-* hash funkcije obrađuju podatke sekvencijalno.

Karakteristike BLAKE3:

  • Visoke performanse, BLAKE3 je znatno brži od MD5, SHA-1, SHA-2, SHA-3 i BLAKE2.
  • Sigurnost, uključujući otpornost na napade produženja poruke kojima je SHA-2 podložan;
  • Dostupno u Rust-u, optimizirano za SSE2, SSE4.1, AVX2, AVX-512 i NEON instrukcije.
  • Osiguravanje paralelizacije proračuna na bilo kojem broju niti i SIMD kanala.
  • Mogućnost inkrementalnog ažuriranja i verifikovane obrade tokova;
  • Koristi se u PRF, MAC, KDF, XOF modovima i kao običan hash;
  • Jedan algoritam za sve arhitekture, brz i na x86-64 sistemima i na 32-bitnim ARM procesorima.

Glavne razlike između BLAKE3 i BLAKE2:

  • Upotreba strukture binarnog stabla koja omogućava neograničen paralelizam u hash proračunima.
  • Smanjenje broja rundi sa 10 na 7.
  • Tri načina rada: heširanje, heširanje ključem (HMAC) i generiranje ključa (KDF).
  • Nema dodatnih troškova prilikom heširanja s ključem zbog korištenja područja koje je prethodno zauzimao blok parametara ključa.
  • Ugrađeni radni mehanizam u obliku funkcije sa proširenim rezultatom (XOF, Extendable Output Function), omogućavajući paralelizaciju i pozicioniranje (traženje).

izvor: opennet.ru

Dodajte komentar