Skip to content
Torna al blog
Sicurezza

Entropia delle password: calcola e rafforza le tue password online

Padroneggia l'entropia delle password: formula, matematica del brute-force e perché la lunghezza batte la complessità. Include un generatore web gratuito.

10 min di lettura

Entropia delle password: come misurare e massimizzare la forza della tua password

Probabilmente ti hanno detto che una “password forte” ha bisogno di lettere maiuscole, numeri e caratteri speciali. Ma P@$$w0rd! segue tutte queste regole — e può essere violata in meno di un secondo.

La vera misura della forza di una password non sono i caratteri che usi. È l’entropia: un concetto della teoria dell’informazione che quantifica quanto è davvero imprevedibile la tua password.

In questa guida imparerai esattamente come funziona l’entropia delle password, come calcolarla e come generare password che siano genuinamente difficili da violare.

Cos’è l’entropia delle password?

L’entropia di una password misura quanto è imprevedibile, espressa in bit. Ogni bit aggiuntivo di entropia raddoppia il numero di tentativi di cui un attaccante ha bisogno per violarla in brute force.

Pensalo come dei dadi. Un dado a 6 facce ha circa 2,6 bit di entropia per lancio — ci sono solo 6 risultati possibili. Un dado a 20 facce ne ha circa 4,3 — più facce significa più incertezza.

Le password funzionano allo stesso modo: più caratteri possibili (dadi più grandi) e più caratteri nella password (più lanci) entrambi aumentano l’entropia.

Per questo l’entropia è una misura migliore delle regole di complessità. Una password può sembrare complessa (Tr0ub4dor&3) ma avere bassa entropia perché segue pattern prevedibili. Nel frattempo, una passphrase dall’aspetto semplice (correct horse battery staple) può avere alta entropia perché è estratta da un grande pool di possibilità.

La formula: come calcolare l’entropia di una password

La formula è diretta:

E = L × log₂(R)

Dove:

  • E = entropia in bit
  • L = lunghezza della password (numero di caratteri)
  • R = dimensione del pool (numero di caratteri possibili per posizione)

Dimensioni del pool di caratteri

Tipo di carattereDimensione pool (R)Bit per carattere
Solo minuscole (a-z)264,70
Minuscole + cifre365,17
Maiuscole + minuscole + cifre625,95
ASCII stampabile completo946,55
Lista parole Diceware7.77612,92 per parola

Calcolala nel codice

// Calcola l'entropia della password in JavaScript
const entropy = (length, poolSize) =>
  length * Math.log2(poolSize);

entropy(8, 26);   // → 37.60 bit (solo minuscole)
entropy(12, 62);  // → 71.45 bit (alfanumerico)
entropy(16, 94);  // → 104.87 bit (charset completo)
import math

def entropy(length: int, pool_size: int) -> float:
    return length * math.log2(pool_size)

entropy(8, 26)   # → 37.60 bit
entropy(12, 62)  # → 71.45 bit
entropy(16, 94)  # → 104.87 bit

Importante: questa formula assume che ogni carattere sia scelto uniformemente a caso. Se un umano sceglie la password usando pattern o parole del dizionario, l’entropia effettiva è molto più bassa del massimo teorico.

Quanta entropia è sufficiente?

La risposta dipende da cosa stai proteggendo e da quanto velocemente un attaccante può indovinare.

Le GPU moderne possono testare oltre 10¹² (mille miliardi) di hash di password al secondo contro algoritmi veloci come MD5. Ecco cosa significa in pratica:

Entropia (bit)ForzaTempo di crack a 10¹² tentativi/sRaccomandato per
< 40DeboleMeno di 1 secondoMai usare
40–59DiscretaDa secondi a oreAccount usa-e-getta
60–79ForteDa giorni a secoliAccount regolari
80–99Molto forteMillenni+Email, banking
100+EstremaOltre la morte termica dell’universoChiavi di cifratura, password master

Una password di 16 caratteri che usa il set ASCII stampabile completo ti dà circa 105 bit di entropia — ben dentro il range “estremo”. Puoi generarne una istantaneamente con il nostro Generatore di password casuali, che mostra analisi dell’entropia in tempo reale per ogni password.

Cosa dice NIST (aggiornamento 2024)

NIST SP 800-63B, aggiornato nel 2024, ha apportato cambiamenti significativi alle linee guida sulle password:

  • Eliminate le regole di complessità obbligatorie (niente più caratteri speciali forzati)
  • Eliminate le modifiche periodiche obbligatorie della password
  • Innalza il minimo a 15 caratteri (su da 8 nelle versioni precedenti)
  • Enfatizza lo screening contro password violate note
  • Favorisce lunghezza e casualità sulla complessità

Questi cambiamenti riflettono ciò che la matematica dell’entropia ha sempre mostrato: lunghezza e casualità contano più della varietà di caratteri.

