FUNZIONI HASH

Le funzioni hash sono particolari funzioni che permettono di dare a un messaggio un’impronta digitale tale da identificarlo univocamente. In altre parole creano una stringa associata al messaggio da spedire e per il quale, una volta applicata la funzione, non dovrebbe essere più possibile ritornare al testo originale.
Quindi, il valore hash h(M) è una rappresentazione non ambigua e non falsificabile di un messaggio M, facile da calcolare e tale da comprimere il messaggio stesso.
Una delle sue maggiori applicazioni si ha nell’utilizzo delle firme digitali: se si deve firmare un messaggio di grosse dimensioni, si firma il suo hash, in modo da avere un messaggio più piccolo. Permettono, inoltre, di avere integrità dei dati: ad esempio, a un certo tempo T si computa l’hash di un file M, H = h(M) e, successivamente, per controllare se il file è stato modificato si calcola h(M’) e si verifica se H = h(M’). Quindi h(M) è l’impronta digitale del file.

In generale, le funzioni hash vengono sfruttate anche in tanti altri scenari, ad esempio nella realizzazione di servizi di timestamping (marcatura temporale di documenti digitali), o nella realizzazione del MAC (Message Authentication Code), per dare autenticità ai messaggi.

Tra le principali proprietà delle funzioni hash ricordiamo che: sono facili da calcolare, godono della proprietà di sicurezza forte (è computazionalmente difficile trovare 2 messaggi diversi con lo stesso valore hash), godono della proprietà di sicurezza debole (dato M, è computazionalmente difficile trovare M’ tale che h(M) = h(M’)), e sono One-way, cioè, dato y è computazionalmente difficile trovare M tale che y = h(M).

Per poter costruire una funzione hash si possono comporre più funzioni hash, oppure si possono usare modelli per funzioni hash iterate o, ancora, si possono usare tecniche basate su cifrari a blocchi.

Le principali funzioni hash presenti attualmente sono:

Tra le altre ricordiamo: HAVAL, FFT-hash I, FFT-hash II, MDC-2 basata sul DES.