Keccak

Avanzato

Keccak (pronunciato "ketchak") è una funzione crittografica versatile progettata da Guido Bertoni, Joan Daemen, Michaël Peeters e Gilles Van Assche. Sebbene Keccak possa essere utilizzata per altri scopi, è nota soprattutto come funzione di hashing che offre maggiori livelli di sicurezza rispetto agli algoritmi di hashing più vecchi, come SHA-1 e SHA-2.

SHA è l'acronimo di Secure Hash Algorithm (algoritmo di hash sicuro) e si riferisce a un insieme di funzioni di hash crittografiche pubblicate dal National Institute of Standards and Technology (NIST) statunitense. Sia SHA-1 che SHA-2 sono stati progettati dalla National Security Agency (NSA) degli Stati Uniti e presentano una struttura simile. Sebbene Keccak supporti le stesse dimensioni di output (lunghezze di hash) di SHA-2, il suo meccanismo di funzionamento è molto diverso. Keccak fa comunque parte della famiglia SHA e viene spesso indicato come SHA-3.

Nel 2004 sono stati eseguiti attacchi teorici a SHA-1, resi pubblici nel 2005. Qualche anno più tardi, nel 2011, il NIST ha definito SHA-2 la nuova funzione di hashing standard da utilizzare. Tuttavia, la migrazione da SHA-1 a SHA-2 è stata piuttosto lenta e solo all'inizio del 2017 un'ampia percentuale di sviluppatori e scienziati è finalmente passata a SHA-2. Poco dopo, Google ha annunciato un collision attack riuscito ai danni di SHA-1 a febbraio 2017 e da allora SHA-1 non è più considerato sicuro e il suo utilizzo è sconsigliato.
La funzione Keccak (SHA-3) ha iniziato a essere sviluppata intorno al 2007, dopo che il NIST ha annunciato un concorso pubblico e un processo di verifica accurato, alla ricerca di una nuova funzione di hashing che potesse affrontare i potenziali difetti dei precedenti SHA-1 e SHA-2.

Sebbene non sia stato ancora dimostrato alcun attacco significativo a SHA-2, si prevede che le funzioni di hashing verranno violate nel tempo e ci vogliano anni prima che venga sviluppata una nuova funzione standard. Tenendo conto di tutto questo, oltre agli attacchi condotti con successo contro SHA-1 nel 2004 e nel 2005, il NIST ha percepito la necessità di creare un nuovo algoritmo di hashing crittografico. Nel 2012, il NIST ha dichiarato Keccak come l'algoritmo vincitore del concorso ed è stato standardizzato come il nuovo membro della famiglia SHA (da cui SHA-3). 

Uno dei motivi per cui Keccak è stato scelto dal NIST è la sua struttura innovativa, che si è dimostrata più sicura ed efficiente rispetto agli altri algoritmi. Tecnicamente parlando, l'algoritmo SHA-3 si basa sulle cosiddette funzioni spugna (o costruzione spugna) - in contrasto con la costruzione Merkle Damgård utilizzata da SHA-1 e SHA-2.

Per ora, SHA-2 è ancora considerato sicuro ed è ampiamente utilizzato. Ad esempio, SHA-256 è utilizzato da Bitcoin e altre criptovalute e svolge un ruolo fondamentale nel processo di mining. Potremmo assistere a una crescente adozione di SHA-3 in futuro, poiché sembra molto sicuro dagli attacchi. Ciononostante, nei prossimi anni assisteremo allo sviluppo di altri algoritmi di hashing, man mano che il campo della crittografia progredirà e verranno scoperte nuovi difetti.