Il MD2 Message-Digest Algorithm è 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 | modifica wikitesto]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 | modifica wikitesto]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 | modifica wikitesto]Rogier e Chauvaud nel 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.[1]
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 applicazioni della funzione di compressione[2]. L'autore conclude dichiarando che l'"MD2 non può essere più considerato una funzione di hash a senso unico"[2].
Note
[modifica | modifica wikitesto]- ^ (EN) N. Rogier e Pascal Chauvaud, Md2 is not Secure Without the Checksum Byte, in Designs, Codes and Cryptography, vol. 12, n. 3, 1997, pp. 245–251, DOI:10.1023/A:1008220711840.
- ^ a b (EN) Frédéric Muller, The MD2 Hash Function Is Not One-Way, vol. 3329, Springer Berlin Heidelberg, 2004, pp. 214–229, DOI:10.1007/978-3-540-30539-2_16, ISBN 978-3-540-23975-8.
Bibliografia
[modifica | modifica wikitesto]- (EN) RFC 1319 — The MD2 Message-Digest Algorithm, su datatracker.ietf.org, Internet Engineering Task Force.
- (EN) RFC 6149 — MD2 to Historic Status, su datatracker.ietf.org, Internet Engineering Task Force.
- (EN) Lars R. Knudsen e John E. Mathiassen, Preimage and Collision Attacks on MD2, vol. 3557, Springer Berlin Heidelberg, 2005, pp. 255–267, DOI:10.1007/11502760_17, ISBN 978-3-540-26541-2.
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (EN) What are MD2, MD4, and MD5?, su emc.com (archiviato dall'url originale il 16 gennaio 2017).
- (EN) CVE-2009-2409, su National Vulnerability Database, National Institute of Standards and Technology.