Complessità degli attacchi dei certificati Web

5

Ho sentito qualche tempo fa su qualcuno che sfruttava le debolezze di md5 per creare un certificato web con lo stesso md5 di un altro certificato.

Sono stati in grado di creare un certificato tramite politiche di rilascio errate e penso che abbiano calcolato 200 ps3.

Quindi mi sono chiesto, è possibile raschiare l'intero web per i certificati e creare un database con tutti loro e usare la forza bruta per creare un certificato che abbia lo stesso md5 di uno nel database?

So my question: Does anyone know the math behind this? Voglio dire quanti md5 unici ci sono? Penso che sia il 32 ^ 16. Quanti certificati ci sono con md5 (anche se obsoleti, funzioneranno ancora) quindi stimiamo hash / min per un computer medio.

So che molti certificati sono stati modificati in sha1. Devo dire che non penso sia possibile, ma è un pensiero che mi ha infastidito per un tempo mooolto ora e ho bisogno di input! C'è un sacco di md5 ma ho un computer veloce;)

    
posta KilledKenny 11.04.2011 - 01:25
fonte

2 risposte

5

MD5 è stato deprecato a causa della facilità con cui è possibile trovare una collisione: alcuni anni fa ho scritto un articolo che mostrava come generare una collisione MD5 in meno di un minuto. Da allora è stato perfezionato in pochi secondi.

La generazione di due diversi documenti postscript con la stessa somma MD5 fa leva sul fatto che postscript è un linguaggio per computer e i visualizzatori postscript valutano questa lingua. È un trucco pulito. Funziona così: File1 ha un blocco binario Q, quindi un po 'di codice, quindi un documento A, quindi un documento B. Quando si visualizza File1, viene eseguito il codice che esamina Q quindi visualizza A.

Ora creiamo una copia di File1 chiamata File2. Modifichiamo solo da Q a Q 'che ha la stessa somma MD5 di Q. Ciò significa che File2 ha la stessa somma MD5 di File1 poiché non cambia nulla. Ma ora, quando visualizziamo File2, si esegue lo stesso codice, si vede Q 'e si stampa il documento B. Carino!

Ma qui stiamo usando il fatto che collisioni sono facili da trovare in MD5. Nessuno (per quanto ne so) può invertire i digest MD5 arbitrari, né qualcuno può trovare un secondo input per abbinare la somma MD5 di un dato file (questo è chiamato "seconda resistenza pre-filtro").

Quindi ciò che suggerisci sopra è ancora irrealizzabile. La matematica che hai chiesto: MD5 emette 128 bit, quindi la probabilità che un digest casuale corrisponda a una data è $ 1/2 ^ {128} $ e quindi ci vorranno delle prove $ 2 ^ {128} $ per riprodurre un desiderato digest.

    
risposta data 11.04.2011 - 04:11
fonte
2

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.

    
risposta data 28.09.2011 - 18:27
fonte

Leggi altre domande sui tag