sicurezza

Password, come gestirle per evitare problemi: miti da sfatare, regole da seguire

Tutti noi abbiamo a che fare con decine di password per l’accesso ai più svariati servizi online: così tante che neanche Pico della Mirandola potrebbe ricordarle. Ma non cadiamo nella trappola di usarne una per tutti, non sottovalutiamo i rischi che potremmo correre. Cosa saper per proteggersi

16 Giu 2022
Fabrizio D'Amore

Dipartimento Ingegneria Informatica, automatica e gestionale Antonio Ruberti, Sapienza Università di Roma

password sicurezza privacy

Le password sono “segreti” che noi tutti siamo abituati a maneggiare per farci autenticare, eppure molta informazione mediocre circola sul loro conto. Proviamo a eliminare i falsi miti che le circondano e a preservare le giuste preoccupazioni.

A cosa serve la password e come viene memorizzata

Sappiamo tutti che le password sono usate spesso in processi di autenticazione,[1] il cui scopo è riconoscere l’identità di un soggetto. Il processo è uni-direzionale[2] e può consistere in più passi, come ad esempio accade nella “autenticazione a due fattori” (2FA[3]) di cui uno consiste appunto nell’inserimento, e nella corrispondente verifica della password. Questa viene in genere inoltrata, mediante connessione sicura[4] a un server di autenticazione che, in base a informazioni possedute, verifica la sua correttezza.

WHITEPAPER
Costruire una VERA DATA STRATEGY: machine learning, sicurezza e valorizzazione del dato.
Amministrazione/Finanza/Controllo
Big Data

Una volta ciò veniva realizzato attraverso la memorizzazione – lato server – di tutte le password degli utenti. Con il passare del tempo si è dovuto prendere atto della insicurezza di tale pratica, perché una compromissione del server è capace di esporre tutte le password ivi contenute.

Oggi sono presenti innumerevoli siti Web pubblici che hanno raccolto negli anni gli esiti di molte compromissioni e memorizzano tutte le credenziali esfiltrate. Essi consentono generalmente di verificare se la nostra e-mail è stata vittima di queste esfiltrazioni.[5] Il metodo più semplice ed ovvio per contrastare il fenomeno sembra consistere nella cifratura di tali password, che non apparirebbero più “in chiaro.” L’accesso alle stesse sarebbe condizionato all’uso di una chiave segreta[6] di cifratura/decifratura. Il problema sta nel fatto che un server compromesso può dare accesso anche alla chiave di cifratura/decifratura, il che renderebbe dunque inutile la cifratura stessa;[7] quindi la loro cifratura offre solo un piccolo incremento di sicurezza.

Gli attacchi tramite “rainbow tables” e le contromisure

Un approccio che sembra essere più efficace è quello di memorizzare, invece della password, un segreto derivato dalla password attraverso un metodo matematico non invertibile.[8] Contro tali misure gli attaccanti fanno uso delle cosiddette rainbow tables,[9] tabelle spesso pubbliche di enormi dimensioni che permettono di aggirare il problema della non invertibilità memorizzando i valori ottenuti a partire da ogni parola presente in una qualche lista pubblica di parole di una lingua.[10] Per renderle inefficaci spesso si derivano i segreti da password “salted”. Una password è “salted” quando ad essa sono stati aggiunti, a cura del server, in fase di registrazione, alcuni bit casuali, in maniera da renderla molto più difficilmente presente in una qualche rainbow table. Tali bit casuali, il salt, o sale, possono essere anche ottenuti dall’attaccante, che tuttavia non ne ottiene aiuto ai fini dell’uso di una rainbow table.

Gli attacchi a dizionario

Va detto che l’attaccante può sempre effettuare un attacco offline a dizionario alle password, in cui, partendo da un file contenente i segreti derivati, e gli eventuali sali, prova ad effettuare per ogni segreto derivato, e usando il corrispondente sale (in chiaro), alcuni tentativi per ogni parola presente nel dizionario.

