Perché MD5 è considerato un algoritmo vulnerabile?

7

So che MD5 è l'algoritmo di hashing più vulnerabile e particolarmente vulnerabile alle Collisioni. Ma la vulnerabilità di collisione non è molto rischiosa e qualcuno potrebbe usarlo come vantaggio, ma è con grande fortuna.

OK, diciamo che memorizzo le password usando MD5. Ci sono alcune stringhe in conflitto qui: link Ma è molto meno probabile che un utente possa utilizzare questo tipo di stringhe come password. Ecco perché dipende dalla fortuna.

E ora, diciamo che un utente ha usato una di queste stringhe. Affinché un utente malintenzionato possa utilizzare questa vulnerabilità di collisione, deve conoscere la password originale e sapere che c'è un'altra stringa in collisione per essa. Ma se l'hacker conosce già la password originale, perché preoccuparsi della collisione? C'è un modo in cui l'attaccante può usarlo come vantaggio?

    
posta mzcoxfde 30.09.2016 - 18:09
fonte

2 risposte

9

I know that MD5 is the most vulnerable hashing algorithm

Bene tecnicamente (siamo tecnici qui intorno) ci sono algoritmi peggiori di MD5.

and particularly vulnerable to Collisions

Sì, la gente può creare un hash desiderato con un testo in chiaro diverso. È improbabile che ciò avvenga in modo casuale, ma potrebbe verificarsi maliziosamente.

But the collision vulnerability is not very risky and somebody might use that as an advantage, but that's with sheer luck.

Non pura fortuna. Esistono tecniche per trovare un testo in chiaro che produce un MD5 desiderato. È un buon argomento per una domanda diversa.

OK, let's say I store passwords using MD5.

Ouch. Il motivo principale per cui non devi utilizzare MD5 è perché è un hash Scopo generale (veloce) .

Dovresti utilizzare un hash della password (lento) come

  • BCrypt è comunemente raccomandato , ma assicurati di eseguire un rapido hash SHA-2 sui dati di input, in modo che le password super-lunghe non vengano troncate da BCrypt
  • PBKDF2 ma è meno resistente alla GPU perché ha requisiti di memoria inferiori.
  • SCrypt è migliore di BCrypt se hai un fattore di lavoro abbastanza alto. Altrimenti è peggio contro le GPU. (ancora, a causa di requisiti di memoria più alti o più bassi)
  • Il vincitore del Concorso di hashing password potrebbe essere persino migliore di quanto sopra, ma non ha ancora superato la prova del tempo, quindi non usarlo ancora. Si chiama Argon2 e ha impostazioni del fattore di lavoro separate per il tempo della CPU e il carico della memoria. (Bello!)
  • È possibile utilizzare SHA-2 ripetitivo al posto di PBKDF2 (non ancora resistente alla GPU), ma è più difficile implementare la ripetizione in modo efficiente (ovvero essere resistente alla forza bruta) poiché SHA-2 è in realtà uno Scopo generale (Veloce ) Hash.

La maggior parte di queste opzioni genera Salt casuale per impostazione predefinita, ma è necessario verificare se questo è il caso!

È meglio includere un po 'di pepe (~ 72 bit di entropia) prima della password prima dell'hashing. Il Pepper può essere uguale per tutti gli utenti, ma deve essere memorizzato in un file al di fuori del database, in modo che il componente non possa essere trovato tramite SQL Injection.

Assicurati che il tuo fattore di lavoro richieda circa 100 ms (con protezione DoS appropriata) sull'hardware di destinazione (sapendo che gli hacker useranno hardware più veloce per la forza bruta)

Ovviamente nessuna quantità di hashing proteggerà il% debole dipassword s, quindi includi i requisiti di forza della password.

collision vulnerability ... is there any way that the attacker can use this as an advantage?

Nel contesto della memorizzazione delle hash delle password questo probabilmente non aiuterà l'aggressore.

    
risposta data 30.09.2016 - 18:30
fonte
1

Il motivo principale per cui gli algoritmi di hash vengono attaccati oggigiorno non ha nulla a che fare con le password. Credo che MD5 sia ancora abbastanza sicuro quando si parla di hashing delle password. a condizione di usare sali per sconfiggere le tabelle arcobaleno e iterare l'algoritmo molte volte per rallentare l'ipotesi della forza bruta (comunque dovresti davvero usare un algoritmo standard invece ). Il problema è con le firme digitali oi certificati X.509, rispettivamente.

Da 10 anni c'è il "prescelto attacco prefisso" sulle firme usando md5. Nel 2006 o 2007 un team di Arjen Lenstra dell'università tecnica Eindhoven ha creato un certificato canaglia che aveva lo stesso hash MD5 di uno rilasciato da un'AIC commerciale. L'attacco richiedeva una notevole potenza di calcolo e l'installazione era estremamente sofisticata, ma il risultato è stato che MD5 è stato compromesso. Vedi qui e qui .

La stessa tecnica è stata impiegata anche nel famoso attacco FLAME.

Come hai notato correttamente, quando si parla di hash delle password, la situazione è completamente diversa perché una collisione deve essere generata senza conoscere il testo normale. Quando si tratta di firme digitali, il testo in chiaro è generalmente noto e, naturalmente, questo apre ulteriori vettori di attacco come mostra il lavoro sopra citato.

    
risposta data 30.09.2016 - 22:02
fonte

Leggi altre domande sui tag