Le funzioni hash, a partire da un testo di lunghezza arbitraria, generano una stringa di lunghezza fissa. La trasformazione operata funziona in un solo senso: non è quindi possibile, dalla stringa generata, risalire al testo iniziale. In certo senso, si può dire che le funzioni hash non impiegano alcuna chiave crittografica.
L’hash rappresenta una sorta di “impronta digitale” (fingerprint) del contenuto di un file ed è solitamente usata per attestare che lo stesso file non sia stato alterato da virus, malware oppure per l’intervento di un malintenzionato. All’”impronta digitale” viene attribuito anche il nome di message digest, checksum o valore di hash.
Molti sistemi operativi ricorrono a funzioni hash per memorizzare in modo sicuro elenchi di password od altre informazioni sensibili.
Tra gli algoritmi di hash vi è anche SHA (Secure Hash Algorithm). SHA-1 produce un valore di hash di 160 bit ed è stato il primo ad essere pubblicato. Successivamente sono state ideate le varianti SHA-224, SHA-256, SHA-384 e SHA-512 che, rispettivamente, generano un “message digest” da 224, 256, 384 e 512 bit di lunghezza.
La sicurezza dell’algoritmo SHA-1 era stata già in parte compromessa dai “crittoanalisti”. Le funzioni di hash sono talvolta non ben comprese ed alcune fonti affermano che due file non possano mai avere lo stesso valore di hash (“message digest”). Quest’asserzione, infatti, è falsa. Si consideri una funzione di hash che genera un “message digest” da 128 bit. Ci sono, ovviamente, 2128 possibili valori di hash. I file che esistono, però, sono certamente ben più di 2128 (sono considerabili in numero pari all’infinito). Ne consegue che possono esistere file con il medesimo valore di hash.
Quando due messaggi producono un identico hash, si parla di “collisione”. La qualità di una funzione di hash è misurata in base alla difficoltà nell’individuazione di due testi che generino una collisione.
Perché un algoritmo di hashing “cada in disgrazia” è sufficiente che un gruppo di crittografi o di esperti informatici riesca a generare una collisione.
Per quanto riguarda lo SHA-1, due ricercatori australiani hanno dimostrato un metodo nuovo e più efficiente per provocare delle collisioni. La nuova metodologia permette di arrivare a generare una collisione in soli 256 tentativi. Gli attacchi possono così divenire più rapidi e causare un impatto negativo a medio termine, ad esempio, per quanto concerne l’uso delle firme digitali.
SHA-1 è impiegato in molteplici applicazioni per verificare l’autenticità dei dati. Per il momento, tuttavia, non è possibile porre in essere il cosiddetto attacco “pre-image” ossia l’aggressore non può essere in grado di generare un nuovo messaggio valido utilizzando l’hash di un messaggio già esistente.
Nel frattempo, lo “US National Institute of Standards and Technology” (NIST) ha già lanciato una competizione per lo sviluppo di un algoritmo di hash che, presumibilmente, sarà battezzato SHA-3 (SHA-2 raggruppa assieme SHA-224, SHA-256, SHA-384 e SHA-512). Il progetto vincente diverrà standard ufficiale nel corso del 2012.