È possibile forzare un file per generare una firma MD5 specifica?

6

Talvolta MD5 viene usato per verificare che un file scaricato sia realmente valido.

Quindi voglio sapere se è possibile per un hacker modificare un file e introdurre del codice malevolo E fare in modo che il file generi l'MD5 originale.

Esempio

Original program

MD5:

eac2a0844b652ecea010ec38960d18ba

Codice dannoso

Original program
Malicious Code

MD5:

5c07d676b765510db628978dc593aa0d

Codice dannoso + bit casuali per modificare l'MD5

Original program
Malicious Code
00000000000000000000000000000000

MD5:

0ade6514efd2d247105ba6249e31ae47

Codice dannoso + bit casuali per modificare l'MD5

Original program
Malicious Code
00000000000000000000000000000001

MD5:

1a499c7ad2755cd66eeea78f5b56f6d0

... diverse combinazioni più tardi ...

Codice dannoso + bit corretti per modificare l'MD5

Original program
Malicious Code
d1bf573000019911b85cbeb24503e745

MD5:

eac2a0844b652ecea010ec38960d18ba //Just an example, real MD5: 882789190dcfee14d563913d345054e0

Con un tempo sufficiente, un utente malintenzionato potrebbe trovare una stringa che genera l'MD5 originale?

    
posta IAmJulianAcosta 01.03.2016 - 00:12
fonte

1 risposta

9

Ordina. Ma ci vorrebbe molto tempo.

Essere in grado di creare un file con un hash noto specifico è noto come attacco pre-immagine. Un esempio potrebbe essere che chiedo un file che hash a beefbeefbeefbeefbeefbeefbeefbeef . L'unico modo per farlo, in teoria, è provare a calcolare gli hash per ogni possibile input su MD5 finché non trovi un input che fornisce questo hash. Non vi è alcuna garanzia che questo input esista (anche se è probabile che sia) ed è del tutto possibile che trovarlo richiederebbe tempi di scala dell'universo, anche con la velocità dell'hashing MD5 sui processori moderni. Esiste un attacco noto che indebolisce la resistenza pre-immagine MD5 da 2 < sup> 128 a 2 123.4 . Questo va da 10 22 milleni, con un hash per microsecondo, a 10 20 millenia, quindi ancora non particolarmente pratico!

La creazione di un altro file con lo stesso hash di uno esistente è noto come un secondo attacco pre-immagine. Questo è un caso speciale di collisione dell'hash - normalmente, vuoi solo trovare due stringhe che hanno lo stesso hash dell'output. Alcuni di questi sono noti e puoi anche generare il tuo !. Tuttavia, nel tuo caso, stai lasciando intatto il primo input e stai cercando un secondo input che contenga entrambi il primo input e includa altri contenuti specifici. Ciò riduce enormemente il potenziale insieme di input alla funzione hash, il che significa che stai cercando qualcosa che potrebbe non esistere affatto all'interno di un sottoinsieme degli input. E l'unico modo per trovarlo è provare a eseguire l'hashing di ogni singolo valore valido, finché non ne trovi uno.

In teoria, potresti essere in grado di trovare un simile input, ma potrebbe non esistere affatto e trovarlo potrebbe richiedere più tempo di quanto l'universo sia esistito. Probabilmente non vale la pena preoccuparsi!

Per inciso, questo è il motivo per cui MD5 va bene per l'uso come checksum per download o simili - essere in grado di generare un file distinto con lo stesso checksum di un originale fisso sarebbe un colpo di calcolo, ed essere un po 'sprecato se usato semplicemente per manomissione dei download. Di solito è molto più semplice modificare le stringhe MD5 elencate per i download.

    
risposta data 01.03.2016 - 10:38
fonte

Leggi altre domande sui tag