Vai al contenuto
Allin

Entropia delle password: che cosa un misuratore di robustezza non può sapere

Pubblicato il 06/07/2026 · 16 min di lettura · Strumenti per sviluppatori

Daniel Okonkwo

Daniel OkonkwoSviluppatore front-end e redattore Tech presso Allin

Performance web · Formati di file

Verificato su 6 fonti

Vedi il profilo
In breve

L'entropia è una proprietà del generatore, non della stringa. La formula H = L x log2(R) — lunghezza per il logaritmo in base 2 della dimensione dell'alfabeto — è esatta quando ciascuno degli L caratteri è stato estratto in modo uniformemente casuale fra R possibilità, e priva di senso altrimenti. Dodici caratteri casuali fra i 94 simboli ASCII stampabili danno 12 x 6,5546 = 78,66 bit, uno spazio di chiavi di 94^12 = 4,76 x 10^23. Una passphrase Diceware di quattro parole da una lista di 7 776 dà 4 x 12,9248 = 51,70 bit; sei parole danno 77,55. Sedici lettere minuscole casuali danno 16 x 4,7004 = 75,21 bit — più lunga della password da dodici caratteri e più debole di essa. Applica ora la stessa formula a P@ssw0rd123!: dodici caratteri, tutte e quattro le classi, 78,66 bit, e il misuratore dice eccellente. Non lo è, perché quei caratteri non sono stati scelti a caso. È una password da top dieci con sostituzioni leet prevedibili e un suffisso comune, cioè esattamente ciò che i set di regole di cracking codificano. Una lista da 10 milioni di parole incrociata con 10 000 regole fa 10^11 candidati, circa 36,5 bit — una sopravvalutazione di 42 bit, un fattore di 4 800 miliardi. E il tempo che quei bit ti comprano dipende interamente da come il difensore li conserva.

L'entropia misura il processo che ha prodotto una password, non i caratteri che contiene. H = L x log2(R) è vera solo quando ogni carattere è stato scelto davvero a caso — ed è esattamente per questo che un misuratore che valuta una password inventata da un umano in base alle classi di caratteri sta misurando la cosa sbagliata.

L'entropia appartiene al generatore, non alla stringa

Chiedere quanta entropia abbia la stringa correct-horse-battery-staple significa già porre male la domanda. Se quattro parole sono state estratte con i dadi da una lista pubblicata di 7 776 parole, la risposta è 51,70 bit. Se qualcuno le ha lette in una famosa striscia a fumetti e le ha digitate, la risposta è vicina a zero, perché i primissimi tentativi di un attaccante includeranno esattamente quella frase. Stessi caratteri, stessa lunghezza, stesse classi — sicurezza completamente diversa, perché l'entropia misura quanti esiti ugualmente probabili il processo avrebbe potuto produrre, e la stringa non dice quale sia stato il processo.

È per questo che l'intera disciplina parla di password generate. Un gestore che attinge da una sorgente casuale crittografica conosce R e L, quindi può dichiarare l'entropia esatta. Un umano alla tastiera non ha un R ben definito, perché le scelte umane non sono uniformi: certe lettere, certe sostituzioni, certi anni e certi schemi di tastiera sono molto più probabili di altri, e ogni strumento serio di cracking è costruito proprio attorno a quello sbilanciamento. Qualsiasi cifra attaccata a una password scelta da un umano è una congettura su quanto il modello dell'attaccante aderisca alle abitudini di quell'umano.

La formula e la condizione che le è legata

H = L x log2(R). Il logaritmo converte un conteggio di possibilità in bit, e moltiplicare per la lunghezza funziona perché ogni estrazione indipendente aggiunge i propri bit. log2(94) = 6,5546, quindi ogni carattere ASCII stampabile casuale in più aggiunge 6,5546 bit. log2(26) = 4,7004, quindi una lettera minuscola ne aggiunge di meno. log2(7 776) = 12,9248, quindi una parola Diceware aggiunge quasi il doppio di un carattere casuale — 7 776 è 6^5, cinque lanci di dado, ed è per questo che la lista ha esattamente quella dimensione.

La condizione è una selezione casuale uniforme e indipendente, ed è lei a fare tutto il lavoro. Infrangila e la formula smette silenziosamente di valere pur continuando a restituire un numero confortante. Scegli una parola che ti piace invece di tirare i dadi: R non è più 7 776. Metti la maiuscola alla prima lettera perché una policy lo impone: quella maiuscola non aggiunge alcuna entropia, perché lo fanno tutti. Aggiungi un punto esclamativo e un anno: quei caratteri allungano L sulla carta mentre il set di regole dell'attaccante li genera gratis. La formula non sa nulla di tutto ciò. Non le è mai stato detto quale fosse il processo.

