L'MD4 è una funzione crittografica di hashing scritta da Ronald Rivest del MIT nel 1990. L'MD4 è utilizzato per la generazione di un message digest (o "impronta del messaggio", una stringa di lunghezza fissa) di 128 bit da un messaggio di lunghezza variabile. L'algoritmo ha influenzato successivi codici quali l'MD5, l'SHA ed il RIPEMD.
L'algoritmo non è sicuro ed il suo uso è pertanto sconsigliato in applicazioni in cui si richiede un elevato grado di sicurezza.
Hash dell'MD4
[modifica | modifica wikitesto]Gli hash a 128 bit (16 byte) dell'MD4 sono normalmente rappresentati come numeri esadecimali a 32 cifre. Ecco un esempio di un hash dell'MD4:
MD4("The quick brown fox jumps over the lazy dog") = 1bee69a46ba811185c194762abaeae90
Come per ogni funzione di hash, anche nel caso dell'MD4 la modifica anche minima del messaggio di input comporta lo stravolgimento dell'hash. Nel caso seguente è stata cambiata la lettera d con la lettera c:
MD4("The quick brown fox jumps over the lazy cog") = b86e130ce7028da59e672d56ad0113df
Questo è invece l'hash di una stringa di lunghezza zero:
MD4("") = 31d6cfe0d16ae931b73c59d7e0c089c0
Utilizzo
[modifica | modifica wikitesto]L'algoritmo è utilizzato come somma di controllo per verificare l'integrità dei dati e, sui sistemi Windows NT, per calcolare i digest delle password. Una versione modificata dell'MD4 è usata dal popolare programma EDonkey2000 come identificativo univoco dei file presenti nel network.
L'MD4 è anche utilizzato nel protocollo di sincronizzazione di file e cartelle Rsync.
Sicurezza
[modifica | modifica wikitesto]Nel 1991 Den Boer e Bosselaers dimostrarono che l'MD4 soffriva di debolezze progettuali. A causa di ciò, Rivest rilasciò nello stesso anno una versione migliorata dell'algoritmo denominata MD5. Tali debolezze furono poi sfruttate da Hans Dobbertin nel 1996 per attaccare l'algoritmo e trovare la prima collisione, vale a dire la generazione di un identico hash partendo da due messaggi differenti. Nel 2004 Wang Xiaoyun, insieme ad altri crittoanalisti, ha trovato un attacco di collisione molto efficiente all'MD4 e ad altri algoritmi di hash (MD5, HAVAL-128 e RIPEMD)[1], grazie al quale è possibile violare l'MD4 in pochi istanti.
Note
[modifica | modifica wikitesto]Bibliografia
[modifica | modifica wikitesto]- (EN) RFC 1186 — The MD4 Message Digest Algorithm, su datatracker.ietf.org, Internet Engineering Task Force.
- (EN) RFC 1320 — The MD4 Message-Digest Algorithm, su datatracker.ietf.org, Internet Engineering Task Force.
- (EN) RFC 6150 — MD4 to Historic Status, su datatracker.ietf.org, Internet Engineering Task Force.
- (EN) Ronald L. Rivest, The MD4 Message Digest Algorithm, in CRYPTO '90: Proceedings of the 10th Annual International Cryptology Conference on Advances in Cryptology, agosto 1990, pp. 303–311. URL consultato il 31 maggio 2024.
- (EN) Xiaoyun Wang, Dengguo Feng, Xuejia Lai e Hongbo Yu, Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD (PDF), 2004.
- (EN) Yusuke Naito, Yu Sasaki, Noboru Kunihiro e Kazuo Ohta, Improved Collision Attack on MD4 (PDF), 2005.
- (EN) Xiaoyun Wang, Xuejia Lai, Dengguo Feng, Hui Chen e Xiuyuan Yu, Cryptanalysis of the Hash Functions MD4 and RIPEMD, in Ronald Cramer (a cura di), Advances in Cryptology – EUROCRYPT 2005, Springer, pp. 1–18, DOI:10.1007/11426639_1. URL consultato il 31 maggio 2024.