Calcolatrice della robustezza password
Risultato
Entropia
- Caratteri disponibili
- 62
- Entropia per carattere
- 5,95 bit
- Combinazioni (potenza di 10)
- 28
La robustezza di una password è aritmetica, e questa calcolatrice fa l'aritmetica invece di tirare a indovinare. Scegli una lunghezza e un insieme di caratteri e ottieni la dimensione del pool che quelle scelte descrivono, l'entropia in bit e quanto tempo impiega una scheda grafica moderna a provare tutte le combinazioni — con un hash veloce e con uno lento configurato bene. Lo scarto fra questi due ultimi numeri è la cosa più utile della pagina: la stessa password che cade in tre anni contro un database di MD5 trafugato resiste milioni di anni contro bcrypt. La lunghezza è l'altra metà della questione. Ogni carattere in più moltiplica il lavoro per la dimensione del pool, mentre aggiungere un intero set di caratteri a una lunghezza fissa lo moltiplica una volta sola.
Tempo di crack per fascia di entropia
| Fascia | Entropia | Combinazioni | Secondi a 10^10/s | Secondi a 10^4/s |
|---|---|---|---|---|
| Debole | 28 – 35 bit | 8 | -2 | 4 |
| Discreta | 36 – 59 bit | 10 | 0 | 6 |
| Robusta | 60 – 127 bit | 18 | 8 | 14 |
| Molto robusta | 128 bit e oltre | 38 | 28 | 34 |
Leggi le ultime due colonne come potenze di dieci: -2 significa 10^-2 secondi, 3 significa mille secondi. La colonna di destra è lo stesso attaccante contro un hash lento configurato bene, quindi le due differiscono di un fattore un milione. L'entropia è il limite inferiore della fascia, ed è per questo che questa tabella e il badge di robustezza vanno sempre d'accordo. Le combinazioni sono arrotondate per difetto a una potenza di dieci, così non sono mai sovrastimate.
Formula
entropia (bit) = lunghezza della password × log₂(dimensione del pool), e il numero di combinazioni è 2^entropia
- lunghezza della password
- Da quanti caratteri è fatta la password
- dimensione del pool
- Quanti caratteri distinti sono disponibili: 26 minuscole, 26 maiuscole, 10 cifre, 32 simboli
- log₂
- Logaritmo in base 2, così il risultato si conta in bit
Usala per confrontare due politiche di password prima di scriverne una, o per controllare se una password che hai già vale la pena di essere tenuta. È esatta per una password generata a caso da un insieme di caratteri noto, e solo un limite superiore per una inventata da una persona — la gente sceglie schemi, quindi una password di 12 caratteri messa insieme a mano ha molta meno entropia di 12 caratteri casuali. La forza bruta non è nemmeno l'unico attacco: una password riusata su più siti è compromessa dalla violazione dell'altro sito, e lì nessuna lunghezza aiuta.
Esempi svolti
16 caratteri, lettere e cifre
- Pool: 26 + 26 + 10 = 62 caratteri
- Entropia per carattere: log₂(62) = 5,95 bit
- Entropia totale: 16 × 5,95 = 95,3 bit
- Combinazioni: 10^28 — lo strumento riporta la potenza di dieci invece di tutte le 29 cifre
95,3 bit superano di molto la fascia dei 60 e finiscono nella fascia più alta, quella che di norma si riserva ai 128. Attivando anche i simboli il pool passerebbe a 94 e l'entropia a 104,6 bit — valgono 9,3 bit, che è come aggiungere circa 1,6 caratteri.
8 caratteri, solo minuscole
- Pool: 26 caratteri
- Entropia per carattere: log₂(26) = 4,70 bit
- Entropia totale: 8 × 4,70 = 37,6 bit
- Combinazioni: 2^37,6 ≈ 2,1 × 10^11, quindi 10^11
37,6 bit cadono nella fascia discreta — all'incirca sette secondi di lavoro per un hash veloce su una scheda. Raddoppiare la lunghezza a 16 caratteri la porta a 75,2 bit, mentre lasciare la lunghezza a 8 e accendere tutti gli insiemi di caratteri arriva solo a 52,5 bit. La lunghezza fa più di quanto faccia la varietà, a parità di tasti premuti.
Limiti
Il valore dell'entropia presuppone che la password sia stata generata in modo uniforme e casuale dall'insieme di caratteri che hai selezionato. Qualunque password scelta a mano da una persona ne ha meno, spesso molto meno, perché la gente va a prendere parole, date e schemi di tastiera che uno strumento di cracking prova per primi. Questa pagina misura quindi la politica, non la password. I tempi di crack sono stime di ordine di grandezza da una singola GPU moderna, non la misura di una macchina precisa: un attaccante determinato con un cluster, o semplicemente con una scheda più recente, li batte di un fattore enorme, e un database di hash rubato può essere attaccato offline per tutto il tempo che l'attaccante vuole. Qui non si tiene conto del fatto che la password sia riusata, phishata, intercettata da un keylogger o reimpostata passando dal supporto — è così che le password cadono davvero, e nessuna di queste cose è influenzata dall'entropia. Infine, la pagina non ti genera una password, per la ragione spiegata all'inizio: un generatore sicuro ha bisogno di una sorgente casuale crittografica, che un calcolo puro non può essere.
Domande frequenti
- Come si calcola l'entropia di una password?
- L'entropia è la lunghezza della password moltiplicata per il logaritmo in base 2 della dimensione del pool. Scegliere lettere minuscole, lettere maiuscole e cifre dà un pool di 62 caratteri, log₂(62) vale 5,95 bit per carattere, e una password di 16 caratteri presa da quel pool porta quindi 95,3 bit. Il numero di combinazioni possibili è 2 elevato all'entropia, ed è per questo che l'entropia è l'unità utile: si somma quando la password si allunga.
- 60 bit di entropia bastano, e come si legge il tempo di crack?
- Dipende interamente da come il sito conserva la tua password. A 10^10 tentativi al secondo — una scheda moderna contro un hash veloce non salato — 60 bit sono circa tre anni di lavoro continuo. Contro bcrypt a cost 12 la stessa scheda fa circa 10^4 tentativi al secondo e la stessa password impiega milioni di anni. Quindi 60 bit bastano contro un sito competente e sono al limite contro uno distratto; 80 bit bastano contro entrambi.
- Meglio usare simboli e maiuscole, o semplicemente farla più lunga?
- Più lunga è di solito lo scambio migliore, e sempre quello più facile da ricordare. Passare da una password di 8 caratteri minuscoli a 16 caratteri vale 37,6 bit; tenerla a 8 caratteri ma accendere tutti gli insiemi di caratteri ne vale 15. Il pool si moltiplica una volta sola quando lo allarghi, mentre ogni carattere aggiunto moltiplica di nuovo. Usa i simboli quando un sito li pretende, non perché siano il modo efficiente di aggiungere robustezza.
- Perché questa pagina non mi genera una password?
- Una password è imprevedibile solo quanto la sorgente di casualità che ci sta dietro, e una pagina che calcola un numero da mostrare non può anche attingere a una sorgente casuale crittograficamente sicura — quella sorgente è esattamente ciò che distingue un generatore da una calcolatrice. Usa il generatore del tuo gestore di password o quello del tuo sistema operativo, che ce l'hanno, e poi usa questa pagina per controllare che la lunghezza e gli insiemi di caratteri scelti lì valgano la pena.
- Una password più lunga è sempre più robusta?
- Solo se è stata generata a caso. La lunghezza è ciò che l'aritmetica premia, ed è l'aritmetica il motivo per cui una passphrase di quattro parole può battere un breve guazzabuglio di simboli — ma una password di 20 caratteri costruita con un verso di una canzone, una data di nascita e un nome si apre con un dizionario, e la sua robustezza reale non assomiglia per niente ai 20 caratteri casuali che questa pagina misura. Questa pagina ti dà il tetto di una politica di password; una password inventata da una persona sta molto sotto.
Riferimenti
- NIST Special Publication 800-63B: Digital Identity Guidelines — Authentication and Lifecycle Management — National Institute of Standards and Technology
- NIST Special Publication 800-57 Part 1 Revision 5: Recommendation for Key Management — National Institute of Standards and Technology
- Password Storage Cheat Sheet — OWASP Foundation