SHA-3 è una funzione hash crittografica standardizzata dal NIST nel 2015 (FIPS 202), basata sull’algoritmo Keccak progettato da Bertoni, Daemen, Peeters e Van Assche. È architetturalmente distinta da SHA-256 e SHA-2 in generale: mentre SHA-2 usa la costruzione Merkle-Damgård, SHA-3 usa la costruzione sponge, che offre proprietà di sicurezza diverse e migliori in alcuni scenari. Il NIST ha standardizzato SHA-3 non come sostituto di SHA-2 (che rimane sicuro) ma come alternativa strutturalmente indipendente per aumentare la resilienza dell’ecosistema crittografico.
Costruzione Sponge
La costruzione sponge è il cuore di SHA-3. Lo stato interno è una matrice di parole da 64 bit (1600 bit totali), suddivisa in una parte di capacità e una di rate . L’elaborazione avviene in due fasi:
Fase di Absorbing: il messaggio, suddiviso in blocchi di bit, viene combinato in XOR con la porzione rate dello stato, seguita dall’applicazione della permutazione (Keccak-p, 24 round).
Fase di Squeezing: il digest viene estratto a blocchi di bit dallo stato, alternando estrazioni e permutazioni fino a ottenere la lunghezza desiderata.
La permutazione applica cinque trasformazioni (, , , , ) in sequenza per 24 round, garantendo diffusione e confusione completa.
Varianti standardizzate
| Variante | Output | Capacità | Note |
|---|---|---|---|
| SHA3-224 | 224 bit | 448 bit | — |
| SHA3-256 | 256 bit | 512 bit | Alternativa principale a SHA-256 |
| SHA3-384 | 384 bit | 768 bit | — |
| SHA3-512 | 512 bit | 1024 bit | — |
| SHAKE128 | Variabile | 256 bit | XOF — output arbitrariamente lungo |
| SHAKE256 | Variabile | 512 bit | XOF — output arbitrariamente lungo |
Le funzioni SHAKE (eXtensible Output Function, XOF) possono produrre digest di lunghezza arbitraria, utile per la derivazione di chiavi e nelle primitive di crittografia post-quantistica (ML-KEM usa SHAKE256 internamente).
Immunità all’attacco Length Extension
La vulnerabilità di length extension che affligge la costruzione Merkle-Damgård — e quindi SHA-256 usato come MAC naïve — non esiste nella costruzione sponge: il digest prodotto non contiene lo stato interno completo ma solo la porzione rate, e la porzione capacità rimane nascosta. Non è quindi possibile estendere il digest senza conoscere lo stato completo.
Adozione
SHA-3 è meno diffuso di SHA-2 nell’ecosistema attuale, principalmente per inerzia: SHA-2 è sicuro e già ovunque. SHA-3 viene preferito in nuovi protocolli che richiedono alternative strutturali (es. algoritmi post-quantistici ML-KEM e ML-DSA usano SHAKE internamente), in sistemi che devono resistere a debolezze teoriche future di Merkle-Damgård, e nelle implementazioni che necessitano di XOF.