Gli attacchi esistenti riguardano circa collisioni : l'attaccante crea due certificati che hash sullo stesso MD5, ma con contenuti distinti. Uno di questi è "benigno" (contiene il nome dell'attaccante) e questo è quello che l'attaccante invia alla CA per una firma. La CA lo firma, perché è una richiesta di certificato perfettamente valida (proviene dall'attaccante e contiene davvero il nome dell'attaccante). Grazie alla collisione MD5, la firma è anche verificabile quando viene collegato il altro certificato. Quindi l'attaccante ha ottenuto una firma della CA su un certificato su cui ha scelto i contenuti fuori controllo della CA. I dettagli sono un po 'complessi perché l'attaccante deve trovare una collisione in modo tale che i due certificati risultanti siano entrambi "strutturalmente validi".
Ciò che chiedi è qualcosa di molto diverso : stai chiedendo di un utente malintenzionato che cerca di generare un certificato con un hash corrispondente a quello di un certificato esistente , che il In primo luogo, il creatore non ha attaccante. Questo è chiamato un secondo attacco di pre-immagine ed è generalmente più difficile rispetto alla ricerca di collisioni. In particolare, non vi è attualmente alcuna debolezza nota in MD5 rispetto alle seconde pre-immagini.
Ci sono 2 128 possibili output MD5 (cioè 16 32 , non 32 16 ). In generale, se hai N messaggi di input m 1 , m 2 , ... m N e vuoi creare un nuovo messaggio m distinto da tutti i m i ma tale che l'MD5 di m è uguale all'MD5 di uno dei m i (qualsiasi volontà fare), quindi il metodo di attacco più noto è semplicemente provare i messaggi casuali m fino a quando uno corrisponde. Il costo medio di tale operazione sarà 2 128 / N .
Ci sono probabilmente molto meno di 2 certificati SSL 32 , quindi questo significa che il costo dell'attacco sarà almeno 2 96 , che è totalmente irrealizzabile con gli esistenti tecnologia. Quindi questo attacco non funzionerà. Rompere una chiave pubblica CA sarà molto più semplice (non fattibile, ma ancora più semplice, di un fattore circa 1 milione se la chiave CA attaccata è una chiave RSA a 1024 bit).
In realtà, per i certificati, l'attacco è più costoso di quello, perché un certificato contiene il nome della CA emittente. Avere una firma corrispondente dalla CA (ad esempio attraverso l'utilizzo dello stesso MD5) non è sufficiente per il certificato risultante di qualsiasi utilità: deve anche "catena" correttamente con la CA, il che implica che contiene il nome della CA come "nome dell'emittente" . Quindi N nella formula sopra riportata non è il numero totale di certificati esistenti in natura, ma il numero totale di certificati emessi da una determinata CA che devi indirizzare in modo specifico . Questo è più basso, producendo un costo di attacco ancora più alto.