it-swarm.dev

Perché le persone usano ancora / raccomandano MD5 se è stato crackato dal 1996?

È ancora comunemente raccomandato il metodo di hashing delle password, anche se la sua insicurezza è stata dimostrata nel 1996:

Pertanto, suggeriamo che in futuro MD5 non dovrebbe più essere implementato in applicazioni come schemi di firma, dove è richiesta una funzione hash resistente alle collisioni. Secondo la nostra attuale conoscenza, i migliori consigli per le alternative a MD5 sono SHA-1 e RIPEMD-160.

(Lo stato di MD5 dopo un recente attacco, CryptoBytes, RSA Laboratories, VOLUME 2, NUMBER 2 - SUMMER 1996) =

Anche dopo questo studio e tutti i prossimi articoli sui suoi difetti, da allora è stato raccomandato come funzione di hashing della password nelle applicazioni web.

Viene persino utilizzato in alcune firme digitali delle autorità di certificazione (secondo http://rmhrisk.wpengine.com/?p=6 )

Qual è la ragione, perché questo algoritmo di digest dei messaggi non è ancora proibito ai fini della sicurezza?


Collegamenti, mi ci sono voluti pochi minuti per trovare quelli

57
Marek Sebera

Per completare la buona risposta di @DW: per l'hash della password, MD5 non è più interrotto di qualsiasi altra funzione hash (ma non usarla comunque) .


L'immagine completa: MD5 è un funzione hash crittografica che, come tale, dovrebbe soddisfare tre caratteristiche:

  • Resistenza alle preimmagini: dato x, è impossibile trovare m that MD5 (m) = x.
  • Resistenza alle seconde preimmagini: dato m, è impossibile trovare m ' distinto da m e tale che MD5 (m) = MD5 (m ').
  • Resistenza alle collisioni: è impossibile trovare m e m ', distinti l'uno dall'altro e tali che MD5 (m) = MD5 (m ').

MD5 è completamente rotto per quanto riguarda collisioni, ma non per pre-immagini o seconde pre-immagini. Inoltre, l'attacco del 1996 (di Dobbertin) non spezzò affatto MD5; era una "collisione sulla funzione di compressione", cioè un attacco a uno degli elementi interni di MD5, ma non la funzione completa. I crittografi lo presero come una bandiera di avvertimento, e avevano ragione perché l'attuale attacco di collisione pubblicato nel 2004 (da Wang) era stato costruito dai risultati di Dobbertin. Ma MD5 è stato rotto solo nel 2004, non nel 1996, ed è stato un attacco di collisione.

Le collisioni non sono rilevanti per la sicurezza dell'hash delle password. La maggior parte degli usi di una funzione hash per l'hash della password dipende dalla resistenza preimage o da altre proprietà (ad es. Come funziona la funzione hash quando usata all'interno di HMAC , qualcosa che non può essere ridotto a nessuna delle proprietà sopra). L'MD5 è stato in realtà "indebolito" per quanto riguarda le preimmagini, ma solo in modo teorico, perché il costo dell'attacco è ancora miliardi di miliardi di volte troppo costoso per essere realmente provato (quindi l'MD5 non è "realmente" rotto rispetto alle preimmagini, non in modo pratico).

Ma non usare comunque MD5 . Non a causa di qualsiasi debolezza crittografica, ma perché MD5 è non salato e molto veloce. Questo è esattamente ciò che non si desidera in una funzione di hashing della password. Le persone che "raccomandano MD5" per l'hash della password non conoscono meglio e sono una testimonianza di una Verità che dovresti sempre tenere a mente: non tutto ciò che trovi su Internet è corretto e affidabile. Sono note soluzioni migliori per l'hash delle password, utilizzate da oltre un decennio. Vedi questa risposta per dettagli e puntatori.

76
Thomas Pornin

Cosa intendi con "proibito"? Chi "vieterebbe" l'uso di MD5? Non è che abbiamo alcuni poliziotti crittografici internazionali che vanno ad arrestare persone che usano ROT13 e altri schemi di crittografia non sicuri.

O, per essere un po 'più serio: i crittografi raccomandano già che i nuovi sistemi dovrebbero evitare MD5 e raccomandano che i sistemi esistenti migrino da MD5. Non so cos'altro pensi che i crittografi possano fare al riguardo.

Sostieni che MD5 sia un "modo comunemente raccomandato di hashing delle password", ma non fornisci alcuna prova per questo reclamo. Non credo che l'affermazione sia corretta. Non è stata la mia esperienza.

