Ricordare che il valore è memorizzato nella password: $2a$(2 chars work)$(22 chars salt)(31 chars hash)
. Non è un valore fisso.
Se si trova che il carico è troppo alto, è sufficiente farlo in modo che la prossima volta che effettuano l'accesso, si cripta a qualcosa di più veloce da calcolare. Allo stesso modo, man mano che il tempo passa e ottieni server migliori, se il carico non è un problema, puoi aggiornare la forza del loro hash quando effettuano l'accesso.
Il trucco è di mantenerla impiegando all'incirca lo stesso tempo per sempre nel futuro insieme alla legge di Moore. Il numero è log2, quindi ogni volta che i computer raddoppieranno in velocità, aggiungere 1 al numero predefinito.
Decidi per quanto tempo desideri che la password dell'utente venga forzata. Ad esempio, per alcune parole comuni del dizionario, la creazione del tuo account probabilmente li avvisava che la loro password era debole. Se è una delle 1000 parole comuni, per esempio, e ci vuole un 0.1 attaccante per testare ciascuna, che le acquista 100s (beh, alcune parole sono più comuni ...). Se un utente sceglie "common dictionary word" + 2 numeri, sono oltre due ore. Se il tuo database delle password è compromesso e l'hacker può ottenere solo poche centinaia di password al giorno, hai acquistato la maggior parte dei tuoi utenti ore o giorni per cambiare in sicurezza le password. È questione di comprarli.
http://www.postgresql.org/docs/8.3/static/pgcrypto.html ha alcune volte per cracking password da prendere in considerazione. Naturalmente, le password che elencano sono lettere casuali. Le parole del dizionario ... In pratica non è possibile salvare il tizio la cui password è 12345.
Il costo ostacola gli attacchi offline. Quando "online" è possibile utilizzare un ritardo minimo tra i tentativi (ad esempio 5 secondi) per impedire un attacco denial of service. –
Duplicate on InformationSecurity: [Numero di round consigliati per bcrypt] (http://security.stackexchange.com/q/17207/46416) –
Per chiunque fosse interessato, ho appena scritto un piccolo strumento CLI Java per testare le prestazioni di bcrypt sui server (che è ovviamente importante per bilanciare sicurezza, carico del server e tempi di risposta): https://github.com/cdraeger/hash-performance – Blacklight