title: MD4
text: # MD4
  
  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
  
  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:
  
  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:
  
  Questo è invece l'hash di una stringa di lunghezza zero:
  
  ## Utilizzo
  
  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
  
  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), grazie al quale è possibile violare l'MD4 in pochi istanti.
  
  