La linea di fondo è che la comunità crittografica è già parla abbastanza chiaramente, con una sola voce, su questo argomento, e la maggior parte delle persone sta sta già migrando da MD5. I casi in cui MD5 è ancora utilizzato sono l'eccezione, non la norma.

Modifica (17/06): vedo che hai aggiunto alcuni link che menzionano l'uso di MD5 per l'hashing. Tutto ciò che dimostrano è che alcune persone di cui non ho mai sentito parlare sono confuse. E allora? Probabilmente dovresti essere scettico nel prendere consigli da persone che non hanno comunque ottenuto una reputazione positiva nella comunità della sicurezza/crittografia. E non capisco come si possa criticare la comunità della sicurezza/crittografia sul fatto che alcune persone che non fanno parte della comunità sono confuse. Cosa, esattamente, dovremmo fare? Facciamo già tutto il possibile per espandere la conoscenza del modo giusto di farlo. Sento che stai davvero dando la colpa alle persone sbagliate.

Ad ogni modo, per rispondere alla tua domanda sul perché alcune persone raccomandano ancora MD5: beh, probabilmente è perché quelle persone non conoscono meglio. Non so cosa si possa dire di più sull'argomento, o cosa ti aspetti che qualcuno dica.

28
D.W.

Penso che quello che vedi sia la lunga coda del web. Posso trovare articoli del 2006 che raccomandano MD5 per l'hash della password (ad es. http://www.pixel2life.com/publish/tutorials/118/understanding_md5_password_encryption/ ) - ancora 10 anni dopo la data di riferimento.

Tuttavia stiamo parlando del tempo per ottenere qualcosa dalla ricerca all'avanguardia nelle riviste di crittografia peer review per raccomandare la pratica tra i praticanti di tutti i giorni che non leggono le riviste di crittografia e non sono nemmeno esperti in quel campo. Ciò che probabilmente è accaduto è che poiché nel 1990 tutti "sapevano" che MD5 era buono per le password, hanno detto a tutti che MD5 era buono per le password. Dalla fine degli anni '90 alcune persone dicevano che MD5 era dannoso per le password, ma la maggior parte delle persone "sapeva" che era buono per le password e questo era ancora ciò che consigliavano agli altri.

In questi giorni, c'è un numero abbastanza grande di persone che "sanno" che bcrypt è buono per le password che stai iniziando a vedere quei consigli, ma il articoli che affermano che MD5 è buono per le password non sono ancora decaduti dagli indici dei motori di ricerca. Nel tempo, lo faranno.

Ciò significa che tra un decennio tornerai qui e poni la domanda "perché le persone raccomandano ancora di utilizzare un fattore di lavoro bcrypt di 10 quando questo il diario dice che dovresti usare almeno 150? "...

Poul Henning-Kamp originariamente ha spostato la funzione UNIX crypt () da DES a MD5. Spiega qui che il fatto che le persone stiano usando MD5 dimostra che non ha funzionato descrivi cosa stava cercando di fare: rendere l'hashing della password più complesso, non installare MD5 come shibboleth.

8
user185

Hai diversi usi di MD5

Controllo di integrità

Verifica che il file scaricato o ricevuto sia l'originale controllando l'hash del file. È stato dimostrato che è possibile creare facilmente un file con lo stesso checksum.

La collisione in MD5 è facile da produrre . MD5 non deve essere utilizzato a tale scopo.

Le persone continuano a proporre checksum MD5 durante il download di iso e roba, ma spesso danno anche SHA checksum. Questo può essere spiegato perché MD5 è molto più veloce e di solito implementato.

Controllo password

Invece di memorizzare una password in chiaro, si memorizza l'hash della password. Alcuni siti web usano ancora MD5 per farlo. Il problema qui non è trovare una collisione ma controllare una tabella Rainbow o un enorme database di checksum MD5.

Poiché è possibile produrre molto rapidamente milioni di checksum MD5, è possibile forzare una password sul proprio PC. Non dovresti usare MD5 per eseguire l'hashing della tua password per quel motivo, ma soprattutto, dovresti aggiungere a salt .

Se hai una password molto complessa (lunga con caratteri speciali) e un unico complesso sale per ogni password memorizzata, non è un problema per te usare MD5. Non dico che dovresti (non dovresti) ma non è un grosso problema di sicurezza usare MD5 se la password sarà difficile da forzare e l'uso del tavolo Rainbow è impedito dal sale. Naturalmente, sul tuo sito web, non è facile (e apprezzato) forzare gli utenti ad avere una password complessa, quindi se un utente registra 12345, indipendentemente dalla funzione hash che usi, verrà rotto.