C'è una terza grandezza che si aggroviglia con queste due, e vale la pena separarla. L'entropia di Shannon di una stringa, ciò che un calcolatore di entropia generico calcola, misura la distribuzione dei simboli dentro quella particolare stringa. Per P@ssw0rd123! risulta 3,4183 bit per carattere, perché alcuni caratteri si ripetono. Quel numero è davvero utile per la compressione e per individuare blocchi cifrati, e non dice assolutamente nulla su quanto sia difficile indovinare la password. Tre domande diverse, tre numeri diversi, e confonderli è all'origine di moltissimi cattivi consigli.

Che cosa misura davvero il misuratore

Il misuratore di robustezza classico conta le classi di caratteri. Minuscola presente, maiuscola presente, cifra presente, simbolo presente: quattro spunte, R = 94, si moltiplica per la lunghezza e si disegna una barra rassicurante. Dagli P@ssw0rd123! e calcola 12 x 6,5546 = 78,66 bit e definisce la password eccellente. Dagli i dodici caratteri davvero casuali che il tuo gestore ha appena prodotto e calcola esattamente gli stessi 78,66 bit. Il misuratore non li sa distinguere, perché ha guardato solo quali classi comparivano.

Un attaccante non si comporta mai così. Il cracking reale passa una wordlist attraverso un file di regole: regole che mettono la maiuscola, che scambiano a con @, o con 0 e s con $, che aggiungono anni a due e a quattro cifre e un punto esclamativo finale, che invertono, duplicano, troncano. Ogni trasformazione in P@ssw0rd123! è una regola standard. Prendi una wordlist da dieci milioni di voci e diecimila regole: lo spazio dei candidati è 10^11 — circa 36,5 bit, esaurito in un secondo a cento miliardi di tentativi al secondo. Rispetto ai 78,66 bit del misuratore è una sopravvalutazione di 42,11 bit, un fattore di 4 760 miliardi.

Esistono misuratori migliori e funzionano su un principio diverso. Invece di contare le classi, provano a ricostruire come la password è stata probabilmente costruita, confrontandola con dizionari, nomi comuni, date, percorsi di tastiera e ripetizioni, poi stimano quanti tentativi costerebbe la ricostruzione più economica. È un numero molto più onesto, e riesce comunque a vedere solo gli schemi che gli sono stati insegnati. La conclusione prudente è che un misuratore è un filtro contro l'ovviamente pessimo, non una misura. Se vuoi un numero su cui contare, genera la password e conta i bit che il generatore ha realmente speso.

Più lunga non è la stessa cosa che più forte

Due esempi calcolati chiariscono il punto in modo netto. Sedici lettere minuscole casuali danno 16 x 4,7004 = 75,21 bit. Dodici caratteri ASCII stampabili casuali danno 12 x 6,5546 = 78,66. La stringa da sedici caratteri è un terzo più lunga e 3,45 bit più debole — circa undici volte più facile da indovinare. Lunghezza e alfabeto si scambiano l'uno con l'altro, e conta solo il loro prodotto.

Il divario si allarga con le passphrase. Una passphrase Diceware da quattro parole supera facilmente i venti caratteri e porta comunque solo 51,70 bit, contro i 78,66 della password casuale da dodici caratteri. Sono 26,96 bit in meno, un fattore di 130 milioni. Le passphrase non sono deboli — sono meravigliosamente memorabili, e una da sei parole raggiunge 77,55 bit, di fatto pareggiando con i dodici caratteri casuali. Ma la forza viene dal numero di parole estratte, non dal numero di lettere digitate, e quattro parole non bastano per nulla che ti stia a cuore.

Il tempo di cracking è il numero del difensore, non il tuo

Convertire l'entropia in una durata richiede un input in più: il ritmo con cui l'attaccante può provare i candidati. In media trova la password dopo metà dello spazio delle chiavi, quindi il tempo atteso è 2^(H-1) diviso il ritmo dei tentativi. Tutto dipende da quel ritmo, e tu come utente non lo controlli. Lo controlla il servizio che conserva la tua password.

