Il Message Digest Algorithm 2 (MD2) è un algoritmo crittografico di hashing sviluppato da Ronald Rivest nel 1989. L'algoritmo è ottimizzato per computer ad 8 bit. Le sue specifiche sono descritte nell'RFC 1319.

Anche se dopo di esso sono stati presentati altri algoritmi, come l'MD4, l'MD5 e l'SHA, nel 2004 l'MD2 era ancora in uso in infrastrutture a chiave pubblica come parte dell'algoritmo di generazione dei certificati digitali RSA-MD2.

Descrizione modifica

L'hash dell'MD2 è lungo 128 bit (o 16 byte) ed è generato partendo da un messaggio di lunghezza arbitraria. A questo messaggio si aggiungono inizialmente "i" byte di valore "i" in modo tale che la sua lunghezza sia un multiplo di 128 (deve cioè essere congrua a 0 modulo 16). Successivamente si aggiunge una somma di controllo di 128 bit ottenuta da una tabella di permutazione di 256 byte ricavata dalle cifre decimali del valore del pi greco. A questo punto inizia il calcolo vero e proprio dell'hash, che viene effettuato utilizzando un buffer di 48 byte, che viene inizializzato partendo dalla precedente tabella di permutazione, e blocchi di 16 byte del messaggio. Quando terminano tutti i blocchi del messaggio, il primo blocco parziale del blocco ausiliario utilizzato per il calcolo diventa l'hash del messaggio.

Hash dell'MD2 modifica

Hash a 128 bit generati dall'MD2:

 MD2("The quick brown fox jumps over the lazy dog")
  = 03d85a0d629d2c442e987525319fc471

Questo è il risultato modificando una d con una c:

 MD2("The quick brown fox jumps over the lazy cog")
  = 6b890c9292668cdbbfda00a4ebf31f05

Questo è l'hash di una stringa di lunghezza zero:

 MD2("") = 8350e5a3e24c153df2275c9f80692773

Sicurezza modifica

Rogier e Chauvaud (1997) hanno descritto le collisioni presenti nella funzione di compressione unidirezionale dell'MD2, anche se non sono stati capaci di utilizzare tali debolezze per estendere l'attacco alla versione integrale dell'algoritmo.

Nel 2004 è stato dimostrato che l'MD2 è vulnerabile al preimage attack (un tipo di attacco in cui si cerca di trovare un messaggio che ha un determinato hash) con una complessità di calcolo di 2104 applicazioni della funzione di compressione (Muller, 2004). L'autore conclude dichiarando che l'"MD2 non può essere più considerato una funzione di hash a senso unico"[1].

Note modifica

Collegamenti esterni modifica