A quanto ho capito, la quantità di entropia in una password rappresenta il numero di tentativi necessari per sapere qual è la password. Ogni bit è una singola decisione sì o no e, idealmente, l'autore dell'attacco otterrebbe un risultato "password corretta" o "password errata" (quindi, devono indovinare l'intera faccenda, tutto in una volta). Per n bit di entropia, ciò richiede 2 ^ n ipotesi.
La forza desiderata dipende dal tipo di minaccia che ti aspetti di affrontare. In particolare, dipende dalla velocità con cui l'attaccante può indovinare e da quanto tempo ci si aspetta che l'attaccante continui a provare.
Una volta che hai quei numeri, la tua entropia minima di destinazione (in bit) dovrebbe essere:
n = log_2(totalGuesses) = log_2(guesses/sec * durationInSeconds)
La persistenza dell'attaccante è qualcosa che non so come valutare. Per ragioni, supponiamo che tu voglia che la tua password sia sicura per 1 settimana dopo che l'hacker ha iniziato a indovinare.
Il numero di ipotesi al secondo dipende dal modo in cui la password è protetta e dal tipo di accesso che ha l'utente malintenzionato. Per un attacco online (ad esempio, provando il modulo di accesso di un sito Web), è possibile limitarlo ad un valore piuttosto basso; 10 al secondo sarebbe raggiungibile. Per MD5 non salato, è più sicuro assumere miliardi di ipotesi al secondo. Per un algoritmo di hash strong come bcrypt, sarà in qualche modo intermedio (MOLTO più lento di MD5, in ogni caso).
Quindi, con 1 miliardo di hash al secondo (cracking MD5 offline), dovresti difenderti da circa 6 * 10 ^ 14 ipotesi, richiedendo circa 49 bit di entropia. A 10 ipotesi al secondo (online, attacco a tasso limitato), devi difenderti da circa 6 * 10 ^ 6 ipotesi, quindi hai bisogno di circa 22. bit di entropia.
Naturalmente, le stime per carattere dell'entropia di Shannon non stimano accuratamente la difficoltà di crackare una password e l'errore percentuale varierà in modo selvaggio a seconda di vari fattori. L'approccio che stai prendendo fornirà solo risultati ragionevolmente accurati per le password generate dal computer, NON per le password generate dagli utenti.