Perché la lunghezza batte la complessità

Vediamo la matematica. Considera due modi per aumentare l’entropia per una password di 12 caratteri:

Opzione A — Mantieni 12 caratteri, passa da alfanumerico (62) a ASCII completo (94):

  • 12 × log₂(94) - 12 × log₂(62) = 78,66 - 71,45 = +7,21 bit

Opzione B — Mantieni alfanumerico (62), aggiungi un carattere in più (12 → 13):

  • 13 × log₂(62) - 12 × log₂(62) = 77,40 - 71,45 = +5,95 bit

Aggiungere un singolo carattere ti dà quasi tanta entropia quanto passare a un set di caratteri molto più grande. Aggiungi due caratteri e l’hai superato.

Ora considera P@$$w0rd! (9 caratteri). Usa il pool ASCII completo ma è troppo corta. Peggio, segue il pattern prevedibile “leet speak” che gli attacchi a dizionario già coprono, quindi la sua entropia effettiva è molto sotto i 59 bit teorici.

La conclusione: per password veramente casuali, aggiungere lunghezza è più efficiente che aggiungere tipi di carattere. Ma il vero nemico è la prevedibilità, non la brevità.

Passphrase vs password casuale

DimensionePassword casualePassphrase (Diceware)
EsempiokX#9mP$2vL!nQ7wRcorrect horse battery staple
Bit per unità6,55 per carattere12,92 per parola
Lunghezza per ~78 bit12 caratteri6 parole
MemorabilitàScarsaBuona
Digitazione su mobileDolorosaFacile
Ottimo perVoci di password managerPassword master, login memorizzati

Come funziona Diceware

Diceware usa una lista di parole di 7.776 voci (6⁵ = 7.776). Lanci cinque dadi per selezionare ogni parola, dando esattamente 12,92 bit di entropia per parola.

Quattro parole danno ~51 bit; sei parole danno ~77 bit.

Quale dovresti usare?

  • Per password salvate in un manager: usa password casuali da 16+ caratteri con set di caratteri completi. Non le digiti mai a mano, quindi la memorabilità non conta. Il nostro Generatore di password casuali può generarne fino a 50 in batch.
  • Per la tua password master: usa una passphrase Diceware da 5-6 parole. È abbastanza memorabile da digitare quotidianamente fornendo 64-77 bit di entropia.
  • Per chiavi API e token: usa openssl rand o crypto.randomBytes() per massima entropia senza requisito di memorabilità umana.

Entropia in pratica: strumenti e codice per sviluppatori

Ecco i modi più comuni in cui gli sviluppatori generano segreti ad alta entropia:

Browser (Web Crypto API)

// Generazione password crittograficamente sicura
function generatePassword(length, charset) {
  const array = new Uint32Array(length);
  crypto.getRandomValues(array);
  return Array.from(array, v => charset[v % charset.length]).join('');
}

const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
generatePassword(16, chars);
// → 'kX#9mP$2vL!nQ7wR' (casuale ogni volta)

Node.js

const crypto = require('crypto');
const token = crypto.randomBytes(32).toString('base64url');
// → 'Ql2Hj8xK9mNp3rVw5tYz7uBa0cEf4gIk' (43 caratteri, 256 bit)

Python

import secrets
token = secrets.token_urlsafe(32)  # 256 bit di entropia
password = secrets.token_hex(16)    # 128 bit, formato hex

Riga di comando

# 192 bit di entropia, codificato in base64
openssl rand -base64 24

# 256 bit, codificato in hex
openssl rand -hex 32

Confronto entropia per metodo

MetodoLunghezza outputEntropia (bit)
UUID v436 caratteri122
openssl rand -base64 2432 caratteri192
ASCII completo 16 caratteri16 caratteri105
Diceware 6 parole~30 caratteri78
Diceware 4 parole~20 caratteri52

Mai usare Math.random() per qualsiasi cosa relativa alla sicurezza. Usa un PRNG non crittografico — l’output è prevedibile se un attaccante conosce il seed. Usa sempre crypto.getRandomValues() nel browser o crypto.randomBytes() in Node.js.

Storage delle password: perché l’entropia da sola non basta

Anche una password di 128 bit è inutile se il server la salva come hash MD5 in chiaro. Quando un database trapela, gli attaccanti possono testare migliaia di miliardi di hash MD5 al secondo su una singola GPU.

Qui entrano in gioco gli algoritmi di hashing lenti. Rendono deliberatamente costoso ogni tentativo:

AlgoritmoVelocità su GPURallentamento effettivo
MD5~10 miliardi/sBaseline (non usare)
SHA-256~5 miliardi/s~2× più lento
bcrypt (cost=12)~5/s~2 miliardi× più lento
argon2id~2/s~5 miliardi× più lento

Il parametro cost di bcrypt è particolarmente elegante: ogni incremento raddoppia il lavoro richiesto. Un fattore di costo di 12 significa 2¹² = 4.096 round di hashing. Questo aggiunge effettivamente 12 bit di “entropia di storage” sopra la propria entropia della password.

Il modello di doppia protezione: password ad alta entropia proteggono contro brute force offline, mentre l’hashing lento protegge contro le fughe di database. Hai bisogno di entrambi.

Per più sugli algoritmi di hash, vedi il nostro confronto MD5 vs SHA-256 e prova il Generatore di hash MD5 per esplorare come algoritmi diversi producano output diversi.

Miti comuni sulle password sfatati

”Cambia la tua password ogni 90 giorni”

Le linee guida NIST 2024 raccomandano esplicitamente contro le modifiche periodiche obbligatorie. Le rotazioni frequenti portano gli utenti a scegliere password più deboli e prevedibili — aggiungere un numero alla fine, ciclare attraverso un piccolo set. Cambia le password solo quando hai motivo di credere che siano state compromesse.

”a→@, e→3 la rende più forte”

Le sostituzioni leet speak sono tra i primi pattern controllati dagli attacchi a dizionario. Sostituire a con @ in password aggiunge praticamente zero entropia perché gli attaccanti se l’aspettano già.

La vera casualità — non sostituzioni furbe — è ciò che aumenta l’entropia.

”8 caratteri con simboli sono sufficienti”

Anche con il set ASCII completo da 94 caratteri, 8 caratteri danno solo 52 bit di entropia. A 10¹² tentativi al secondo, sono violati in circa 75 minuti.

Usa minimo 12 caratteri, 16+ per account importanti.

”Più sembra complessa, più è sicura”

La complessità visiva e l’entropia sono cose diverse. Tr0ub4dor&3 sembra complessa ma segue un pattern prevedibile parola-base-più-sostituzioni. mfYq8kL2nR sembra più semplice ma ha entropia più alta perché è veramente casuale.

Per più sulla costruzione di una strategia di sicurezza completa, vedi Web Security Essentials.

FAQ

Quanti bit di entropia sono considerati sicuri?

Per la maggior parte degli account online, 60-80 bit forniscono protezione forte. Per target ad alto valore come password master o chiavi di cifratura, punta a 100+ bit. Ogni bit aggiuntivo raddoppia lo sforzo richiesto all’attaccante.

Aggiungere caratteri speciali aumenta sempre l’entropia?

Solo se i caratteri sono scelti casualmente dal pool completo. Sostituzioni prevedibili come @ per a o ! alla fine aggiungono praticamente zero entropia perché gli attaccanti già tengono conto di questi pattern nei loro dizionari.

Qual è l’entropia di una passphrase Diceware da 4 parole?

Usando la lista Diceware standard da 7.776 parole, ogni parola contribuisce 12,92 bit. Quattro parole danno approssimativamente 51,7 bit — adeguato per usi a bassa sicurezza. Per account importanti, usa 5-6 parole (64-78 bit).

Math.random() è sicuro per generare password?

No. Math.random() è un generatore di numeri pseudocasuali che non è crittograficamente sicuro. Usa crypto.getRandomValues() nel browser o crypto.randomBytes() in Node.js per generazione casuale sensibile alla sicurezza.

Come influenza la sicurezza il fattore di costo di bcrypt?

Ogni incremento del fattore di costo di bcrypt raddoppia la computazione richiesta per fare l’hash (e quindi per fare brute force) di una password. Un costo di 12 significa 2¹² = 4.096 iterazioni, aggiungendo effettivamente 12 bit di difficoltà sopra l’entropia intrinseca della password.

Cosa è cambiato nelle linee guida sulle password NIST del 2024?

NIST SP 800-63B ha eliminato i requisiti di complessità obbligatori (caratteri speciali forzati, maiuscole/minuscole miste) e la rotazione periodica delle password. La nuova guida favorisce password più lunghe (15+ caratteri raccomandati), screening contro database di password violate e permettere tutti i caratteri stampabili inclusi gli spazi.

Punti chiave

  1. Entropia = L × log₂(R) — ogni bit extra raddoppia il numero di tentativi necessari
  2. Lunghezza > complessità — aggiungere un carattere è più efficace che espandere il set di caratteri
  3. Usa API crittografichecrypto.getRandomValues() o crypto.randomBytes(), mai Math.random()
  4. Password manager + generazione casuale è la migliore pratica per la maggior parte delle persone
  5. Anche il lato server conta — usa bcrypt o argon2, mai salvare password con MD5

Pronto a generare una password ad alta entropia? Prova il nostro Generatore di password casuali — mostra analisi dell’entropia in tempo reale per ogni password che crei.

Articoli correlati

Vedi tutti gli articoli