SHA-3

Indice dei contenuti

    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 5×55 \times 5 di parole da 64 bit (1600 bit totali), suddivisa in una parte di capacità cc e una di rate rr. L’elaborazione avviene in due fasi:

    Fase di Absorbing: il messaggio, suddiviso in blocchi di rr bit, viene combinato in XOR con la porzione rate dello stato, seguita dall’applicazione della permutazione κ\kappa (Keccak-p, 24 round).

    Fase di Squeezing: il digest viene estratto a blocchi di rr bit dallo stato, alternando estrazioni e permutazioni fino a ottenere la lunghezza desiderata.

    La permutazione κ\kappa applica cinque trasformazioni (θ\theta, ρ\rho, π\pi, χ\chi, ι\iota) in sequenza per 24 round, garantendo diffusione e confusione completa.

    Varianti standardizzate

    VarianteOutputCapacitàNote
    SHA3-224224 bit448 bit
    SHA3-256256 bit512 bitAlternativa principale a SHA-256
    SHA3-384384 bit768 bit
    SHA3-512512 bit1024 bit
    SHAKE128Variabile256 bitXOF — output arbitrariamente lungo
    SHAKE256Variabile512 bitXOF — 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.

    Ultimo aggiornamento: