Nei giorni scorsi, un post su LinkedIn dell'Agenzia per la Cybersicurezza Nazionale in materia di password ha generato un po' di dibattito online, dato che le indicazioni suggerite non sembrano molto aggiornate [1]. In particolare, il post suggerisce di utilizzare password di almeno 8 caratteri mischiando simboli diversi, e soprattutto di cambiarle frequentemente. Altre fonti come il Garante della Privacy [2] danno suggerimenti analoghi.
Dopo aver fatto una live per la rubrica Enigma su questa faccenda, cerchiamo di ricapitolare cosa c'è di sensato e cosa no in queste raccomandazioni.
La premessa doverosa è la seguente: non esiste alcun insieme di raccomandazioni universali per scegliere una password sicura e facile da usare.
Come spesso accade nel campo della cybersecurity, occorre sempre confrontare il rischio da cui ci vogliamo difendere (per esempio, il furto dei nostri dati online) con le contromisure che vogliamo applicare per mitigarlo, e quindi fare una valutazione personale costi/benefici. Le osservazioni nel resto di questo articolo cercano di individuare alcune raccomandazioni abbastanza generiche supportate da evidenza scientifica, ma per forza di cose occorre adattarle al proprio caso personale.
Innanzitutto, cominciamo dalla questione più annosa: quanto deve essere lunga una password, da che caratteri deve essere composta, e quanto dev'essere casuale? Qui la teoria dell'informazione ci dà un risultato netto (e scomodo): se una password è completamente casuale, l'unica soluzione per un avversario è di provare tutte le combinazioni a forza bruta. Quindi, più una password casuale è lunga e definita su un alfabeto esteso (maiuscole, minuscole, cifre, simboli vari), più è sicura.
Operativamente, quanto dovrebbe esser lunga? Il minimo suggerito nelle ultime raccomandazioni del NIST [2] è di 8 caratteri. Quindi, sembrerebbe in linea con quanto detto anche nel post dell'ACN [1]. Ad ogni modo, occorre considerare che il documento del NIST dà indicazioni ai progettisti dei sistemi di autenticazione, piuttosto che agli utenti. Dal punto di vista dell'utente finale, considerando la potenza di calcolo a disposizione oggi per attacchi a forza bruta, 8 caratteri è un po' "sul filo del rasoio". Meglio usarne dunque almeno 12. A onor di cronaca, un bollettino pubblicato all'inizio dell'invasione russa dell'Ucraina, da parte del Computer Security Incident Response Team (CSIRT) dell'ACN, suggeriva di usare anch'esso almeno 12 caratteri [3].
Detto questo, come generare una password casuale? Lasciate perdere i vari trucchi mentali ed espedienti che si leggono in giro su internet per fare password "complesse". Sono perlopiù fuffa, e si è dimostrato più volte che gli esseri umani non sono bravi a tirare numeri a caso [4].
Meglio far generare le vostre password ad un password manager, un software che incidentalmente è anche in grado di memorizzarle sui vostri dispositivi in maniera cifrata. Per sbloccare questa "cassaforte" di password vi serve ricordare una sola master password, anch'essa meglio se generata casualmente tramite il password manager. La master password occorre poi custodirla bene. Ricordarla a memoria è probabilmente l'ideale (e a furia di sbloccare il password manager, non si fa troppa fatica a ricordarla). Può essere però rischioso se, per qualsiasi motivo, doveste scordarla. Meglio dunque scriversi la master password su un foglio, e custodirlo in modo sicuro (cassaforti fisiche, lucchetti, ecc.).
Come alternativa, alcuni suggeriscono di usare le passphrase, cioè frasi segrete più lunghe di una normale password. Sicuramente, frasi di senso compiuto sono da evitare anche se molto lunghe, considerando il recente successo di modelli generativi di AI per il linguaggio naturale come ChatGPT. Quindi, una passphrase dovrebbe essere composta da parole casuali. L'idea è sensata, ma per ottenere una sicurezza comparabile ad una password casuale di ~12 caratteri vi serve usare almeno 6 parole. A quel punto, diventa più una questione di comodità e usabilità : quanto è difficile ricordarsi 6 parole a caso (per ciascun nostro account!), e soprattutto, quanto tempo ci impieghiamo per scriverle (~30 caratteri) ogni volta che ci dobbiamo autenticare? Questo metodo è stato studiato a fondo, e vari esperimenti hanno mostrato che le passphrase non sono molto diverse dalle password in termini di usabilità e sicurezza [5]. Inoltre, data la lunghezza di una passphrase, è molto più facile commettere un refuso in fase di digitazione.
Un password manager, viceversa, vi permette di fare copia e incolla. A quel punto, cambia poco sia che abbiate 12 caratteri casuali, sia che ne abbiate 30 da una frase di 6 parole casuali, visto che non li dovete ricordare. Per questo, uno dei consigli migliori che si può dare in materia di password è: imparate a usare bene un password manager. Ne esistono parecchi molto validi, sia gratuiti che a pagamento.
Altro aspetto annoso menzionato nel post dell'ACN: le password vanno cambiate regolarmente o no? Le raccomandazioni del NIST di 20 anni fa dicevano di sì [6]. L'evidenza che abbiamo accumulato in tutto questo tempo suggerisce invece che far cambiare le password periodicamente diminuisce la sicurezza. Questo perché le policy di scadenza password su vari siti/sistemi finiscono più che altro per innervosire gli utenti, i quali per aggirare questo fastidio scelgono password più deboli e facili da indovinare. Se invece si cambiano periodicamente le password per conto proprio, non si guadagna nulla a livello di sicurezza. D'altro canto, diventa molto più complicata la gestione e il rinnovo periodico, considerando con quante password abbiamo a che fare.
Quindi, la raccomandazione odierna è di NON cambiare le password periodicamente, a meno che non ci sia il ragionevole sospetto che siano state compromesse. Un modo possibile per scoprirlo è di controllare se le vostre password appaiono su Have I Been Pwned? [6]. Questo sito controlla se la password che inserite è presente all'interno di elenchi apparsi online nel corso degli anni, in seguito a vari data breach. Il sito è sicuro, nel senso che non conosce la password che inserite (ciò che controlla è invece un hash della vostra password).
Un'ultima raccomandazione molto importante è di abilitare l'autenticazione a due o più fattori ove disponibile, per esempio con un codice one-time come secondo fattore mandato tramite SMS (non proprio l'ideale) o app di autenticazione (meglio). Altri metodi come token hardware o passkeys sbloccate da biometriche sono anche molto utili, laddove disponibili.
Per concludere, tornando all'osservazione iniziale, è sostanzialmente impossibile dare raccomandazioni universali che vadano bene per tutti. Alla fine, dipende molto dal caso individuale, e occorrerebbe imparare a fare un minimo di modellazione del rischio personale dei propri dati online. Per esempio, su alcuni siti che vengono usati sporadicamente e che contengono dati non troppo importanti, si potrebbe anche decidere di usare password che deviano dalle raccomandazioni sopra. Giudicare poi quanto questi dati siano "importanti" sta ad ognuno di noi.