La resistenza brute-force di bcrypt vs MD5 per l'hashing della password?

6

Qualcuno può darmi un'idea? Supponiamo che il sale (s) è / sono conosciuto.

Ad esempio, se ho una password lunga $ k -character hash in MD5 contro bcrypt, c'è un modo per stimare quanto tempo ci vorrebbe per la forza bruta in bcrypt contro MD5?

So che questa è una domanda vaga che dipende da molti fattori, ma sentiti libero di assumere qualsiasi fattore tu voglia. Sto solo cercando di avere un'idea intuitiva delle differenze.

    
posta user49572 18.06.2014 - 21:36
fonte

1 risposta

15

Bcrypt usa un conteggio di iterazione configurabile, quindi la risposta alla tua domanda è: qualunque cosa tu voglia essere .

Se il numero di iterazioni è tale che una chiamata di bcrypt costa quanto 10 calcoli di MD5, allora la forzatura bruta della password sarà 10 volte più costosa con bcrypt che con MD5.

Se il numero di iterazioni è tale che una chiamata di bcrypt è costosa come 10 milioni di calcoli di MD5, allora la forzatura bruta della password sarà 10 milioni più costosa con bcrypt che con MD5.

Questo è il punto di avere lentezza configurabile : puoi rendere la funzione lenta come desideri. O, più precisamente, il più lento possibile: infatti, una funzione lenta è lenta per tutti, attaccante e difensore allo stesso modo.

Un altro fattore è che bcrypt è, per sua natura, abbastanza ostile all'ottimizzazione della GPU; questo è dovuto al tipo di operazioni che vengono utilizzate all'interno dell'algoritmo. Al confronto, MD5 è molto facile da implementare ed eseguire in modo efficiente su una GPU. Ciò significa che un utente malintenzionato può ottenere un sostanziale aumento di una GPU durante la violazione delle password protette da MD5; mentre con bcrypt avrà bisogno di usare lo stesso tipo di CPU del difensore. Vedi questa risposta per ulteriori dettagli.

Se vogliamo alcune cifre realistiche: con una buona GPU (disponibile in commercio, poche centinaia di dollari), la velocità MD5 può raggiungere, per esempio, 10 miliardi di istanze al secondo (vedi benchmark there ; la macchina che arriva a 93 miliardi al secondo contiene 8 GPU). Tuttavia, con bcrypt, sarebbe consuetudine eseguire il conteggio del numero di iterazioni in modo che ogni hashing richieda 0,1 s sul server. Invece di acquistare una GPU, l'hacker acquisterà (o noleggerà) un paio di CPU multi-core e sarà in grado di provare, ad esempio, 100 password al secondo. Con queste cifre, si può dire che bcrypt renderà le password 100 milioni di volte più robuste di MD5.

    
risposta data 18.06.2014 - 21:53
fonte

Leggi altre domande sui tag