Keccak
Keccak (pronunciato "ketchak") è una versatile funzione crittografica progettata da Guido Bertoni, Joan Daemen, Michaël Peeters e Gilles Van Assche. Sebbene Keccak possa essere utilizzato per altri scopi, è meglio conosciuto come una funzione hash che fornisce maggiori livelli di sicurezza rispetto ai vecchi algoritmi hash, come SHA-1 e SHA-2.
SHA è l'acronimo di Secure Hash Algorithm e si riferisce a un insieme di funzioni hash crittografiche pubblicate dal National Institute of Standards and Technology (NIST) degli Stati Uniti. Sia SHA-1 che SHA-2 sono stati progettati dalla National Security Agency (NSA) degli Stati Uniti e, come tali, presentano una struttura simile. Sebbene Keccak supporti la stessa dimensione di output (lunghezze hash) di SHA-2, il suo meccanismo di lavoro è piuttosto diverso. Tuttavia, Keccak fa parte della famiglia SHA ed è spesso indicato come SHA-3.
Gli attacchi teorici su SHA-1 sono stati eseguiti nel 2004 e resi pubblicamente disponibili nel 2005. Un paio di anni dopo, nel 2011, SHA-2 è stato dichiarato dal NIST come la nuova funzione hash standard da utilizzare. Tuttavia, la migrazione da SHA-1 a SHA-2 è stata piuttosto lenta ed è stato solo all'inizio del 2017 che un'ampia percentuale di sviluppatori e informatici è finalmente migrata a SHA-2. Poco dopo, Google ha annunciato un attacco di collisione SHA-1 riuscito nel 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 una competizione pubblica e un processo di verifica, alla ricerca di una nuova funzione hash crittografica in grado di superare 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 hash vengano violate nel tempo e che siano necessari anni per sviluppare una nuova funzione standard. Tenendo conto di ciò, insieme agli attacchi di successo eseguiti contro SHA-1 nel 2004 e nel 2005, il NIST ha percepito la necessità di creare un nuovo algoritmo di hash crittografico. Nel 2012, il NIST ha dichiarato Keccak come l'algoritmo vincente della competizione ed è stato standardizzato come il nuovo membro della famiglia SHA (da cui SHA-3).
Uno dei motivi per cui Keccak è stato scelto dal NIST è dovuto alla sua struttura innovativa, che si è rivelata 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 usata 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 cruciale nel processo di mining. Potremmo vedere una crescente adozione di SHA-3 in futuro poiché sembra ben lungi dall'essere attaccato con successo. Tuttavia, vedremo più algoritmi di hash crittografici sviluppati nei prossimi anni man mano che il campo della crittografia avanza e vengono scoperti nuovi difetti.