Quanto è debole MD5 come funzione di hashing della password?

16

Un professore ci ha detto oggi che MD5 è debole. Capisco la sua catena di pensiero ma ho sottolineato che IMHO MD5 è un buon modo per andare se si usassero un lungo (anche molto lungo) sali dinamici e pepe statico.

Mi ha fissato e ha detto NO!

IMHO la possibilità di "brute-force" un hash MD5 con un dizionario qualsiasi è anche semplice. Se si usasse un sale dinamico / vario, si sarebbe indurito per ottenere una corrispondenza con una complessità di O (2 ^ n) e se io uso un pepe prima e dopo il mio hash della password salata non sarebbe sicuro al 100% ma potrebbe prendere a lungo per calcolarlo ..

    
posta Alex Tape 28.02.2014 - 17:18
fonte

2 risposte

30

Ci sono molti difetti di crittografia noti in MD5 che lo rendono inutilizzabile come algoritmo di digest del messaggio, ma non tutti si applicano anche nel contesto dell'hash della password. Ma anche quando supponiamo che questi non esistano, MD5 è ancora un algoritmo di hashing delle password errate per un semplice motivo: È troppo veloce .

In ogni scenario in cui un utente malintenzionato ha ottenuto le password con hash, devi presumere che abbiano ottenuto anche il sale di ciascuna password e il pepe.

L'unica ragione per usare un pepe è che non puoi usare una tabella arcobaleno precalcolata prima dell'attacco, perché ne hai bisogno di una diversa per ogni database. L'unica ragione per utilizzare un salt è quindi non è possibile utilizzare la stessa tabella arcobaleno per l'intero database delle password, perché la stessa password per due account diversi avrà un hash diverso.

La lunghezza di pepe e sale non ha importanza. Il loro unico scopo è assicurarsi che ogni valore sia unico. Più lunghezza non rende l'attacco notevolmente più difficile (ci sono più dati per l'hash, ma al massimo è un aumento lineare).

La linea di fondo è che un breve spazio è tutto ciò che è necessario per assicurarsi che l'attaccante abbia la forza bruta di forzare tutte le password possibili per trovare l'hash corretto per ogni singolo account.

Ed è qui che entra in gioco la debolezza di MD5: è un algoritmo veloce e che conserva la memoria. Ciò significa che un utente malintenzionato può calcolare l'hash di un numero elevato di password al secondo. Usando hardware specializzato (come gli array FPGA o ASIC) del valore di qualche migliaio di dollari, puoi calcolare gli hash di tutte le possibili password di 8 caratteri per un dato sale in poche ore.

Per maggiore sicurezza, usa un algoritmo lento come bcrypt. Significa che il tuo sistema ha bisogno di più cicli di CPU per autenticare gli utenti, ma il guadagno di solito vale la pena perché un hacker avrà anche bisogno di molto più potenza di elaborazione per forzare il tuo database delle password in caso di ottenerlo.

    
risposta data 28.02.2014 - 17:38
fonte
13

La gravità del pericolo nell'utilizzo di MD5 dipende da cosa lo stai usando, ma non ci sono motivi validi per usarlo affatto.

MD5 assolutamente non deve essere usato per le firme perché è possibile (e continua a diventare più possibile nel tempo) per aggirare le protezioni offerte dalla firma quando viene usato MD5.

Se, d'altra parte, il tuo scopo è sbiancare dati casuali per ottenere una distribuzione più coerente di uno e zero , quindi MD5 è buono come non mai. Si noti che questa operazione non è sensibile alla sicurezza ; non esiste un vettore di attacco perché non c'è un bersaglio, nulla da guadagnare o perdere attraverso la conoscenza dell'algoritmo, solo una semplice trasformazione in cui l'output è veramente casuale perché l'input è veramente casuale.

Da qualche parte tra questi due estremi troverai tutte le altre operazioni. Poiché aumenta la sensibilità di ciò che stai facendo e la tua dipendenza irreversibile dall'hash crittografico, aumenta anche il pericolo nell'utilizzo di MD5.

Ma la migliore ragione per non usare MD5 è la migliore ragione per non usare il triple-DES: ci sono opzioni migliori disponibili e nessun vantaggio per usare il vecchio algoritmo. MD5 è morto; potrebbe essere utile in alcune circostanze limitate, ma l'opzione migliore è quella di evitarlo completamente in modo da non utilizzarlo accidentalmente in un luogo dove la sicurezza è importante.

    
risposta data 28.02.2014 - 20:05
fonte

Leggi altre domande sui tag