Perchè le persone usano / raccomandano MD5 in caso di crack dal 1996?

51

È ancora un metodo comunemente consigliato per le password di hashing, anche se la sua insicurezza era stata dimostrata nel 1996:

Therefore we suggest that in the future MD5 should no longer be implemented in applications like signa- ture schemes, where a collision-resistant hash func- tion is required. According to our present knowl- edge, the best recommendations for alternatives to MD5 are SHA-1 and RIPEMD-160.

(Lo stato di MD5 dopo un attacco recente, CryptoBytes, RSA Laboratories, VOLUME 2, NUMERO 2 - ESTATE 1996)

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

Viene persino utilizzato in alcune firme digitali di alcune Autorità di certificazione (in base al link )

Qual è la ragione, perché questo algoritmo di digest del messaggio non è ancora proibito a scopo di sicurezza?

Link, mi ci sono voluti alcuni minuti per trovarli

posta Marek Sebera 07.06.2012 - 17:18
fonte

8 risposte

69

Per completare la buona risposta di @ D.W .: per l'hashing della password, MD5 non è più rotto di qualsiasi altra funzione di hash (ma non usarlo comunque) .

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

  • Resistenza alle preimmagini: data x , è impossibile trovare m tale che MD5 (m) = x .
  • Resistenza alle seconde preimmagini: data m , è impossibile trovare m distinti da m e tali che MD5 (m) = MD5 (m ') .
  • Resistenza alle collisioni: è impossibile trovare m e m , distinti tra loro e tali che MD5 (m) = MD5 (m ') .

MD5 è completamente rotto per quanto riguarda le collisioni , ma non per le pre-immagini o le seconde pre-immagini. Inoltre, l'attacco del 1996 (di Dobbertin) non ha affatto infranto 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'effettivo attacco di collisione che fu pubblicato nel 2004 (da Wang) fu costruito dai risultati di Dobbertin. Ma MD5 è stato rotto solo nel 2004, non nel 1996, ed è stato un attacco collisione .

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

Ma non usare MD5 comunque . Non a causa di una debolezza crittografica, ma perché MD5 è non modificato e molto veloce . Questo è esattamente ciò che non vuoi in una funzione di hashing della password. Le persone che "raccomandano MD5" per l'hashing delle password non lo sanno, e sono una testimonianza di una verità che dovresti sempre tenere a mente: non tutto ciò che trovi su Internet è corretto e degno di fiducia. Le migliori soluzioni per l'hashing delle password sono note e sono state utilizzate e utilizzate da più di un decennio. Vedi questa risposta per i dettagli e i puntatori.

    
risposta data 03.03.2013 - 18:14
fonte
27

Che cosa intendi per "proibito"? Chi proibirebbe l'uso di MD5? Non è che abbiamo alcuni Crypto Cops internazionali che arrestano persone che usano ROT13 e altri schemi crittografici insicuri.

Oppure, per essere un po 'più serio: i crittografi raccomandano già che i nuovi sistemi dovrebbero evitare MD5 e raccomandano che i sistemi esistenti debbano migrare lontano da MD5. Non so che altro pensi che i crittografi possano fare per questo.

Lei afferma che MD5 è un "metodo comunemente raccomandato per le password di hashing", ma non fornisce alcuna prova per questo reclamo. Non penso che l'affermazione sia corretta. Questa non è stata la mia esperienza.

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

Modifica (6/17): vedo che hai aggiunto alcuni collegamenti 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 ad accettare consigli da persone che non hanno comunque stabilito una reputazione positiva nella comunità sicurezza / crittografia. E non capisco come si possa criticare la comunità di sicurezza / crittografia sul fatto che alcune persone che non sono nella comunità sono confuse. Cosa dovremmo fare esattamente? Facciamo già tutto il possibile per espandere la conoscenza sul modo giusto di farlo. Sento che stai dando la colpa alla gente sbagliata.

Ad ogni modo, per rispondere alla tua domanda sul perché alcune persone raccomandano ancora MD5: beh, beh, probabilmente è perché quelle persone non ne sanno niente di meglio. Non so cosa si può dire di più sull'argomento, o cosa si aspetta di più da chiunque.

    
risposta data 07.06.2012 - 20:10
fonte
8

Penso che quello che vedi sia la coda lunga del web. Posso trovare articoli del 2006 che raccomandano MD5 per l'hashing delle password (ad es. link ) - ancora 10 anni dopo la tua data di riferimento.

Tuttavia stiamo parlando del tempo per qualcosa da ottenere dalla ricerca all'avanguardia nelle riviste di crittografia peer reviewed per raccomandare la pratica tra i professionisti di tutti i giorni che non leggono riviste di crittografia e non sono nemmeno esperti in quel campo. Quello che probabilmente è successo è che nel 1990 tutti "sapevano" che MD5 era buono per le password, hanno detto a tutti gli altri che MD5 era buono per le password. A partire dalla fine degli anni '90 alcune persone affermavano 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.

Oggigiorno, c'è un gruppo di persone abbastanza grande che "sanno" che bcrypt è buono per le password che stai iniziando a vedere, ma gli articoli che dicono che MD5 è buono per le password non sono ancora decaduti dagli indici dei motori di ricerca. Col tempo, lo faranno.

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

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

    
risposta data 08.06.2012 - 10:45
fonte
4

Hai diversi usi di MD5

Controllo dell'integrità

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

La collisione in MD5 è facile da produrre . MD5 non dovrebbe essere usato a tale scopo.

Le persone propongono ancora il checksum MD5 mentre scaricano iso e roba, ma spesso danno anche il checksum SHA. Questo può essere spiegato perché MD5 è molto più veloce e solitamente implementato.

Controllo della password

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

Dato che puoi produrre milioni di checksum MD5 molto velocemente, puoi forzare la password sul tuo PC. Non dovresti utilizzare MD5 per l'hashing della tua password per questo motivo, ma per lo più, dovresti aggiungere un sale .

Se hai una password molto complessa (lunga con caratteri speciali) e un unico complesso salt per ogni password memorizzata, non è un grosso problema per te usare MD5. Non dico che dovresti (non dovresti) ma non è un grosso problema di sicurezza usare MD5 se la password sarà dura da usare come forza bruta e l'uso di rainbow table è prevenuto 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 di hash che usi, sarà rotto.

Il motivo per cui le persone lo usano ancora è forse la funzione hash più nota ed era ancora accettabile qualche anno fa. Le persone con poca conoscenza cripto possono usarlo.

    
risposta data 08.06.2012 - 09:46
fonte
3

Non penso che sia raccomandato. Wikipedia afferma che MD5 è considerato danneggiato e si consiglia la famiglia SHA-2 o SHA per sostituirlo. Dai anche un'occhiata a Devise , una gemma di rubini che gestisce l'autorizzazione. Ha un diverso tipo di crittografia.

    
risposta data 07.06.2012 - 20:14
fonte
2

Even after this study, and all upcoming papers about it's defects, it has been recommended as password hashing function in web applications, ever since.

Sì, e?

L'hashing della password è solo spreco di tempo.

MD5 ^ n (MD5 iterato n volte) è altrettanto buono di SHA1 ^ m (per m come time(MD5^n) >= time(SHA1^m) ) per spreco di tempo .

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

Niente è rotto qui.

Per time.space wasting, dovresti prendere in considerazione scrypt .

    
risposta data 08.06.2012 - 04:21
fonte
0

Questa è un'informazione ufficiale su MD5 - MD5 vulnerabile agli attacchi di collisione Per una maggiore sicurezza dovrebbe essere considerato SHA-2. Nessuno impedisce agli utenti di utilizzare MD5, ma non per i dati che vuoi 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, gli sguardi degli autori su trapelate password passwords-code (.) acm (.) org / detail.cfm? id = 2254400 e ref = fullrss, mostra anche alcuni modi su come proteggere le password.

    
risposta data 04.05.2013 - 14:24
fonte
0

Il problema dell'hash delle password e l'uso delle tabelle arcobaleno dipendono dalla sicurezza di un server Web sfruttato attraverso una debolezza sottostante.

Innanzitutto, tutti questi siti Web pretendono di offrire un semplice test per vedere se la tua password è sicura ... Ummm, beh, permette di guardare questi siti come phishing e tutte le persone che stanno facendo il rollup su questi siti stanno dando da mangiare a un tavolo arcobaleno . Questa è una parte del problema.

Al secondo posto ci sono persone che usano servizi di web hosting dove l'oggetto è di incassare denaro e dimenticare la sicurezza del server web, questi host dovrebbero essere messi contro il muro e sparati a IMHO, parte della sicurezza di un login utente viene da la sicurezza di un server web e le tecnologie sottostanti aggiornate per impedire l'utilizzo di exploit noti.

Il terzo è che una volta che le persone entrano nelle loro teste spesse che mentre MD5 non è resistente alla collisione o preferisco il più robusto possibile, è ancora difficile per un account utente essere violato a meno che non si abbia un host web in esecuzione un sistema sfruttabile, la codifica Web non è robusta e ti esponi utilizzando un sito che rivendica la sicurezza della tua password.

Per gran parte MD5 + un valore Salt è una sicurezza adeguata per un accesso utente su un forum Web a condizione che il sistema e il software menzionati in precedenza non siano utilizzabili. Una volta che hai un sistema che è stato sfruttato per un punto debole, l'esecuzione di una query per i noti valori hash 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 strong quanto il link più debole e per molti vedranno l'utente finale come tale e gli amministratori devono ricordare di essere utenti finali di un sistema e sono ugualmente vulnerabili a compromettere la sicurezza di un sistema utilizzando programmi di programmazione o software scarsamente spezzati, scarsa sicurezza della password e anche il mancato cambio di accesso ADMIN o l'utilizzo di software che ancora oggi insiste nell'avere il nome di accesso amministratore come amministratore e che utilizza anche account super utente .

Quindi non c'è bisogno di dirlo, quindi lo dirò comunque, MD5 non è incrinato, è stato ideato in retromarcia da utenti deboli, software debole e incapacità delle persone di comprendere una tecnologia. Se MD5 è incrinato, anche SHA e AES e così via ...

    
risposta data 25.02.2014 - 13:25
fonte

Leggi altre domande sui tag