2011-09-17 6 views
5

Ho visto raccomandazioni per utilizzare le password di bcrypt in hash per la sua capacità di tenere il passo con la legge di Moore.In che modo bcrypt tiene il passo con la legge di Moore?

Apparentemente la ragione di questo è perché ci vorrebbe molto più tempo per un utente malintenzionato per rompere un hash di bcrypt di un hash generato da una funzione di hash di uso generale come SHA256.

Com'è possibile? Come può un algoritmo essere deliberatamente lento nonostante la legge di Moore?

+1

Credo che Bcrypt impieghi un fattore di lavoro che può essere incrementato per aumentare il costo di generazione di un hash mentre i processori diventano più veloci. –

risposta

5

bcrypt è configurabile con un parametro denominato "fattore di lavoro". Internamente, eseguirà un'operazione simile all'hashing, molte volte in successione. Il "molti" è la parte che può essere configurata, fino a diversi miliardi. Quindi, per far fronte alla legge di Moore, basta alzare l'impostazione. Un'altra funzione che può essere eseguita lentamente come desiderato è PBKDF2 (vedere il parametro "conteggio dell'iterazione").

Si noti che il punto di rendere la password hashing lento è quello di rendere le cose difficili per l'attaccante, ma anche rende meccanicamente le cose con calma per i "sistemi di onesti" troppo; questo è un compromesso. Vedi this answer (su security.stackexchange) per maggiori dettagli.

+0

Il tuo contributo a questa domanda sarebbe molto apprezzato: http://stackoverflow.com/questions/7479442/high-quality-simple-random-password-generator/ – quantumSoup

5

Un utente malintenzionato vorrebbe provare tutti 216,553 english words.

Inoltre altri 12 bit di sforzo per the common variations, che consente di dire fornisce un elenco di 887.001.088 (2) password possibili.

bcrypt dura circa 4,342,912 (i.e. 222) operations to calculate one hash (at cost=12).

Un nucleo oggi fornisce circa 2 cicli/sec; lo stato dell'arte è 8 = 2 core per processore per un totale di 2 * 231 = 2 cicli/sec. Un server ha in genere 4 processori, aumentando il totale a 2 * 2 = 2 cicli/sec. cicli per calcolare un hash * 2 possibili (comune) password = 2 cicli da eseguire attraverso tutte le password (comune).

Ciò significa che ci vorrebbe un 4 processori, octo-core, server di circa 2 /2 = 2 secondi (9 ore) a correre attraverso tutte le password comuni.

In realtà la mia password non è comune, e utilizza circa 44-bit. 2 password * 2 cicli per password = 2 cicli per provare tutte le password non comuni. 2 /2 cicli/secondo = 2 secondi (34 anni) per trovare la mia password.

legge di Moore dice che la potenza di elaborazione raddoppia ogni 18 mesi.

  • oggi: 34 anni per trovare la password raro
  • 1,5 anni: 17 anni
  • 3 anni: 8,5 anni
  • 4,5: 4,25 anni
  • 6 anni: 2.125 anni
  • 7.5 anni: 1 anno
  • 9 anni: 6 mesi
  • 10,5 anni: 3 mesi
  • 12 anni: 6 settimane
  • 13,5 anni: 3 settimane
  • 15 anni: 10 giorni
  • 17,5 anni: 5 giorni
  • 19 anni: 63 ore
  • 20,5 anni: 31 ore

Questo è ora bcrypt in contrasto con la legge di Moore.

Aumentare la costo fattore da a e che doppie i tempi coinvolti.