Articolo di Giorgio Sbaraglia
Per garantire la sicurezza delle password non serve più cambiarle periodicamente: questo indicano le nuove linee guida emanate dal NIST, non cogenti in Europa ma comunque considerate un riferimento autorevole a livello mondiale. Analizziamole in dettaglio.
Da anni gli utenti “subiscono” la regola che obbliga al cambio periodico delle password, regola che viene imposta dalle policy aziendali e su molti siti nei quali ci registriamo.
Ora – finalmente – questa regola viene messa in discussione dall’autorevole NIST. Il National Institute of Standards and Technology è un’agenzia del governo degli Stati Uniti d’America che si occupa della gestione delle tecnologie e fa parte del DoC, Department of Commerce (Ministero del Commercio).
Il NIST è nato nel 1901 con il nome di National Bureau of Standards (NBS). Nel 1988 ha assunto l’attuale denominazione di NIST. È uno dei più antichi laboratori di scienze fisiche degli Stati Uniti ed ha come compito istituzionale quello di di sviluppare standard tecnologici. Ovviamente gli standard definiti dal NIST non sono cogenti in Europa, tuttavia per la loro autorevolezza sono considerati un punto di riferimento a livello mondiale.
É utile sapere che tutti i documenti NIST e FIPS sono scaricabili dal sito del NIST in forma gratuita (ovviamente in lingua inglese). La serie NIST SP (Standard Pubblication) 800 è un insieme di documenti che descrivono le politiche, le procedure e le linee guida del governo federale degli Stati Uniti per i sistemi e le reti informatiche, mentre le Federal Information Processing Standard (FIPS) sono norme che definiscono gli standard obbligatori del governo statunitense.
Tra le norme FIPS più importanti ricordiamo quelle che definiscono gli standard di crittografia DES (Data Encryption Standard) e la successiva FIPS PUB 197 per l’AES (Advanced Encryption Standard),
Anche gli algoritmi di Hash sono definiti dal NIST: la FIPS PUB 180-4 tratta i Secure Hash Standard (SHS), mentre la più recente FIPS PUB 202 ha stabilito nel 2015 lo standard SHA-3.
Tutti gli aspetti della crittografia sono trattati dal NIST: il FIPS PUB 140-2 definisce i moduli crittografici, mentre un documento specifico è dedicato anche agli algoritmi di derivazione della chiave PBKDF: SP 800-132 “Recommendation for Password-Based Key Derivation”.
Esaminiamo la NIST SP 800-63 “Digital Identity Guidelines”, dalla quale partiamo per raccontare come il “dogma” dell’obbligo di cambio frequente delle password sia stato sconfessato.
La regola di obbligare gli utenti a cambiare le proprie password ogni 3-6 mesi era nata nel 2003 proprio dal NIST SP 800-63. Appendix A, un documento di otto pagine redatto da William Burr. Tra i consigli c’era quello di creare password con tutti i tipi di caratteri (numeri, lettere minuscole e maiuscole, simboli) e di cambiarle spesso. Considerata l’autorevolezza del NIST, il manuale venne adottato in tutto il mondo e le sue regole per creare password sicure sono rapidamente diventate uno standard al quale tutti noi siamo stati obbligati ad attenerci.
Ma nel 2017 il NIST ha rivisto le proprie linee guida sulla gestione delle credenziali, rimuovendo la richiesta di cambio password periodico e aggiornando i requisiti di complessità. Questo è accaduto con la pubblicazione, a giugno 2017 dell’aggiornamento NIST SP 800-63 “Digital Identity Guidelines”.
Pochi giorni dopo (agosto 2017), Bill Burr ha rilasciato un’intervista al Wall Street Journal dal titolo: The Man Who Wrote Those Password Rules Has a New Tip: N3v$r M1^d!, nella quale in sostanza dichiarava che le regole da lui indicate nel 2003 erano sbagliate o quantomeno superate. Burr consigliava – quattordici anni prima – di utilizzare maiuscole e minuscole, caratteri speciali e almeno un numero. Il risultato poteva essere una password come “P@ssW0rd1” Anche se questa potrebbe sembrare sicura, in realtà è da considerare – oggi – una pessima password. Dal 2003 le potenze di calcolo sono aumentate, così come sono molto più efficaci i software di password cracking di cui dispongono ora gli attaccanti. Come abbiamo spiegato in un questo articolo, la maggior parte delle persone tende ad usare sempre le stesse tecniche di creazione delle password. È noto – per esempio – che la parola “password” viene modificata – abitualmente e con scarsa fantasia – in: P@ssword, PASSWORD, passw0rd, P@$$w0rd e via dicendo.
Ma i software di password cracking conoscono ed implementano questi algoritmi di sostituzione. Per questo motivo, l’attacco che utilizza queste regole è quello che – statisticamente – ha la maggior efficacia in termini di tempo/risultato.
Le nuove linee guida della NIST SP 800-63 “Digital Identity Guidelines”
La NIST SP 800-63 si articola in 4 documenti: 800-63-3, 800-63A, 800-63B e 800-63C. Quello che riporta le linee guida più utili sull’uso pratico delle password è il NIST SP 800-63B “Digital Identity Guidelines – Authentication and Lifecycle Management”.
Il cambio di orientamento che troviamo in questo aggiornamento è notevole: nel cap.5.1.1.2 “Memorized Secret Verifiers”, alla pagina 14 del documento citato, leggiamo che: “Verifiers SHOULD NOT require memorized secrets to be changed arbitrarily (e.g., periodically). However, verifiers SHALL force a change if there is evidence of compromise of the authenticator”.
Obbligare arbitrariamente le persone a cambiare periodicamente le password (definite “memorized secrets”) dunque non è più considerata dal NIST una pratica consigliabile, anzi può portare l’utente ad utilizzare password banali per riuscire a ricordarle più facilmente (ogni volta che si è obbligati a cambiarle). Addirittura, potrebbero indurre l’utente ad impostare password molto prevedibili e correlate tra loro: quindi la password successiva può essere dedotta sulla base della password precedente.
Quindi la password non va mai cambiata? Il NIST non afferma questo, anzi ci dice che la password andrebbe comunque cambiata se c’è il sospetto o l’evidenza di una sua compromissione.
Anche perché le password, quando rubate, vengono sfruttate (“exploited”) in tempi brevi: i cyber criminali usano quasi sempre le credenziali delle loro vittime non appena le compromettono.
Se una password non viene mai compromessa, non c’è bisogno di cambiarla. E se si ha la prova – o il sospetto – che una password sia stata rubata, è opportuno che si agisca immediatamente piuttosto che aspettarne la scadenza per risolvere il problema.
Questa impostazione è stato già abbracciata dal National Cyber Security Centre (NCSC) della Gran Bretagna che ha aggiornato in tal senso la propria guida: “Password Guidance: Simplifying Your Approach”.
Anche Microsoft ha rinnovato la sua “Microsoft Password Guidance”, abbandonando la policy di scadenza delle password. Lo possiamo vedere nel documento rilasciato a maggio 2019 “Security baseline (FINAL) for Windows 10 v1903 and Windows Server v1903”.
Microsoft non consiglia più di adottare policy che impongano agli utenti di cambiare periodicamente le loro password. E lo motiva con le gli stessi argomenti usati dal NIST: “Quando gli esseri umani sono costretti a cambiare le loro password, troppo spesso fanno una piccola e prevedibile alterazione delle password esistenti e/o dimenticano le nuove password (anche questo è un problema che ben conoscono i responsabili IT delle aziende, n.d.a.).
Le recenti ricerche scientifiche mettono in discussione il valore di molte pratiche di sicurezza delle password, come le policy di scadenza delle password, e indicano invece alternative migliori, come l’applicazione di blacklist di password vietate e l’autenticazione a più fattori”.
Purtroppo, queste regole non sono state invece recepite dalla grande maggioranza delle aziende e dei siti – soprattutto quelli italiani, compresi i siti bancari – che continuano ad imporre il cambio periodico della password.
Le altre indicazioni del NIST
Nei paragrafi successivi della SP 800-63B vengono indicate altre utili linee guida, improntate al buon senso ed alla praticità d’uso.
La lunghezza minima per la password dovrebbe essere di almeno 8 caratteri, ma deve essere consentita una lunghezza massima di almeno 64 caratteri. Ed anche: tutti i caratteri ASCII (RFC 20) dovrebbero essere accettati.
È imbarazzante vedere ancora oggi molti siti che impongono lunghezze massime risibili e che addirittura non accettano i caratteri speciali. Questa limitazione, da considerarsi non più accettabile, è spesso causata dall’utilizzo di sistemi “legacy” (antiquati) che non permettono l’uso di password più lunghe di 8 caratteri e/o non accettano i caratteri speciali (o ne accettano solo alcuni).
E neppure dovrebbero essere imposte “regole di composizione”, come quelle che richiedono, per esempio, “un numero ed un carattere speciale”.
È noto, infatti che in questi casi il pattern statisticamente più utilizzato dagli utenti è: maiuscola all’inizio, numeri e caratteri speciali in fondo. Questo serve solo a dare indicazioni all’attaccante che potrà limitare il numero di tentativi, concentrando l’attacco brute force sulle password più probabilmente usate dagli utenti (ne parlo anche in questo articolo).
Anche l’imposizione delle famigerate domande di sicurezza è deprecata dal NIST, che invita a non richiederle (rif. cap. 5.1.1.2 Memorized Secret Verifiers).
Un’altra utile indicazione del NIST è: “I verificatori dovrebbero consentire ai richiedenti di utilizzare la funzionalità di “incolla” quando si inserisce una password”.
Questo facilita anche l’uso dei gestori di password (i password manager), che sono ampiamente consigliati e che permettono agli utenti di impostare password più forti.
E inoltre: “Per aiutare il richiedente ad inserire con successo un segreto memorizzato (la password), il verificatore dovrebbe offrire la possibilità di visualizzare il segreto – piuttosto che una serie di punti o asterischi – fino al suo inserimento”.
Queste due funzionalità (incolla e visualizza in chiaro la password) sono evidentemente molto pratiche, ma purtroppo non vengono messe in pratica da molti servizi web. In questi casi diventa estremamente scomodo per l’utente impostare una password lunga e complessa, da digitare “alla cieca”. Questi finirà – inevitabilmente – per optare per password più semplici e quindi meno sicure.
Ovviamente è anche caldamente consigliata l’autenticazione a due fattori (2FA), che aumenta notevolmente la sicurezza dei nostri account. Ma – attenzione! – non tutti i possibili sistemi di 2FA sono ugualmente validi. Infatti al cap.5.1.3.3 vengono evidenziati i rischi nel ricevere il secondo fattore OTP (one time password) attraverso una telefonata o un SMS. Questo codice OTP potrebbe essere ricevuto dall’attaccante se questi riesce a realizzare una SIM swap (la clonazione della SIM, una truffa che oggi si sta diffondendo in modo preoccupante).
Meglio quindi utilizzare un “Multi-Factor OTP Device”, come spiegato al cap. 5.1.5: potrebbe trattarsi anche di uno smartphone (“una cosa che hai”), che attraverso un’applicazione apposita genere un codice OTP “time-based” (quindi con una durata molto breve e generato da un algoritmo definito). Di solito si tratta di un codice numerico a 6 cifre.
Per maggior sicurezza – e nella logica dell’autenticazione multi-fattore – lo smartphone deve essere preventivamente attivato da “qualcosa che sai” (una password di sblocco) oppure da “qualcosa che sei” (l’impronta digitale, il viso, ecc.).
Proprio per questo motivo, la Direttiva (UE) 2015/2366 nota come PSD2 (recepita dall’Italia con il D.lgs. 15 dicembre 2017, n. 218), non consente più l’uso dei token hardware (quelle chiavette in plastica che generavano un codice a 6 numeri) per l’autenticazione nei siti bancari: sono dispositivi non sicuri, perché possono essere attivati senza alcun codice di sblocco. Quindi in caso di furto o smarrimento, chiunque potrebbe utilizzarli per accedere all’account bancario.