MD5
L’algoritmo MD5 – è una funzione hash ampiamente utilizzata che produce un valore hash a 128 bit. Sebbene MD5 sia stato inizialmente progettato per essere utilizzato come funzione di hash crittografico, è stato riscontrato che soffre di ampie vulnerabilità. Può ancora essere utilizzato come checksum per verificare l’integrità dei dati, ma solo contro la corruzione non intenzionale.
Come la maggior parte delle funzioni hash, MD5 non è né crittografia né codifica. Può essere incrinato da attacco a forza bruta e soffre di ampie vulnerabilità come dettagliato nella sezione di sicurezza qui sotto.
MD5 è stato progettato da Ronald Rivest nel 1991 per sostituire una precedente funzione hash MD4. Il codice sorgente in RFC 1321 contiene una licenza RSA “per attribuzione”. L’abbreviazione ” MD “sta per” Message Digest.”
La sicurezza del MD5 è stata gravemente compromessa, con le sue debolezze essendo stati sfruttati nel campo, più infamously dal malware fiamma nel 2012. Il CMU Software Engineering Institute considera MD5 essenzialmente “crittograficamente rotto e inadatto per un ulteriore utilizzo”. Nonostante questa vulnerabilità nota, MD5 rimane in uso.
Storia e Criptanalisi
MD5 è uno in una serie di algoritmi message digest progettati dal Professor Ronald Rivest del Massachusetts Institute of Technology / MIT (Rivest, 1992). Quando il lavoro analitico indicava che il predecessore MD4 di MD5 era probabilmente insicuro, Rivest progettò MD5 nel 1991 come sostituzione sicura. (Hans Dobbertin ha effettivamente poi trovato debolezze in MD4.)
In 1993, Den Boer and Bosselaers gave an early, although limited, the result of finding a “pseudo-collision” of the MD5 compression function; that is, two different initialization vectors that produce an identical digest.
MD5 Hash Tutorial – What the MD5 hash means and how to use it to verify file integrity In 1996, Dobbertin announced a collision of the compression function of MD5 (Dobbertin, 1996). While this was not an attack on the full MD5 hash function, it was close enough for cryptographers to recommend switching to a replacement, such as SHA-1 or RIPEMD-160.
La dimensione del valore hash (128 Bit) è abbastanza piccola da contemplare un attacco di compleanno. MD5CRK era un progetto distribuito iniziato nel marzo 2004 con l’obiettivo di dimostrare che MD5 è praticamente insicuro trovando una collisione usando un attacco di compleanno.
MD5CRK si è concluso poco dopo il 17 agosto 2004, quando le collisioni per L’MD5 completo sono state annunciate da Xiaoyun Wang, Dengguo Feng, Xuejia Lai e Hongbo Yu. Il loro attacco analitico è stato segnalato per prendere solo un’ora su un cluster IBM P690.
Il 1 marzo 2005, Arjen Lenstra, Xiaoyun Wang e Benne de Weger hanno dimostrato la costruzione di due certificati X. 509 con diverse chiavi pubbliche e lo stesso valore di hash MD5, una collisione dimostrabilmente pratica. La costruzione includeva chiavi private per entrambe le chiavi pubbliche. Pochi giorni dopo, Vlastimil Klima ha descritto un algoritmo migliorato, in grado di costruire collisioni MD5 in poche ore su un singolo computer portatile. Il 18 marzo 2006, Klima ha pubblicato un algoritmo che potrebbe trovare una collisione entro un minuto su un singolo computer portatile, utilizzando un metodo che chiama tunneling.
Sono stati pubblicati vari errori RFC relativi a MD5. Nel 2009, il Cyber Command degli Stati Uniti ha utilizzato un valore hash MD5 della loro missione come parte del loro emblema ufficiale.
Il 24 dicembre 2010, Tao Xie e Dengguo Feng hanno annunciato la prima collisione MD5 a blocco singolo (512 bit). (Precedenti scoperte di collisione avevano fatto affidamento su attacchi multi-blocco.) Per “motivi di sicurezza”, Xie e Feng non hanno rivelato il nuovo metodo di attacco. Hanno lanciato una sfida alla comunità crittografica, offrendo una ricompensa di $10.000 al primo cercatore di una diversa collisione di 64 byte prima di 1 gennaio 2013. Marc Stevens ha risposto alla sfida e ha pubblicato messaggi in collisione a blocco singolo, nonché l’algoritmo di costruzione e le fonti.
Nel 2011 è stato approvato un RFC 6151 informativo per aggiornare le considerazioni di sicurezza in MD5 e HMAC-MD5.
Sicurezza
La sicurezza della funzione hash MD5 è gravemente compromessa. Esiste un attacco di collisione che può trovare collisioni in pochi secondi su un computer con un processore Pentium 4 da 2,6 GHz. Inoltre, c’è anche un attacco di collisione prefisso scelto che può produrre una collisione per due ingressi con prefissi specificati in poche ore, utilizzando hardware di calcolo off-the-shelf.
La capacità di trovare collisioni è stata notevolmente aiutata dall’uso di GPU off-the-shelf. Su un processore grafico Nvidia GeForce 8400GS, è possibile calcolare 16-18 milioni di hash al secondo. Una NVidia GeForce 8800 Ultra può calcolare più di 200 milioni di hash al secondo.
Questi attacchi di hash e collisione sono stati dimostrati al pubblico in varie situazioni, tra cui la collisione di file di documenti e certificati digitali.