Prendi la passphrase Diceware da quattro parole, 51,70 bit, e varia solo la scelta di conservazione del difensore. Contro un hash veloce senza salt in cui un rack di GPU regge 10^11 tentativi al secondo, il tempo atteso è di 5,1 ore. Contro bcrypt con costo 12, dove lo stesso rack regge forse 10^4 al secondo, sono 5 790 anni. Contro Argon2id tarato su 64 MiB di memoria, dove il requisito di memoria blocca il parallelismo massiccio e il ritmo scende verso 10^3, sono 57 900 anni. Password identica. Entropia identica. Sette ordini di grandezza di differenza, decisi interamente da qualcun altro.

È questo il legame fra questo articolo e qualsiasi discussione sulle funzioni di hash. MD5 e SHA-256 sono stati progettati per il throughput e lo mantengono — oltre un gigabyte al secondo su un solo core — il che li rende esattamente sbagliati per la conservazione delle password. Argon2id, bcrypt e scrypt spendono di proposito tempo e memoria reali per tentativo. Quando leggi un titolo che sostiene che una password si cracca in tot ore, la prima domanda è quale hash quell'affermazione presupponeva, perché quella sola ipotesi sposta la risposta di un fattore dieci milioni.

Il riutilizzo batte l'entropia ogni volta

Tutta questa aritmetica non conta se la password è già stata pubblicata. Il credential stuffing non indovina affatto: prende coppie di nome utente e password da una violazione e le ripropone su ogni altro servizio, e funziona perché il riutilizzo è comune. Una password da 78,66 bit riutilizzata su due siti ha 78,66 bit sul sito che la conserva bene e zero su quello che l'ha persa in chiaro, e da lì in poi ha zero ovunque. L'entropia non è mai stata il punto di rottura.

Ecco perché le attuali indicazioni del NIST suonano così. La SP 800-63B ha abbandonato le vecchie regole di composizione — maiuscola obbligatoria, simbolo obbligatorio, rotazione forzata ogni novanta giorni — perché spingono le persone verso schemi prevedibili senza comprare entropia reale. Raccomanda invece una lunghezza minima generosa, nessun massimo arbitrario, nessun troncamento e il filtraggio delle password candidate contro liste di valori noti come violati. È quest'ultimo punto a beccare P@ssw0rd123!, cosa che nessun calcolo di entropia avrebbe fatto.

Che cosa fare concretamente

Genera, non inventare. Un gestore di password che attinge da una sorgente casuale crittografica è l'unico modo per conoscere la tua entropia invece di sperarla, ed elimina al tempo stesso il problema del riutilizzo. Per la manciata di segreti che devi digitare a memoria — la password principale del gestore, una passphrase di cifratura del disco, uno sblocco del dispositivo — usa una passphrase Diceware da sei parole a 77,55 bit, memorizzabile e fuori portata per un attacco a wordlist. Punta ad almeno 75 bit su tutto ciò che custodisce altre credenziali, e considera 50 bit come il pavimento per un account ordinario protetto da limitazione dei tentativi e un secondo fattore.

E costruisci bene l'altro lato, perché da sviluppatore sei tu il difensore la cui scelta decide i numeri della tabella qui sopra. Conserva le password con Argon2id dove puoi, bcrypt o scrypt dove non puoi, sempre con un salt unico. Non imporre una lunghezza massima né troncare in silenzio. Non forzare rotazioni periodiche. Filtra le password nuove contro una lista di password violate. Aggiungi un secondo fattore, che vale più bit di quanti qualsiasi policy sulle password estrarrà mai dai tuoi utenti.

Cinque ricette, la loro entropia reale secondo H = L x log2(R) e il tempo atteso per indovinarle con due scelte del difensore molto diverse
RicettaR e LEntropiaTempo atteso a 10^11 tentativi/s (hash veloce senza salt)Tempo atteso a 10^4 tentativi/s (bcrypt costo 12)
P@ssw0rd123! — inventata da una personaIl misuratore assume R=94, L=1278,66 dichiarati, circa 36,5 reali0,5 secondi58 giorni
Passphrase Diceware da 4 paroleR=7 776, L=451,70 bit5,1 ore5 790 anni
16 lettere minuscole casualiR=26, L=1675,21 bit6 910 anni6,9 x 10^10 anni
12 caratteri ASCII stampabili casualiR=94, L=1278,66 bit75 400 anni7,5 x 10^11 anni
Passphrase Diceware da 6 paroleR=7 776, L=677,55 bit35 000 anni3,5 x 10^11 anni

Esempio calcolato con il nostro strumento

Calcolatrice entropia password

Dati

Lunghezza di una password casuale
12
Set di caratteri
Minuscole (26)

