A avut loc lansarea versiunii de referință a funcției de hash criptografic BLAKE3 1.0, remarcabilă pentru performanța sa foarte ridicată în generarea hash-urilor, păstrându-și fiabilitatea la nivelul SHA-3. În testul de generare a hash-ului pentru un fișier de 16 KB, BLAKE3 cu o cheie de 256 de biți depășește SHA3-256 de 17 ori, SHA-256 de 14 ori, SHA-512 de 9 ori, SHA-1 de 6 ori, iar BLAKE2b de 5 ori. O distanță semnificativă se menține și în cazul prelucrării unor volume foarte mari de date, de exemplu, BLAKE3 s-a dovedit a fi de 8 ori mai rapid decât SHA-256 în calcularea hash-ului pentru 1 GB de date randomizate. Codul de referință pentru BLAKE3 este disponibil în variante scrise în Limbajul C și Rust sub o licență duală - domeniu public (CC0) și Apache 2.0.

Funcția de hash este destinată utilizărilor precum verificarea integrității fișierelor, autentificarea mesajelor și generarea de date pentru semnături digitale criptografice. BLAKE3 nu este destinată pentru hasharea parolelor, deoarece vizează calcularea cât mai rapidă a hash-urilor (pentru parole se recomandă utilizarea funcțiilor de hash lente precum yescrypt, bcrypt, scrypt sau Argon2). Funcția de hash considerată nu este sensibilă la dimensiunea datelor hash-uite și este protejată împotriva atacurilor de coliziune și găsirii pre-imaginilor.
Algoritmul a fost dezvoltat de experți cunoscuți în domeniul criptografiei (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) și continuă dezvoltarea algoritmului BLAKE2, aplicând pentru codarea copacului de lanțuri de blocuri mecanismul Bao. Spre deosebire de BLAKE2 (BLAKE2b, BLAKE2s), în BLAKE3 a fost propus un algoritm unic pentru toate platformele, independent de arhitectură și dimensiunea hash-ului.
Creșterea performanței a fost realizată prin reducerea numărului de runde de la 10 la 7 și prin hash-ingul blocurilor în bucăți de 1 KB. Potrivit declarațiilor creatorilor, au găsit o dovadă matematică convingătoare că se poate realiza cu 7 runde în loc de 10, menținând același nivel de fiabilitate (un exemplu relevant ar fi amestecarea fructelor într-un blender — după 7 secunde, fructele sunt deja complet amestecate, iar cele 3 secunde suplimentare nu vor afecta uniformitatea amestecului). Cu toate acestea, unii cercetători își exprimă îndoiala, considerând că, chiar dacă în prezent 7 runde sunt suficiente pentru a face față tuturor atacurilor cunoscute asupra hash-urilor, cele 3 runde suplimentare ar putea fi utile în cazul în care apar noi atacuri în viitor.
În ceea ce privește împărțirea în blocuri, în BLAKE3 fluxul este împărțit în bucăți de 1 KB, iar fiecare bucată este hash-uită independent. Pe baza hash-urilor bucatelor, un hash mare este format folosind un arbore binar Merkle. Această împărțire permite rezolvarea problemei procesării paralele a datelor în timpul calculării hash-ului — de exemplu, se pot utiliza instrucțiuni SIMD cu 4 thread-uri pentru a calcula simultan hash-urile pentru 4 blocuri. Funcțiile hash tradiționale SHA-* procesează datele secvențial.
Caracteristicile BLAKE3:
- Performanță ridicată, BLAKE3 este semnificativ mai rapid decât MD5, SHA-1, SHA-2, SHA-3 și BLAKE2.
- Securitate, inclusiv rezistența la atacuri prin prelungirea mesajului, la care este expus SHA-2;
- Sunt disponibile variante în limbajul Rust, optimizate pentru utilizarea instrucțiunilor SSE2, SSE4.1, AVX2, AVX-512 și NEON.
- Asigurarea paralelizării calculurilor pe un număr nelimitat de thread-uri și canale SIMD.
- Posibilitatea actualizării incrementale și procesarea verificată a fluxurilor;
- Utilizare în moduri PRF, MAC, KDF, XOF și ca hash obișnuit;
- Un algoritm unic pentru toate arhitecturile, rapid atât pe sistemele x86-64, cât și pe procesoarele ARM de 32 de biți.
Principalele diferențe dintre BLAKE3 și BLAKE2:
- Utilizarea unei structuri binare în formă de arbore, care permite realizarea unui paralelism nelimitat în timpul calculării hash-ului.
- Reducerea numărului de runde de la 10 la 7.
- Trei moduri de operare: hash-ing, hash-ing cu cheie (HMAC) și generarea cheii (KDF).
- Lipsa cheltuielilor suplimentare la hash-ing-ul cu cheie datorită utilizării unei zone anterior ocupate de blocul parametrului cheii.
- Mecanism încorporat de funcționare ca funcție cu rezultat extensibil (XOF, Extendable Output Function), permisiunea de paralelizare și poziționare (seek).
Sursa: opennet.ro
