È stata pubblicata l'implementazione finale dell'algoritmo , che offre una funzione hash crittografica progettata per usi come la verifica dell'integrità dei file, l'autenticazione dei messaggi e la generazione di dati per firme digitali. BLAKE3 non è destinata all'hashing delle password (per le password è necessario utilizzare yescrypt, bcrypt, scrypt o Argon2), poiché è mirata a calcolare hash il più rapidamente possibile con garanzia di assenza di collisioni, protezione da e insensibilità alla dimensione dei dati hashed. L'implementazione di riferimento di BLAKE3 sotto una doppia licenza — pubblico dominio (CC0) e Apache 2.0.
La caratteristica distintiva della nuova funzione hash è l'elevata prestazione nel calcolo dell'hash mantenendo l'affidabilità a livello di SHA-3. Di default, la dimensione dell'hash risultante in BLAKE3 è di 32 byte (256 bit), ma può essere estesa a valori arbitrari. In un 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 significativo distacco si mantiene anche nel trattamento di grandi volumi di dati, ad esempio, BLAKE3 si è rivelata superiore a SHA-256 di 8 volte nel calcolo dell'hash per 1 GB di dati casuali.
L'algoritmo è stato sviluppato da noti esperti in crittografia (, , , ) e continua a sviluppare l'algoritmo e applica per codificare l'albero delle catene di blocchi il meccanismo . A differenza di BLAKE2 (BLAKE2b, BLAKE2s), in BLAKE3 è stato proposto un algoritmo unico per tutte le piattaforme, non legato alla larghezza di parola e alla dimensione dell'hash.
Il miglioramento delle prestazioni è stato raggiunto riducendo il numero di round da 10 a 7 e hashing separatamente i blocchi a pezzi da 1 KB. Secondo i creatori, hanno trovato una convincente , che è possibile utilizzare 7 round invece di 10 mantenendo lo stesso livello di affidabilità (per rendere l'idea, si può fare un esempio con la miscelazione della frutta in un frullatore: dopo 7 secondi la frutta è già completamente mescolata e ulteriori 3 secondi non influenzeranno la consistenza della miscela). Tuttavia, alcuni ricercatori esprimono dubbi, ritenendo che anche se attualmente 7 round siano sufficienti per resistere a tutti i noti attacchi agli hash, ulteriori 3 round potrebbero rivelarsi utili nel caso vengano scoperti nuovi attacchi in futuro.
Per quanto riguarda la suddivisione in blocchi, in BLAKE3 il flusso viene suddiviso in pezzi da 1 Kb e ogni pezzo viene hashato in modo indipendente. Sulla base degli hash dei pezzi, viene Questa suddivisione consente 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 hash SHA-* elaborano i dati in modo sequenziale.
Caratteristiche di BLAKE3:
- Elevata prestazione;
- Sicurezza, inclusa la resistenza a , a cui è soggetto SHA-2;
- Garantire la parallelizzazione dei calcoli su qualsiasi numero di thread e canali SIMD;
- Possibilità di aggiornamento incrementale e di elaborazione verificata dei flussi;
- Utilizzo in modalità PRF, MAC, KDF, XOF e come hash normale;
- Unico algoritmo per tutte le architetture, rapido sia su sistemi x86-64 che su processori ARM a 32 bit.
Fonte: opennet.ru