Risultato

Entropia (bit)
56,405

Queste cifre sono prodotte dal calcolatore qui sotto, non digitate a mano — vengono ricalcolate a ogni modifica dello strumento.

Rifarlo con i tuoi numeri

Domande frequenti

Quanti bit di entropia servono a una password?
Dipende da come l'altro capo la conserva, ed è la parte scomoda della risposta. Prendi 51,70 bit, l'entropia di una passphrase Diceware da quattro parole. Contro un hash veloce senza salt a 10^11 tentativi al secondo, il tempo atteso per trovarla è 5,1 ore — inutile. Contro bcrypt con costo 12, circa 10^4 tentativi al secondo, la stessa password tiene 5 790 anni. Nessuna soglia unica è quindi giusta ovunque. Obiettivi pratici: almeno 75 bit per tutto ciò che protegge altre credenziali, come il segreto principale di un gestore o una passphrase di cifratura del disco, perché quelli devono sopravvivere a un attacco offline su una copia dei dati. Circa 50 bit sono difendibili per un account ordinario dietro limitazione dei tentativi lato server e un secondo fattore, dove l'attaccante non riesce mai a indovinare in fretta. In termini generati, 75 bit sono dodici caratteri ASCII stampabili casuali (78,66) o sei parole Diceware (77,55); 50 bit sono quattro parole Diceware (51,70) o otto caratteri casuali (52,44).
Una passphrase è più forte di una password casuale?
Non automaticamente, e il numero di caratteri è una guida pessima. Una passphrase Diceware da quattro parole porta 4 x log2(7 776) = 51,70 bit anche se supera i venti caratteri. Dodici caratteri ASCII stampabili casuali portano 12 x log2(94) = 78,66 bit in molto meno spazio. La passphrase è 26,96 bit più debole, un fattore di 130 milioni nello sforzo di indovinare — una stringa più lunga e drasticamente più facile da trovare. Aggiungi parole e il quadro cambia: sei parole danno 77,55 bit, di fatto pareggiando con i dodici caratteri casuali, e sette danno 90,47. Il vero vantaggio di una passphrase è che la tieni in testa, cosa che conta enormemente per i due o tre segreti che digiti a memoria e per nulla per i cento che il tuo gestore compila. Due condizioni: le parole devono essere estratte a caso da una lista pubblicata, non scelte da te, e la dimensione della lista deve essere nota perché R sia reale. Scegliere quattro parole che ti piacciono non è Diceware e non ha entropia definita.
Perché il mio gestore valuta una password diversamente dal sito?
Perché rispondono a domande diverse. Un misuratore di sito conta di solito le classi di caratteri e moltiplica per la lunghezza, il che dà a P@ssw0rd123! e a dodici caratteri davvero casuali gli stessi 78,66 bit — non li sa distinguere, avendo guardato solo quali classi comparivano. Uno stimatore a pattern prova invece a ricostruire come la password è stata probabilmente costruita, confrontandola con dizionari, nomi, date, percorsi di tastiera e ripetizioni, e riporta quanti tentativi costerebbe la ricostruzione più economica. Su P@ssw0rd123! è molto più basso, perché ogni trasformazione che contiene è una regola di cracking standard: una lista da dieci milioni di parole incrociata con diecimila regole fa 10^11 candidati, circa 36,5 bit. Il divario fra i due verdetti è di 42,11 bit, un fattore di 4 760 miliardi. Credi a quello pessimista. E nota che nessuno dei due può valutare una password generata a caso meglio della formula, perché per una password generata la formula è esatta — è tutta la ragione per generare invece di inventare.
Aggiungere un simbolo e un numero aiuta davvero?
Aiuta quando il carattere è stato scelto a caso e non serve a nulla quando è stato scelto come lo scelgono tutti. Allargare l'alfabeto alza davvero la resa per carattere: log2(26) = 4,7004 bit per le minuscole contro log2(94) = 6,5546 per l'intero set ASCII stampabile, quindi ogni carattere casuale rende 1,85 bit in più. Ma una maiuscola sulla prima lettera e un punto esclamativo alla fine sono ciò che fanno quasi tutti, quindi il set di regole dell'attaccante produce quelle varianti gratis e il guadagno reale di entropia è vicino a zero. È per questo che la NIST SP 800-63B ha abbandonato le regole di composizione obbligatorie: impongono una trasformazione prevedibile invece di aggiungere casualità. Se vuoi più bit, allunga la password oppure allarga davvero l'alfabeto a caso — sedici lettere minuscole casuali raggiungono già 75,21 bit senza alcun simbolo, e dodici caratteri casuali fra tutti i 94 raggiungono 78,66. Entrambe battono qualsiasi decorazione di una parola memorabile.
In che cosa l'entropia di una password differisce dall'entropia di Shannon?
Misurano oggetti diversi, e un calcolatore di entropia generico ti darà volentieri quello sbagliato. L'entropia di Shannon di una stringa misura la distribuzione dei simboli dentro quella stringa: per P@ssw0rd123! risulta 3,4183 bit per carattere, determinata interamente da quali caratteri si ripetono. È lo strumento giusto per stimare quanto dei dati si comprimeranno, o per individuare un blocco di testo cifrato in mezzo a testo in chiaro, e non dice nulla sull'indovinabilità. L'entropia di una password misura il processo generatore — quante password ugualmente probabili la procedura avrebbe potuto produrre — ed è H = L x log2(R) quando la selezione è stata davvero uniforme e casuale. Le due possono divergere moltissimo: una password casuale da 12 caratteri e P@ssw0rd123! hanno la stessa H secondo la formula, 78,66 bit, mentre le loro entropie di Shannon differiscono e la resistenza reale differisce di decine di bit. Se stai scegliendo una password, il numero che conta è quello del processo generatore.
Posso semplicemente allungare la password invece di renderla casuale?
La lunghezza si converte in entropia solo quando i caratteri aggiunti erano imprevedibili. Allungare una parola memorabile con un anno di nascita e un segno di punteggiatura allunga L sulla carta mentre il file di regole dell'attaccante genera esattamente quelle terminazioni gratis, quindi H = L x log2(R) non descrive più nulla di reale — lo spazio di ricerca pratico resta nell'ordine della wordlist per il set di regole, circa 10^11 candidati o 36,5 bit, cioè un secondo di lavoro a cento miliardi di tentativi al secondo. La lunghezza applicata a materiale davvero casuale è la leva più efficiente che hai: ogni minuscola casuale in più aggiunge log2(26) = 4,7004 bit e ogni carattere ASCII stampabile casuale aggiunge log2(94) = 6,5546. Sedici minuscole casuali raggiungono 75,21 bit — senza simboli, senza maiuscole, senza sostituzioni, e molto più forti di qualsiasi parola di dizionario decorata. Quindi sì, allunga, ma solo se la lunghezza aggiunta è casuale. Se devi ricordarla, aggiungi parole Diceware invece di caratteri: ciascuna vale 12,9248 bit.

