it-swarm.dev

Quanto è debole MD5 come funzione di hashing della password?

Un professore ci ha detto oggi che MD5 è debole. Capisco la sua catena di pensieri, ma ho sottolineato che l'IMHO MD5 è un buon modo di procedere se utilizzassi un sale dinamico (anche molto lungo) e pepe statico.

Mi fissò e disse NO!

IMHO la possibilità di "forza bruta" un hash md5 con qualsiasi dizionario è persino semplice. Se utilizzassi un sale dinamico/vario sarebbe indurito per ottenere una corrispondenza con una complessità di O (2 ^ n) e se uso un pepe prima e dopo l'hash della mia password salata non sarebbe sicuro al 100% ma potrebbe richiedere molto tempo per calcolarlo ..

16
Alex Tape

Esistono molte debolezze crittografiche note in MD5 che la rendono inutilizzabile come algoritmo di digest dei messaggi, ma non tutte si applicano anche nel contesto dell'hash delle password. Ma anche quando supponiamo che questi non esistano, MD5 è ancora un algoritmo di hashing delle password non valido per un semplice motivo: È troppo veloce.

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

L'unico motivo per utilizzare un peperone è quindi non è possibile utilizzare una tabella Rainbow precompilata prima dell'attacco, perché è necessaria una diversa per ciascun database. L'unico motivo per utilizzare un salt è quindi non è possibile utilizzare la stessa tabella Rainbow per l'intero database delle password, poiché la stessa password per due account diversi avrà un hash diverso.

La lunghezza di pepe e sale non ha molta importanza. Il loro unico scopo è assicurarsi che ciascun valore sia unico. Una maggiore lunghezza non rende l'attacco particolarmente difficile (ci sono più dati nell'hash, ma questo è un aumento lineare al massimo).

In conclusione, è sufficiente un breve saltino per assicurarsi che l'attaccante debba forzare brutalmente 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 risparmia memoria. Ciò significa che un utente malintenzionato può calcolare l'hash di un gran numero di password al secondo. Utilizzando hardware specializzato (come array FPGA o ASIC) del valore di alcune migliaia di dollari, è possibile calcolare gli hash di tutte le possibili password di 8 caratteri per un dato sale in poche ore.

Per una migliore sicurezza, utilizzare un algoritmo lento come bcrypt. Significa che il tuo sistema ha bisogno di alcuni cicli di CPU in più per autenticare gli utenti, ma di solito ne vale la pena perché un utente malintenzionato avrà bisogno di molta più potenza di elaborazione per forzare il database delle password in caso di ottenimento.

31
Philipp

La gravità del pericolo nell'uso di MD5 dipende da cosa lo stai usando, ma non c'è motivo valido per usarlo.

MD5 non deve assolutamente essere utilizzato per le firme perché è possibile (e continua a diventare altro possibile nel tempo) aggirare le protezioni offerte dalla firma quando si utilizza MD5.

Se, d'altra parte, il tuo scopo è sbiancamento dati casuali per ottenere una distribuzione più coerente di uno e zero, allora MD5 è buono come non lo è mai stato. Nota che questa non è un'operazione sensibile alla sicurezza ; non esiste un vettore di attacco perché non esiste 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. Con l'aumentare della sensibilità di ciò che stai facendo e della tua dipendenza irreversibilmente dall'hash crittografico, aumenta anche il pericolo nell'uso di MD5.

Ma il miglior motivo per non usare MD5 è lo stesso del miglior motivo per non usare triple-DES: ci sono opzioni migliori disponibili e nessun vantaggio nell'usare il vecchio algoritmo. MD5 è morto; potrebbe essere utile in determinate circostanze limitate, ma l'opzione migliore è evitarlo del tutto in modo da non utilizzarlo accidentalmente in un luogo in cui la sicurezza è importante.

13
tylerl