Ad esempio, se il sale fosse 01101011, e la parola in esame fosse ospedali, l’attaccante potrebbe determinare i segreti derivanti da:

ospedali01101011

Ospedali01101011

OSPEDALI01101011

0spedal101101011

0sp€d@l101101011

e da qualche altra variante similare. Per un milione di parole, e una cinquantina di varianti, ammesso che il computer dell’attaccante operi un tentativo al ms, otterremmo una stima di 50000 s, ovvero un’ora e mezzo scarsa. E questo numero l’abbiamo ottenuto assumendo una quantità eccessiva di parole e un computer dell’attaccante lento. Fra le sorgenti di parole si possono includere quelle che testimoniano quali siano le password più usate.[11]

Dalla discussione precedente deriviamo l’importanza di scegliere password “lontane” da parole in un dizionario (e da informazioni facilmente indovinabili, come una data di nascita[12]).

Le conseguenze di una password esfiltrata

Teniamo presente che quando vengono catturate le password non solo l’attaccante potrebbe essere abilitato a impersonarci (qualora non ci fosse un’autenticazione multifattore), ma rischiamo un vero e proprio furto di identità poiché l’attaccante cercherà di usare le stesse credenziali su innumerevoli altri servizi, sperando nel nostro riuso della password. In caso di successo l’attaccante rischia di controllare i nostri account social, la nostra e-mail, i nostri account cloud ecc., informazioni preziose per i cyber-criminali che, intendendo svolgere truffe online, hanno bisogno di identità “complete” per apparire come utenti “normali.” Di qui la possibilità, dunque, che l’attaccante venda le credenziali esfiltrate al mercato nero, operazione molto semplice sul dark web.[13] Di qui l’importanza di non riutilizzare la stessa password per servizi differenti (pratica ampiamente diffusa nonostante le raccomandazioni).

Come scegliere e gestire le password

Precisiamo preliminarmente che sono possibili due categorie di attacco alle password: a pioggia e mirati. Il rapporto fra le due categorie è molto sbilanciato a favore della prima. Per cui prenderemo in considerazione solo questa; per gli attacchi mirati è necessario un notevole dispendio di risorse che spesso sfociano anche nel social engineering.[14] Inoltre, gli attacchi mirati sono così dipendenti dal contesto che sfuggono a regole generali.

Attacchi a pioggia: come proteggersi

Proteggersi dai danni provocati dagli attacchi a pioggia già offrirebbe un cospicuo risultato, almeno a vantaggio di utenti casalinghi e di organizzazioni in cui sta penetrando la digitalizzazione. Per quelle – non molte in verità – chiamate a svolgere ruoli di sicurezza e/o protezione delle infrastrutture critiche la discussione prenderebbe accenti differenti.

I primi semplici suggerimenti derivano dalle due sezioni precedenti: rimanere lontani da parole indovinabili o in un dizionario e non riusare la password. Oggi si stima che un utente generico sia costretto a usare un centinaio di password: neanche Pico della Mirandola[15] potrebbe ricordarle tutte, se si scelgono differenti. Una possibilità interessante è ricordarle tutte con un password manager, software disponibile in molte applicazioni diverse, gratuite e a pagamento. Per comprensibili ragioni ci concentreremo qui su quelle gratuite, anche se si possono trovare in rete interessanti confronti che coinvolgono anche password manager a pagamento.[16] Possiamo essenzialmente dividerli in due grandi gruppi: quelli offerti dai browser e quelli disponibili come applicazioni a sé stanti; questi ultimi prevedono spesso una estensione corrispondente che si può installare nei principali browser. In ogni caso un password manager gestisce, al costo di ricordare una sola password, tutte quelle che siamo chiamati a ricordare, essendo il loro numero arbitrariamente alto.

Il password manager di Firefox

Per descrivere il password manager offerto da un browser faremo riferimento a Firefox (vers. 100.0.1), ma il servizio è offerta da molti altri browser popolari.

Il password manager di Firefox può essere protetto da una (sola) password e ospitare centinaia di credenziali differenti (luogo, username, password), rendendo possibili il riconoscimento automatico della pagina e il riempimento automatico dell’area credenziali. Inoltre, le informazioni si sincronizzano fra loro su tutti i dispositivi in uso mediante il cloud (che fa uso della nostra identità; quindi, occorre preliminarmente registrare un dispositivo come nostro).

Le informazioni custodite possono essere anche consultate senza l’apertura della pagina interessata, cosa che spesso avviene in modalità mobile (es., sullo smartphone si apre Firefox per consultare la password di interesse, sincronizzata fra tutti i dispositivi in uso). C’è da dire che Mozilla offriva il servizio anche tramite app mobile (Lockwise), dismessa però a fine 2021.

Una app gratuita e multipiattaforma è Bitwarden,[17] che offre anche una estensione per vari browser, in modo da avere il suo servizio anche mentre si usa il browser. Anche qui occorre proteggere le password con una principale (o con l’accesso biometrico dello smartphone).

Problema differente è quello della scelta delle password. Spesso il password manager è in grado di aiutare proponendo una scelta sicura (che memorizzerà). Sull’argomento esiste una letteratura sconfinata, basata essenzialmente sui successi ottenuti da vari attaccanti grazie alla loro arguzia.

La vessazione degli utenti

Trovo assolutamente vessatorio obbligare gli utenti a scegliere password che debbono ubbidire a schemi precostituiti, come presenza di (almeno) una maiuscola, una minuscola, una cifra, un carattere speciale, senza dimenticare una lunghezza minima e una certa differenza dalle password precedenti (ma come, il server conosce le password precedenti? Allora le memorizzava, pessima abitudine). Il motivo di tali regole è quello di far variare la password su un insieme più grande, rendendo più difficile l’attacco a forza bruta.[18] A mio avviso il lato fortemente negativo di tali pratiche è quello di incentivare comportamenti pericolosi da parte degli utenti (password su post-it, riuso di password ecc.). Parimenti, trovo vessatorio e pericoloso imporre il cambio di password ad intervalli regolari. Tutte queste pratiche finiscono per l’incoraggiare comportamenti incauti.

Mi pare opportuno segnalare che un buon password manager, al momento della creazione di una nuova password, normalmente interviene proponendone una casuale, con la promessa di memorizzarla.

Il problema con i password manager è che, a lungo andare, hanno memoria di password vecchie o obsolete per cui l’utente si ritrova a dover scegliere fra più proposte. In questo senso essi richiedono un minimo di attività di manutenzione, volte ad eliminare le informazioni obsolete.

Si possono ottenere risultati simili senza ricorrere a tali vessazioni. D’altra parte, ho già avuto modo di osservare provocatoriamente che la somma dei benefici ottenuti dagli incrementi di sicurezza introdotti dalle regole vessatorie non raggiunge la somma dei costi indotti dall’aumento del tempo impiegato nel recupero della password, aggiungendo che le regole vessatorie incrementano notevolmente la probabilità di smarrimento della stessa. Anche un ricercatore del calibro di Schneier[19] ha suggerito di “piantarla di correggere gli utenti.”[20]

Più sicuri che con le password

Negli ultimi anni si sono imposti alcuni protocolli “robusti” di autenticazione, ad iniziare da EKE,[21] e considerando i suoi vari derivati e le sue varianti “aumentate”, fra cui spicca SRP.[22] Tali protocolli vanno oltre i nostri scopi e sono destinati a un pubblico specializzato. Si osservi comunque che essi appaiono ben più robusti rispetto alle semplici password, anche se non possiamo ancora dire siano perfetti. È tuttavia un fatto che questi protocolli si adottino più raramente, a beneficio di utenti specialisti. Tali metodi si basano sull’esistenza di un segreto condiviso fra utente e server. Ci sono ulteriori approcci su cui comunque non mi dilungherò.