Articoli che potrebbero interessarti

Tutte le guide
GuidaCiò che un gestore di password non può misurareL'entropia dà un prezzo a un solo attacco: l'indovinare offline contro un hash rubato. Sopra i 90 bit circa la cifra non decide più nulla — e l'indicatore di questo sito ha sottostimato una password casuale di 20 caratteri in 300 estrazioni su 300.GuidaCifrare un file, poi mandare la chiave per un'altra stradaCifrare è la metà facile. Ecco esattamente che cosa fa lo strumento al tuo file — cifrario, derivazione della chiave, sale, nonce — e perché un allegato cifrato con la password nello stesso thread non protegge nulla.SpiegazioneL'entropia delle password spiegata: bit, lunghezza e quanto tempo serve per violarlaCosa misura davvero l'entropia di una password, perché la lunghezza batte la complessità e come i bit di entropia diventano un tempo di violazione realistico.SpiegazioneChe cosa c'è dentro un JWT — e che cosa non proteggeUn JWT è firmato, non cifrato. Chiunque abbia il token può decodificare il payload e leggerne ogni claim. Ecco un token reale, decodificato senza alcuna chiave, più i tre attacchi che la firma deve fermare e l'unico problema che non può risolvere.ConfrontoMD5, SHA-1, SHA-256: quale hash, e per che cosaMD5 è rotto e MD5 va benissimo, a seconda di quale delle tre proprietà di sicurezza ti serviva. Ecco che cosa significano davvero resistenza alle collisioni, alla seconda preimmagine e alla preimmagine, quale algoritmo conserva quale, e perché nessuno di essi deve avvicinarsi a una password.SpiegazioneCos'è una funzione di hash? (MD5, SHA-256)Una funzione di hash trasforma qualsiasi input in un'impronta di dimensione fissa. Ecco cosa fa, le sue proprietà chiave, gli usi comuni e quali algoritmi sono sicuri.

Strumenti correlati

Fonti

Hai notato un errore in questo articolo?