Il motivo per cui le persone usano ancora questo è forse perché è ancora la funzione hash più conosciuta ed era ancora accettabile alcuni anni fa. Le persone con poca conoscenza delle criptovalute possono usarlo.

6
Martin Trigaux

Non penso che sia raccomandato. Wikipedia afferma che MD5 è considerato rotto e SHA-2 o SHA è consigliata per sostituirlo. Dai un'occhiata anche a Devise , a Ruby gemma che gestisce l'autorizzazione. Ha un diverso tipo di criptatore.

3
Travis Pessetto

Anche dopo questo studio e tutti i prossimi articoli sui suoi difetti, da allora è stata raccomandata la funzione hashing della password nelle applicazioni web.

Sì e?

L'hash delle password è solo una perdita di tempo.

MD5 ^ n (MD5 iterato n volte) è buono quanto SHA1 ^ m (per m come time(MD5^n) >= time(SHA1^m)) per - perdita di tempo.

Nessuno ha suggerito alcun modo per calcolare MD5 ^ n in modo più veloce dell'ovvio MD5 o MD5^(n-1). Non c'è nemmeno l'inizio di un'idea per farlo.

Nulla è rotto qui.

Per perdere tempo, dovresti considerare scrypt.

2
curiousguy

Queste sono informazioni ufficiali su MD5 - MD5 vulnerabile agli attacchi di collisione Per una maggiore sicurezza SHA-2 dovrebbe essere considerato. Nessuno impedisce agli utenti di utilizzare MD5, ma non per i dati che desideri mantenere privati.

Prestazioni degli algoritmi hash

Come mostrato nel diagramma "Prestazioni degli algoritmi hash", SHA256 è molto più veloce di MD5.

Questa è una buona risorsa da considerare, l'autore esamina le password trapelate da LinkedIn (.) Acm (.) Org/detail.cfm? Id = 2254400 & ref = fullrss, mostra anche alcuni modi su come proteggere le password.

1
user1652382

Il problema dell'hash delle password e dell'uso delle tabelle Rainbow dipende dalla sicurezza di un server Web sfruttato da una debolezza sottostante.

Prima di tutto, tutti questi siti web pretendono di offrire un semplice test per vedere se la tua password è sicura ... Ummm bene considera questi siti come phishing e tutte le persone che fanno il roll-up verso questi siti stanno alimentando una tabella Rainbow. Questa è una parte del problema.

In secondo luogo sono le persone che utilizzano servizi di web hosting in cui l'oggetto deve guadagnare denaro e dimenticare la sicurezza del server Web, questi host dovrebbero essere messi contro il muro e sparare a IMHO, parte della sicurezza di un accesso degli utenti proviene dalla sicurezza di un server web e le tecnologie sottostanti aggiornate per impedire l'utilizzo di exploit noti.

In terzo luogo, una volta che le persone entrano nella loro testa spessa che mentre MD5 non è resistente alle collisioni o preferisco il più robusto possibile, è ancora difficile hackerare un account utente a meno che tu non abbia un host web che esegue un sistema sfruttabile , la tua codifica web non è affidabile e ti esponi utilizzando un sito che afferma di verificare la sicurezza della password.

Per la maggior parte MD5 + un valore Salt è una sicurezza adeguata per l'accesso di un utente su un forum Web purché il sistema e il software precedentemente menzionati non siano sfruttabili. Una volta che hai un sistema che è stato sfruttato per un punto debole, l'esecuzione di una query per valori hash noti che non utilizzano un sistema di salatura esporrà un quarto punto debole ... l'utente finale.

Il quarto è l'utente finale, la tua sicurezza web è in definitiva tanto forte quanto il collegamento più debole e per molti vedranno l'utente finale come quello e gli amministratori devono ricordare che sono utenti finali di un sistema e sono altrettanto vulnerabili a compromettere la sicurezza di un sistema impiegando una programmazione o un software sciatti che si rompono facilmente, una scarsa sicurezza della password e non riescono a modificare il login ADMIN o l'utilizzo di software che ancora oggi insiste sul fatto di avere il nome di accesso admin come amministratore e che utilizzano anche account super utente.

Quindi è ovvio, quindi lo dirò comunque, MD5 non è incrinato, è invertito da utenti deboli, software debole e incapacità delle persone di comprendere una tecnologia. Se MD5 è crackato, lo è anche SHA e AES e così via ...

0
Mark Giblin