Chiavi da password

Recentemente si è imposto l’uso delle Key Derivation Functions (KDF), ovvero speciali funzioni che prendono in input una password e restituiscono una chiave, associata a quella password; queste funzioni possono anche usare un sale. In genere la legge matematica che definisce l’associazione è complicata assai, abbastanza per sfuggire a una qualche analisi dell’attaccante. Esistono varie KDF e tutte questa hanno in comune il fatto che un seppur minima modifica nella password iniziale produce una modifica importante nella chiave generata. Inoltre, sono funzioni non invertibili (in tempi “umani”).

Certe volte vengono usate senza che noi ne abbiamo contezza, semplicemente celate nel codice eseguito: l’utente rileva solo la scrittura di una password (o passphrase,[23] o simili).[24]

KDF celebri: Argon2, Scrypt e PBKDF2. L’argomento può essere approfondito.[25],[26]

Conclusioni

Difficilmente le applicazioni di uso comune rinunceranno ad autenticare gli utenti usando una password. Bisogna abituarsi ad impiegare un password manager, sperando che i suoi suggerimenti su nuove password da inventare siano accettabili (non lo sono sempre, grazie alle regole vessatorie citate). L’altro suggerimento critico è il non riusare la password altrove: un servizio, una password differente. In letteratura esistono ampie dissertazioni volte a fornire suggerimenti su come costruire una nuova password, che vogliono anche occuparsi dei relativi aspetti psicologici. Ricordiamo che sono accessibili non solo a noi, ma anche all’attaccante.

Non sottovalutiamo il rischio del furto d’identità che, pur essendo ben noto alle forze dell’ordine, può anche concludersi con il nostro scagionamento, ma questo non eviterà di appartenere a liste, tramandate negli anni, di possibili sospetti, consultate al verificarsi di nuovi crimini.

