Una password generata vale quanto la casualità che c'è dietro e la lunghezza che le dai. Questo strumento attinge da crypto.getRandomValues — la sorgente casuale crittograficamente sicura del browser — e il default di 16 caratteri da un alfabeto di 62 simboli ti dà circa 95 bit di entropia. Cosa significhi quel numero, e quali delle caselle contino davvero, vale due minuti.
L'entropia è la lunghezza per il logaritmo dell'alfabeto
La forza di una password casuale è log2(dimensione_alfabeto) × lunghezza, e vale la pena avere l'aritmetica sotto mano perché chiude le discussioni. Ogni carattere preso da un insieme di 62 simboli (A–Z, a–z, 0–9) contribuisce 5,95 bit. Sedici di questi fanno 95,3 bit.
Per dare una prospettiva a 95 bit: un attaccante con una copia offline dell'hash, che tira mille miliardi di tentativi al secondo su hardware serio, avrebbe bisogno dell'ordine di 600 milioni di anni per coprire metà dello spazio. Non è un numero che peggiori in modo significativo con hardware migliore. Una password di questa lunghezza da questo alfabeto non è ciò che verrà violato.
La lunghezza batte i simboli, e non è nemmeno vicina
Ecco il calcolo che dovrebbe cambiare come usi questo strumento. Attivare la casella dei simboli fa crescere l'alfabeto da 62 a 88 e porta una password da 16 caratteri da 95,3 a 103,4 bit: un guadagno di 8,1 bit. Trascinare invece lo slider della lunghezza da 16 a 20 ti porta a 119,1 bit: un guadagno di 23,8.
Quattro caratteri in più valgono tre volte tutta la punteggiatura della tastiera. È perché la lunghezza è un moltiplicatore sull'esponente mentre l'alfabeto è solo la base. I simboli ti costano anche altro: rompono il copia-incolla in certi terminali, vengono storpiati da sistemi che filtrano l'input, e restano il motivo per cui un numero deprimente di siti rifiuta ancora password perfettamente buone. Se devi scegliere, scegli la lunghezza.
La sorgente casuale è la parte che può essere catastroficamente sbagliata
Un generatore di password ha un lavoro che non deve sbagliare, ed è invisibile dall'esterno. crypto.getRandomValues è un generatore crittograficamente sicuro: il suo output non è prevedibile nemmeno da chi ne ha visto moltissimo. Math.random no. V8 implementa Math.random con xorshift128+, un algoritmo pensato per velocità e qualità statistica: osservane abbastanza output e il suo stato interno può essere ricostruito, e ogni valore che produrrà diventa prevedibile.
Un generatore di password costruito su Math.random produce output che a te sembra perfettamente casuale, supera ogni ispezione visiva, ed è una catastrofe. Non è una modalità di guasto ipotetica: è successo ripetutamente in software distribuito. Questo strumento usa getRandomValues, che è l'unica risposta accettabile, e vale la pena sapere che la domanda esiste così puoi farla a qualsiasi altro generatore tu usi.
Cosa dicono davvero le linee guida oggi
Il NIST SP 800-63B è stato riscritto anni fa e la maggior parte delle regole sulle password che ancora si impongono ne sono state rimosse. Le regole di composizione — deve contenere una maiuscola, un numero, un simbolo — sono esplicitamente scoraggiate, perché spingono gli umani verso sostituzioni prevedibili. Password1! soddisfa ogni regola ed è in ogni dizionario di cracking.
Anche la rotazione periodica forzata è sparita, salvo evidenza di compromissione. Peggiorava le password invece di migliorarle: a chi è chiesto di cambiare ogni trimestre produce Estate2024, Autunno2024, Inverno2024. Quello che le linee guida chiedono invece è una lunghezza minima, un massimo generoso, il permesso di usare ogni carattere inclusi spazi ed emoji, e un controllo contro le liste di password già trafugate. Quest'ultimo è il controllo di gran lunga più prezioso, perché l'attacco realistico non è la forza bruta contro 95 bit: è provare una password già trapelata da qualche altra parte.
Le passphrase, e dove stanno
Quattro parole estratte a caso da una lista Diceware di 7.776 parole fanno 51,7 bit. Cinque fanno 64,6, sei fanno 77,5. È ben sotto i 95 bit di una stringa casuale da 16 caratteri, il che sorprende chi ha visto la famosa vignetta di xkcd.
Il senso di una passphrase non è mai stato che sia più forte: è che un umano può memorizzarla e quindi non la scriverà su un post-it né la riuserà. Quel compromesso conta per la manciata di password che devi davvero ricordare: l'accesso al dispositivo, la master password del gestore. Per le altre diverse centinaia, la memorabilità è irrilevante, perché a ricordare ci pensa il gestore. Usa una passphrase dove c'è di mezzo un cervello, e una lunga stringa casuale ovunque altro.
Domande frequenti
Le password vengono generate su un server?
No. Questo strumento è marcato "client": ogni password è prodotta nella scheda del tuo browser dalla sua sorgente casuale e non viene trasmesso niente. Non esiste un registro da nessuna parte, qui incluso. Detto questo, l'abitudine più sicura con qualsiasi generatore web è trattare una password generata in un browser come leggermente meno privata di una generata localmente dal tuo gestore di password: non per questa pagina in particolare, ma perché una scheda del browser è un posto affollato, con dentro le estensioni.
Quanto dovrebbe essere lunga la mia password?
Sedici caratteri casuali sono oltre il punto in cui la lunghezza è il tuo problema, ed è il default qui per questo motivo. Sotto i 12 circa sei in un territorio dove un attacco offline determinato è plausibile. Sopra i 20 circa stai ottimizzando qualcosa che già non aveva possibilità realistiche di essere forzato, e otterresti più sicurezza attivando l'autenticazione a due fattori.
Devo escludere i caratteri ambigui?
Solo quando un umano deve leggere la password attraverso uno spazio: da uno schermo a un telefono, per telefono, da un cartoncino stampato. Rimuovere l, 1, I, 0 e O restringe l'alfabeto, quindi ti costa un po' di entropia: a 16 caratteri la perdita è sotto i 2 bit, che è niente. Quando nessuno la legge, lasciali dentro.
Perché la stessa password mostra una forza diversa su siti diversi?
Perché la maggior parte degli indicatori stima come un umano avrebbe costruito la password, non quanta entropia abbia davvero. Cercano parole di dizionario, sequenze di tastiera, date, sostituzioni l33t. Contro una stringa davvero casuale quelle euristiche non hanno appigli, quindi il punteggio è in realtà solo una funzione di lunghezza e varietà di caratteri: è per questo che un indicatore valuterà allegramente Password1! come "forte" mentre sta in ogni wordlist di cracking.
È sicuro riusare una sola password molto forte ovunque?
No, ed è la cosa più importante di questa pagina. L'entropia protegge dall'indovinare; non fa assolutamente nulla contro una violazione. Quando un sito conserva male la tua password e viene violato — cosa che succede di continuo — la forza della password è irrilevante, perché ora l'attaccante ce l'ha. Poi la proverà sulla tua email, e se funziona, tutto il resto segue. Le password uniche non riguardano la forza. Riguardano il contenimento.