Telemat Lab's home page


Copyright © 1986 Università di Firenze.All rights reserved.

Free license available.

MIDDLE

di Cecconi Alessia e Gallileo Giovanni

Revisori: Franco Pirri e Maurizio Lunghi


Funzioni hash

home pageIndicePrec.Succ.

Capitolo 2

Funzioni one-way hash


Funzioni hash

INTRODUZIONE ALLE FUNZIONI ONE-WAY HASH

Una funzione one-way hash trasforma un testo normale di lunghezza arbitraria in una stringa di lunghezza relativamente limitata. Questa stringa rappresenta "un'impronta digitale" unica del messaggio e viene spesso definito valore di hash o checksum crittografico.
Di nessun valore di hash di lunghezza finita si può avere la certezza che provenga da un singolo messaggio. Inoltre dato un valore di hash, dovrebbe essere impossibile risalire al suo testo originale (se ci si riuscisse la funzione non sarebbe più "one-way").
Per una dimostrazione forniamo 2 valori di hash, provenienti da input molto diversi in un sistema UNIX, ottenuti tramite l'algoritmo MD5 di cui parleremo tra poco, che estrae da input di qualunque dimensione valori di hash di 128 bits che possono essere rappresentati con 16 cifre esadecimali:

”% echo "a" ¦ md5
valore di hash corrispondente: 60B725F10C9C85C70D97880DFE8191B3
”% cat congressional-minutes.txt ¦ md5
valore di hash corrispondente: EDED6F6C520DEB812BA7154D093AD43

Le funzioni one-way hash svolgono due funzioni molto importanti nella crittografia:


La lunghezza dei valori di hash varia a seconda degli algoritmi. Quelli a 128 bits sono i più comuni e i preferiti, infatti maggiore è il numero dei bits e meglio è. Si pensi che una funzione hash a 4 bits non è di alcuna utilità per una verifica dell'integrità perché 1/16 dei possibili messaggi saranno mappati su uno dei 16 possibili valori di hash. Un hacker che modifica un messaggio può farlo agevolmente in modo tale da lasciare lo stesso valore di hash.
Se invece si usa un valore di hash da 160 bits, l'hacker dovrebbe modificare il messaggio in 2^159 maniere diverse per ottenere il corretto valore di hash. Non sono molti quelli che si cimenterebbero in una simile impresa.
Le funzioni di hash possono essere usate per la creazione di firme digitali. Molti crittosistemi richiedono calcoli molto lunghi e complessi per apporre la propria firma digitale su un file di grosse dimensioni mentre, grazie a queste funzioni, si può semplicemente calcolare e firmare il valore di hash del file sicuramente di dimensioni molto ridotte, risparmiando energie.


Funzioni hash

MD2

MD2 (Message Digest 2), inventato da Ron Rivest della RSA Data Security, è una funzione nata per essere utilizzata con la Privacy Enhaced Mail (PEM)(Posta con privacy incrementata).
Produce un valore di hash di 128 bits e richiede come input multipli di 16 byte. MD2 esegue il PAD (cioè aggiunge i bit mancanti) ai messaggi d'ingresso che non hanno la lunghezza integrale.
Questo algoritmo è stato violato dalla crittoanalisi quindi è, ovviamente, sconsigliato l'uso.
Un'implementazione è disponibile all'indirizzo: ftp://ftp.funet.fi:/pub/crypt/hash/mds.


Funzioni hash

MD4

Inventato da Ron Rivest della RSA Data Security, MD4 crea anch'esso, come il precedente, valori di hash di 128 bits ma i calcoli sono ottimizzati per i registri a 32 bits come quelli che si possono trovare nella famiglia dei processori Intel 80x86. Sicuramente più veloce di MD2, MD4 richiede PAD (aggiunta di bit) a multipli di 512 bits. Inoltre il padding comprende sempre un valore di 64 bits che indica la lunghezza del messaggio che non ha subito il PAD. In questo modo MD4 è più sicuro del suo antecedente perché se già è difficile produrre due messaggi che abbiano stesso valore di hash di 128 bits, sarà ancora più difficile fare lo stesso con due messaggi che abbiano la stessa lunghezza con modulo 2^64.


Funzioni hash

MD5

MD5, come i precedenti, è stato ideato da Ron Rivest della RSA Data Security. E' nato per sostituire MD4 che sta per essere violato!
Non cambia molto sulla struttura, è solo un'estensione del suddetto anche se un po' più lento.
MD5 è disponibile liberamente a: ftp://ftp.funet.fi:/pub/crypt/hash/mds/md5.


Funzioni hash

SHA

SHA (Secure Hash Algorithm) è un algoritmo hash prodotto dal National Istitute of Standard and Tecnology (NIST) e della National Security Agency (NSA) del governo degli Stati Uniti.
Molto simile a MD4 produce valori di 160 bits a partire da stringhe di lunghezza variabile. E' ritenuto abbastanza sicuro ed è relativamente nuovo.
Disponibile a: ftp://ftp.funet.fi:/pub/crypt/hash/sha.


Funzioni hash

TIGER

Tiger è un nuovo algoritmo sviluppato da Anderson e Biham, disponibile all'indirizzo: ftp://ftp.funet.fi:/pub/crypt/hash/tiger.

Bibliografia e sorgenti d'informazione


Telemat Lab's home page
home pageIndicePrec.Succ.


Explore the TELEMAT Site !!!

Ultimo aggiornamento: 24/1/97