1.1 INTRODUZIONE

Nella  moderna crittografia le funzioni hash hanno assunto un ruolo fondamentale per la garanzia dell'integrità dei dati e l’autenticazione dei messaggi. Una funzione hash prende in input un messaggio e restituisce un output denominato codice hash, risultato hash, valore hash o semplicemente hash.

 

 

Più in dettaglio, una funzione hash h, a stringhe di bit di lunghezza arbitraria e finita, associa stringhe di lunghezza fissata, n bit. La funzione , con dominio D e codominio C tali che , è del tipo molti-ad-uno. L’idea di base delle funzioni hash è che un valore hash può servire come una immagine rappresentativa compatta (impronta digitale o anche message digest) di una stringa di input, e può essere usato come se fosse univocamente identificativo di quella stringa.

PROBLEMA DELLA FIRMA DIGITALE DEI MESSAGGI LUNGHI 

 

Nella valutazione degli schemi di firme digitali è emerso il problema dei messaggi lunghi. Tutti gli schemi presentati sono in grado di firmare messaggi di lunghezza fissata:

    RSA: messaggio di 512 bit  firma 512 bit;

    DSS: messaggio di 160 bit  firma  320 bit.

Una soluzione banale consiste nel dividere il messaggio originale in blocchi e di firmare indipendentemente ogni blocco. Gli svantaggi di questo approccio sono:

 

 

 

L’uso di una funzione hash pubblica h fornisce una soluzione efficiente a tutti questi problemi. La strategia che potrebbe essere adottata da un utente A che intendesse firmare un proprio messaggio x di lunghezza arbitraria è la seguente:

1. Calcola z=h(x)

2. Firma il valore hash z costruendo y=    tramite la sua chiave privata .

3. Trasmette all’utente B la coppia (x,y).

Una volta che il messaggio firmato è stato trasmesso sia il destinatario B che chiunque atro risultasse interessato alla verifica della firma effettua le seguenti operazioni:

1. Calcola z=h(x), mediante h()  che è pubblica.

2. Verifica che y è la firma di z : , mediante la chiave pubblica di A.

La scelta di una funzione hash, che permetta di realizzare schemi di firme digitali per documenti di qualsiasi dimensione è un’operazione critica. Infatti, occorre assicurarsi che la funzione individuata non indebolisca la sicurezza dello schema di firma, fenomeno che si verifica quando la funzione produce facilmente collisioni. In tal caso è facile intuire che il nemico può trovare agevolmente più messaggi x, tali che h(x)=z per un certo z di cui conosce la firma, allora può costruire contraffazioni.

 

 

 

Una classe distinta di funzioni hash, chiamate "message autentication codes" (MAC) permette l’autenticazione di messaggi con tecniche a chiave simmetrica. Gli algoritmi MAC possono essere visti come funzioni hash che prendono due input funzionalmente distinti, un messaggio ed una chiave segreta e producono un output di dimensione fissata, con l’intento che diventi irrealizzabile in pratica produrre lo stesso output senza la conoscenza della chiave segreta. MAC può essere usato per fornire l’integrità dei dati e l’autenticazione dei dati originari di tipo simmetrico.