Note

  1. In realtà esistono metodi alternativi di autenticazione, anche più sicuri. In https://en.wikipedia.org/wiki/Authentication una buona introduzione. In generale, le password vengono usate perché spesso richieste dal committente.
  2. L’autenticazione del soggetto che deve riconoscerci avviene tipicamente con metodi diversi, spesso basati su certificati digitali. Per questi ultimi si può vedere https://en.wikipedia.org/wiki/Public_key_certificate.
  3. Si veda ad es. https://en.wikipedia.org/wiki/Multi-factor_authentication.
  4. Se la connessione non è sicura è estremamente pericoloso inviare password, data la facilità con cui l’attaccante può carpire informazioni in transito attraverso la rete. Oggi la maggior parte delle connessioni sicure prevedono l’uso del protocollo https (https://en.wikipedia.org/wiki/HTTPS), anche se questo da solo non costituisce garanzia assoluta.
  5. Ad es., il sito https://haveibeenpwned.com/ contiene informazioni su oltre undici miliardi di account violati.
  6. Notare che una chiave segreta è simile a una password, ma migliore. La differenza principale sta nel fatto che le password, oltre a poter essere indovinate, possono essere costituite solo da simboli esprimibili mediante una tastiera, il che non esaurisce tutte le possibili combinazioni di bit. Quindi, a parità di lunghezza, ci sono più chiavi che password.
  7. Gli algoritmi di cifratura usati sono in genere pubblici, poiché è estremamente onerosa la “security by obscurity” e pochi possono permettersela. Inoltre, gli algoritmi pubblici hanno centinaia di migliaia di tester in tutto il mondo, per cui è più probabile – nel tempo – l’individuazione di una qualche falla. Ad esempio, il metodo di cifratura più usato al mondo, ed ancora considerato sicuro, è noto con il nome di AES (https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), introdotto dal NIST (https://en.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology) oltre vent’anni fa. Per competere, nel caso migliore, si dovrebbe definire un nuovo algoritmo e lasciarlo analizzare da tutto il mondo per i prossimi vent’anni.
  8. Ad es., le funzioni hash “one-way”. Sono funzioni non iniettive (e quindi non invertibili) e, quando scelte con “qualità crittografica”, assicurano sia la “preimage resistance” che la “second-preimage resistance” (https://en.wikipedia.org/wiki/Preimage_attack). Esistono varie funzioni candidate a tale ruolo, anche se nessuno ha mai saputo provarne formalmente l’esistenza. Per capirne l’importanza e difficoltà basti osservare che la prova implicherebbe che P ≠ NP (ma non il viceversa), risolvendo uno dei più importanti problemi aperti dell’informatica, per il quale è stato messo in palio un milione di dollari, nell’ambito dei celebri “Millennium Prize Problems”, formulati nel 2000 dal Clay Mathematics Institute (https://en.wikipedia.org/wiki/Millennium_Prize_Problems).
  9. Si veda, ad es., https://en.wikipedia.org/wiki/Rainbow_table (tecnico).
  10. Esistono numerosi progetti che mettono a disposizione liste di tutte le parole di una lingua, spesso per finalità della verifica dell’ortografia. Uno dei più celebri è LibreOffice (https://it.libreoffice.org/) che offre gratuitamente una suite completa di applicazioni per “office automation” ed il relativo supporto linguistico (es. https://extensions.libreoffice.org/en/extensions/show/italian-and-latin-spelling-dictionaries).
  11. V., ad es., le 10000 password più usate, secondo Wikipedia: https://en.wikipedia.org/wiki/Wikipedia:10,000_most_common_passwords. Ci sono diversi siti alternativi, come, ad es., https://cybernews.com/best-password-managers/most-common-passwords/. In generale le diverse liste che è possibile reperire non coincideranno nei dettagli ma saranno abbastanza simili, in quanto si riferiranno a brecce note in letteratura.
  12. Ci sono circa 36500 date di nascita differenti negli ultimi cento anni. Possono essere verificate in una manciata di secondi da un computer moderno che esegue miliardi di microistruzioni al secondo.
  13. V., ad esempio, AA. VV. “Le Prospettive della Cyber Intelligence,” Quaderno Tematico, 2022, Vol. N. 1, capitolo 10: “Tor, l‘anonimato e la cifratura telescopica”.
  14. V., ad es., https://en.wikipedia.org/wiki/Social_engineering_(security).
  15. Filosofo e umanista (1463 – 1494) noto soprattutto per la sua prodigiosa memoria.
  16. V., ad es., https://en.wikipedia.org/wiki/List_of_password_managers.
  17. https://bitwarden.com/download/.
  18. Basato sulla generazione di tutte le password concepibili. Per n bit, one n è il massimo numero di bit usati per una password, sono 2n.
  19. Bruce Schneier (New York, 1963) è un crittografo e saggista statunitense. Uno dei maggiori esperti di sicurezza al mondo. https://en.wikipedia.org/wiki/Bruce_Schneier.
  20. Bruce Schneier: Stop Trying to Fix the User. IEEE Secur. Priv. 14(5): 96 (2016).
  21. V., ad es., https://it.wikipedia.org/wiki/Encrypted_Key_Exchange.
  22. V., ad es., https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol.
  23. Come una password basata su un dizionario, ma composta da più parole.
  24. Per es., quando si fa uno zip con password, in realtà questa è usata per derivare una chiave di cifratura/decifratura.
  25. V., ad es., https://en.wikipedia.org/wiki/Key_derivation_function.
  26. https://blog.boot.dev/cryptography/key-derivation-functions/.
WHITEPAPER
Certificazioni GDPR: tutti i vantaggi per le organizzazioni che vi aderiscono
Legal
Privacy
@RIPRODUZIONE RISERVATA

Articolo 1 di 4