È stata pubblicata la realizzazione finale dell'algoritmo , che offre una funzione di hashing crittografica predisposta per applicazioni come la verifica dell'integrità dei file, l'autenticazione dei messaggi e la generazione di dati per firme digitali. BLAKE3 non è progettata per l'hashing delle password (per le password è meglio utilizzare yescrypt, bcrypt, scrypt o Argon2), in quanto è focalizzata sulla massima velocità di calcolo degli hash garantendo l'assenza di collisioni, protezione da e non è sensibile alla dimensione dei dati da hashare. L'implementazione di riferimento di BLAKE3 è sotto doppia licenza — pubblico dominio (CC0) e Apache 2.0.
Una caratteristica distintiva della nuova funzione di hash è l'eccezionale performance di calcolo dell'hash mantenendo l'affidabilità a livello di SHA-3. Per impostazione predefinita, la dimensione dell'hash risultante in BLAKE3 è di 32 byte (256 bit), ma può essere estesa a valori arbitrari. Nel test di generazione dell'hash per un file di 16 KB, BLAKE3 supera SHA3-256 di 15 volte, SHA-256 di 12 volte, SHA-512 di 8 volte, SHA-1 di 6 volte, e BLAKE2b di 4 volte. Un notevole vantaggio si mantiene anche nell'elaborazione di grandi volumi di dati; ad esempio, BLAKE3 si è dimostrata 8 volte più veloce di SHA-256 nel calcolo dell'hash per 1 GB di dati casuali.
L'algoritmo è stato sviluppato da noti esperti di crittografia (, , , ) e continua lo sviluppo dell'algoritmo e applica un meccanismo per la codifica degli alberi delle catene di blocchi chiamato . A differenza di BLAKE2 (BLAKE2b, BLAKE2s), in BLAKE3 viene proposto un algoritmo unico per tutte le piattaforme, non legato alla larghezza di banda e alla dimensione dell'hash.
L'incremento delle prestazioni è stato ottenuto riducendo il numero di round da 10 a 7 e hashando i blocchi in pezzi da 1 KB. Secondo i creatori, hanno trovato una convincente , che 7 round siano sufficienti per mantenere lo stesso livello di affidabilità (per rendere l'idea, si può immaginare di mescolare la frutta in un frullatore: dopo 7 secondi la frutta è già completamente mescolata e ulteriori 3 secondi non influiranno sulla consistenza del mix). Tuttavia, alcuni ricercatori esprimono scetticismo, ritenendo che, anche se attualmente 7 round sono sufficienti per resistere a conoscitivi attacchi agli hash, 3 round aggiuntivi potrebbero risultare utili qualora si rivelassero nuovi attacchi in futuro.
Per quanto concerne la divisione in blocchi, BLAKE3 suddivide il flusso in pezzi da 1 KB e ogni pezzo viene hashato in modo indipendente. Sulla base degli hash dei pezzi viene creato un grande hash utilizzando . Questa divisione permette di risolvere il problema della parallelizzazione dell'elaborazione dei dati durante il calcolo dell'hash — ad esempio, è possibile utilizzare istruzioni SIMD a 4 thread per calcolare simultaneamente gli hash di 4 blocchi. Le tradizionali funzioni di hashing SHA-* elaborano i dati in modo sequenziale.
Caratteristiche di BLAKE3:
- Elevate prestazioni;
- Sicurezza, inclusa la resistenza all' , a cui è soggetto SHA-2;
- Possibilità di parallelizzare i calcoli su un numero qualsiasi di thread e canali SIMD;
- Possibilità di aggiornamenti incrementali e di elaborazione dei flussi verificata;
- Utilizzo in modalità PRF, MAC, KDF, XOF e come normale hash;
- Unico algoritmo per tutte le architetture, veloce sia su sistemi x86-64 che su processori ARM a 32 bit.
Fonte: opennet.ru
