Rilascio della versione di riferimento della funzione hash crittografica BLAKE3 1.0

È stata rilasciata l'implementazione di riferimento della funzione di hash crittografico BLAKE3 1.0, con prestazioni di calcolo dell'hash notevolmente elevate, mantenendo l'affidabilità a livello di SHA-3. Nel test di generazione dell'hash per un file di 16 KB, BLAKE3 con una chiave a 256 bit supera SHA3-256 di 17 volte, SHA-256 di 14 volte, SHA-512 di 9 volte, SHA-1 di 6 volte e BLAKE2b di 5 volte. Un distacco significativo si mantiene anche nel trattamento di grandi volumi di dati; per esempio, BLAKE3 è risultato più veloce di SHA-256 di 8 volte nel calcolo dell'hash per 1 GB di dati casuali. Il codice dell'implementazione di riferimento di BLAKE3 è fornito in versioni per i linguaggi C e Rust sotto doppia licenza: dominio pubblico (CC0) e Apache 2.0.

Rilascio della versione di riferimento della funzione hash crittografica BLAKE3 1.0

La funzione hash è progettata per applicazioni come la verifica dell'integrità dei file, l'autenticazione dei messaggi e la generazione di dati per firme digitali crittografiche. BLAKE3 non è destinata per l'hashing delle password, poiché è focalizzata sul calcolo degli hash il più rapidamente possibile (per le password si consiglia di utilizzare funzioni hash lente come yescrypt, bcrypt, scrypt o Argon2). La funzione hash in questione è insensibile alla dimensione dei dati da hashare ed è protetta contro attacchi di collisione e di preimmagine.

L'algoritmo è stato sviluppato da noti esperti di crittografia (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) e continua l'evoluzione dell'algoritmo BLAKE2, utilizzando il meccanismo Bao per la codificazione degli alberi di catene di blocchi. A differenza di BLAKE2 (BLAKE2b, BLAKE2s), in BLAKE3 è proposto un algoritmo unico per tutte le piattaforme, non legato alla larghezza di parola e alle dimensioni dell'hash.

Il miglioramento delle prestazioni è stato ottenuto riducendo il numero di round da 10 a 7 e eseguendo l'hashing separatamente su blocchi di 1 KB. Gli autori affermano di aver trovato una convincente prova matematica che è possibile utilizzare 7 round invece di 10 mantenendo lo stesso livello di affidabilità (per chiarezza, si può citare l'esempio della miscelazione della frutta in un frullatore: dopo 7 secondi la frutta è già completamente miscelata e ulteriori 3 secondi non influenzeranno la consistenza del mix). Tuttavia, alcuni ricercatori esprimono dubbi, ritenendo che, anche se attualmente 7 round sono sufficienti per resistere a tutti gli attacchi noti all'hash, ulteriori 3 round potrebbero rivelarsi utili in caso di nuove scoperte di attacchi in futuro.

Per quanto riguarda la suddivisione in blocchi, BLAKE3 divide il flusso in pezzi di 1 KB e ogni pezzo viene hashato in modo indipendente. Sulla base degli hash dei pezzi, un grande hash è formato usando un albero binario di Merkle. Questa suddivisione consente di risolvere il problema del parallelismo nell'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 hash SHA-* trattano i dati in modo sequenziale.

Caratteristiche di BLAKE3:

  • Alta prestazione, BLAKE3 è significativamente più veloce di MD5, SHA-1, SHA-2, SHA-3 e BLAKE2.
  • Sicurezza, inclusa la resistenza agli attacchi di estensione del messaggio, a cui è vulnerabile SHA-2;
  • Sono disponibili versioni in Rust ottimizzate per l'uso delle istruzioni SSE2, SSE4.1, AVX2, AVX-512 e NEON.
  • Fornisce parallelismo nei calcoli su qualsiasi numero 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.

Differenze principali tra BLAKE3 e BLAKE2:

  • Utilizzo di una struttura ad albero binario che consente un parallelismo illimitato nel calcolo dell'hash.
  • Riduzione del numero di round da 10 a 7.
  • Tre modalità operative: hashing, hashing con chiave (HMAC) e derivazione della chiave (KDF).
  • Assenza di sovraccarichi aggiuntivi nell'hashing con chiave grazie all'uso dell'area precedentemente occupata dal blocco dei parametri della chiave.
  • Meccanismo integrato che funziona come una funzione con output estensibile (XOF, Extendable Output Function), che consente parallelismo e posizionamento (seek).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster