Quanto deve essere robusta una password

Che cosa misura davvero l'entropia in bit, perché la lunghezza batte il minestrone di simboli, quanto ti costa riusare la stessa password, e dove si collocano le passphrase e i gestori di password.

Per un account che ti dispiacerebbe perdere, usa una password generata a caso di almeno 16 caratteri, oppure una passphrase di almeno 5 parole scelte a caso, e usala su un solo sito. Sono da 65 a 95 bit di entropia, ampiamente fuori dalla portata della forza bruta, e la parte del «un solo sito» conta più della robustezza. Qui sotto trovi il ragionamento dietro a quei numeri.

L'entropia in bit

L'entropia misura da quante possibilità ugualmente probabili è stata estratta la password, espressa come potenza di due. Quaranta bit di entropia significano una possibilità su 2^40, circa mille miliardi, e ogni bit in più raddoppia il lavoro necessario per indovinarla. La formula è bit = lunghezza x log2(dimensione dell'insieme di caratteri), quindi le lettere minuscole valgono 4,7 bit ciascuna, lettere e cifre 5,95, tutto l'ASCII stampabile 6,57 e una parola presa da un elenco di 7.776 parole 12,9:

PasswordEntropia
8 lettere minuscole38 bit
12 lettere e cifre71 bit
12 caratteri, ASCII completo79 bit
16 lettere e cifre95 bit
5 parole casuali65 bit
6 parole casuali78 bit

Questi conti valgono solo se la password proviene da un vero processo casuale. Tr0ub4dor&3 è fatta di 11 caratteri presi da un insieme di 95, il che secondo la formula fa 72 bit, ma è una parola da dizionario con sostituzioni prevedibili e uno strumento di cracking ci arriva molto prima. L'entropia descrive il generatore, non la stringa.

Che cosa ti comprano quei bit

La velocità con cui si può indovinare dipende da come il sito ha memorizzato la password. Contro un modulo di accesso attivo con limitazione del numero di tentativi, un attaccante ha qualche tentativo all'ora. Contro un database rubato dipende dall'hash: uno veloce come MD5 o SHA-1 può essere provato a ritmi enormi su hardware grafico di consumo, mentre un hash pensato apposta per le password come bcrypt o Argon2 è più lento di molti ordini di grandezza.

Qui sotto c'è il caso peggiore, un hash veloce senza salt a un ipotetico ritmo di dieci miliardi di tentativi al secondo. Mostra quanto bruscamente si piega la curva, e non è una misurazione:

EntropiaTempo per esaurire tutto lo spazio
40 bitCirca due minuti
50 bitCirca un giorno
60 bitQualche anno
70 bitQualche migliaio di anni
80 bitMilioni di anni

In media un attaccante ci riesce nella metà di quel tempo. La lettura pratica: sotto i 50 bit non vale gran che contro un attacco offline, da 60 a 70 bit va bene per la maggior parte delle cose, e da 80 bit in su si resta tranquilli.

La lunghezza batte il minestrone di simboli

Prendi una password di 12 caratteri fatta di lettere e cifre (71 bit). Aggiungere la punteggiatura, allargando l'insieme da 62 a 95 caratteri, ti porta a 79 bit. Aggiungere invece altre due lettere o cifre ti porta a 83. Ogni carattere in più moltiplica lo spazio di ricerca per l'intero alfabeto, mentre allargare l'alfabeto aggiunge solo circa 0,6 bit per ciascun carattere che avevi già. Vince la lunghezza, e continua a vincere.

Le regole di composizione («deve contenere una lettera maiuscola, una cifra e un simbolo») spingono le persone dentro un insieme ristretto di schemi: maiuscola all'inizio, cifra e punto esclamativo alla fine. Gli strumenti di cracking provano per prime proprio quelle trasformazioni. È uno dei motivi per cui le linee guida del NIST sull'identità digitale hanno abbandonato le regole di composizione e i cambi periodici obbligatori, a favore della lunghezza e del controllo rispetto a elenchi di password già comparse in violazioni note.

Il vero rischio è il riuso

Quasi nessuno si vede compromettere un account per forza bruta. Quello che succede è il credential stuffing: un sito debole viene violato, le coppie di email e password vengono pubblicate, e strumenti automatici provano ogni coppia su centinaia di altri servizi. Se sulla tua email hai usato la stessa password del forum violato, la sua robustezza è irrilevante. È stata consegnata, non indovinata.

Il phishing funziona allo stesso modo: una password di 30 caratteri digitata in una pagina di accesso falsa ma convincente vale esattamente quanto password1. Quindi, in ordine di importanza:

  1. Una password diversa su ogni sito.
  2. L'autenticazione a due fattori su tutto ciò che è importante, prima di ogni altra cosa sulla tua email, dato che è la strada per reimpostare tutto il resto.
  3. Una lunghezza tale da rendere disperato il cracking offline.

Le passphrase

Una passphrase è un insieme di parole prese a caso da un elenco, per esempio harvest-cobalt-mural-drift-plinth. A 12,9 bit per parola, cinque parole fanno 65 bit e sei ne fanno 78.

Perché funzioni servono due condizioni. Le parole devono essere scelte a caso, con dei dadi o con un software, non da te. E la robustezza viene dal numero di parole, non dal separatore né dal mettere maiuscola una lettera: il verso di una canzone o una citazione non hanno quasi entropia, perché sono estratti da un piccolo insieme di cose che la gente dice.

Le passphrase si guadagnano il posto per quelle poche password che digiti a memoria: l'accesso al dispositivo, la password principale del tuo gestore, la cifratura del disco.

Dove si colloca un gestore di password

Un gestore di password trasforma «inventa e ricorda 200 password uniche» in «ricorda una lunga passphrase». Genera stringhe ad alta entropia e le inserisce sul dominio giusto, il che smussa il phishing, perché non compila automaticamente su un indirizzo che si limita ad assomigliare a quello vero.

Concentra il rischio, che è un'obiezione reale e resta comunque lo scambio migliore: una sola cassaforte dietro una lunga passphrase e un secondo fattore batte una sola password condivisa fra decine di siti di qualità sconosciuta.

Una nota sull'hashing

L'hashing è l'altra faccia dell'accesso. Un servizio costruito bene memorizza un hash con salt prodotto da un algoritmo deliberatamente lento, mai la password in sé, così una fuga di dati non consegna subito il testo in chiaro. Gli hash di uso generale come SHA-256 sono costruiti per essere veloci, il che li rende eccellenti per i checksum dei file e una cattiva scelta per conservare le password. Calcolare l'hash della tua password per «renderla più robusta» non ottiene nulla: il risultato è difficile da indovinare tanto quanto lo era l'input.