#6. Le password, croce e delizia
Piccolo glossario dei concetti e dei termini della cybersecurity
Le password o parole chiave, assieme alla user-id o nome utente formano le credenziali di autenticazione, ovvero, il dispositivo di autenticazione universalmente utilizzato per accedere a tutti i servizi online. Come sappiamo, il nome utente è solitamente stabile, mentre la parola chiave deve variare con una certa frequenza. Ora, concentriamoci per un momento sulle password: perché sono croce e delizia?
Beh, perché quella contro le password è una guerra che combattiamo ogniqualvolta abbiamo bisogno di muoverci nel complesso mondo digitale. Ci sono due tipi di persone: quelli che se ne fregano ed utilizzano la stessa password su tutti i siti web a cui sono registrati e poi ci sono quelli che prendono questa questione maledettamente sul serio e sfoderano in tutto il suo splendore la nostra naturale tendenza a complicarci la vita. La prima casistica è fatta da quelle persone che non vogliono scocciature e pensano che usare password diverse per i vari siti web sia solo una perdita di tempo. In genere le password che utilizzano hanno a che fare con il proprio nome o con le date di nascita dei figli o con una sequenza numerica tipo 12345 o, perfino, con una sequenza di caratteri del tipo forzasquadradelcuore. La loro indole pratica li porta a pensare che: "tanto, se qualcuno vuole entrare nella mia casella di posta non sarà una password a fermarlo" e allora, meglio fare le cose semplici ed evitare seccature.
Poi ci sono quelli che appartengono al secondo gruppo. Questi signori sono talmente coscienziosi che non solo usano una password diversa per ogni sito web a cui sono registrati ma, ove possibile, attivano il secondo fattore di autentica-zione e, dulcis in fondo, registrano ordinatamente le loro credenziali su di un password manager, ovvero, uno di quegli strumenti che proteggono le tue password utilizzando algoritmi avanzati di crittografia dei dati in esso contenuti. In genere i password manager sono strumenti affidabili e ben protetti e rendono molto difficile un’eventuale furto delle credenziali. Solitamente richiedono (anch’essi) l’impostazione di una password piuttosto lunga e complessa e di un pin aggiuntivo. Insomma, sono una specie di cassaforte che si apre con una combinazione molto complessa il che rende improbabile l’accesso fraudolento ma rende anche parecchio complicata la vita al legittimo proprietario delle password in esso contenute. Solitamente fila tutto liscio, ma se ti dimentichi la master key (la chiave della cassaforte) la tragedia assume dimensioni bibliche. Anche il secondo fattore di autenticazione (che aumenta di molto il livello di protezione dell’accesso ai servizi online) può porre diversi problemi ad esempio in caso di cambio del proprio smartphone e se c’è la necessità di riconfigurare per bene la modalità di generazione dei codici numerici prodotti da una delle varie App di autenticazione a ciò dedicate disponibili sul mercato (es. Google Authenticator e MS Authenticator).
L’obiettivo dei cybercriminali è sottrarre ai legittimi proprietari le credenziali per l’accesso ai siti web o ai sistemi di elaborazione e per fare ciò tentano di indurre i bersagli a scaricare software malevolo sul proprio PC. Si tratta di un fatto cruciale: le credenziali sono la chiave che consente di accedere ai dati che sono la risorsa pregiata della digital economy, l’elemento da proteggere e da valorizzare al tempo stesso, il carburante che fa girare tutto.
Secondo il report del mese di ottobre 2020 dell’osservatorio Clusit[1], l’incremento degli attacchi compiuti con tecniche di phishing e social engineering nell’ultimo anno è in crescita del 26%, mentre i settori più colpiti sono stati la sanità assieme alla GDO ed al settore dei servizi online e del cloud.
Ora, veniamo al nocciolo del problema. Le credenziali sono indispensabili perché le applicazioni e i sistemi hanno bisogno di riconoscere chi tenta di connettersi sia per verificare il diritto all’accesso che per, eventualmente, autorizzarlo all’uso di un insieme di funzionalità ben definito. Abbiamo visto che gestire in modo ragionevolmente sicuro l’autenticazione tramite le password è effettivamente complesso e d’altra parte, costruire una password sufficientemente robusta non è affatto banale. Il combinato disposto di questi due fatti, rende il tema veramente difficile da gestire.
Veniamo alla costruzione di una password sicura. Una password è tanto più sicura quanto è resiliente a tentativi di attacco di brute force, ovvero, di quegli attacchi che tentano di indovinarne il contenuto attraverso strumenti automatici[2] costruiti ad hoc che esaminano tutte le combinazioni teoricamente possibili. La robustezza di una password dipende dalla sua composizione, ovvero dal tipo di caratteri di cui è composta (lettere maiuscole e minuscole, numeri, caratteri speciali) e dalla sua lunghezza. Più una password è lunga e più l’insieme di caratteri di cui è composta è complesso e più tempo ci vorrà a trovare la combinazione giusta. Una password corta composta da un insieme di caratteri molto limitato può essere individuata in pochi millisecondi; una password lunga e composta da un insieme di caratteri ampio, può essere individuata in anni (addirittura nell’ordine delle migliaia). Bisogna, poi, considerare che i tempi di cui abbiamo parlato dipendono anche da un terzo ulteriore fattore: la potenza degli strumenti di elaborazione utilizzati per eseguire l’algoritmo di brute force che, sappiamo bene, è in continua crescita. Questo vuol dire che le nostre password diventano meno sicure via via che il tempo passa e che per mantenere inalterato il loro livello di robustezza è necessario aumentarne progressivamente la complessità.
Una variante dell’attacco a forza bruta è l’attacco "a dizionario" che consente di provare a decifrare una password esaminando un numero finito di termini presenti, appunto, in un dizionario che è incluso nel kit utilizzato per effettuare l’attacco. L’obiettivo è ridurre i tempi di ricerca contando sul fatto che la maggior parte delle persone tende a usare password semplici da ricordare: come vedevamo, il nome proprio, quello di persone care o date di nascita. Esistono dizionari che contengono milioni di password comunemente utilizzate ed è buona pratica inserire questi medesimi dizionari nei sistemi di registrazione ai siti web o nei sistemi di cambio password per evitare che, nella composizione della nuova password, siano utilizzate sequenze di caratteri facilemente individuabili con attacchi a dizionario.
Insomma, sintetizzando, ci troviamo di fronte ad un dispositivo di autenticazione intrinsecamente debole a meno che non si innalzi significativamente il suo livello di complessità, il che aumenta in modo altrettanto significativo la sua complessità di gestione. Di recente, poi, si è assistito all’introduzione in molti ambiti del secondo fattore di autenticazione, sicuramente in ambito bancario dove è divenuto obbligatorio in base alla normativa PSD2[3]. Abbiamo anche visto che la sua gestione non è semplicissima e in alcuni casi comporta anche dei costi aggiuntivi.
Una possibile via d’uscita arriverà dall’evoluzione della tecnologia che consentirà di implementare pienamente il modello classico di autenticazione[4] che prevede tre livelli, di complessità crescente, che sono basati su:
- "Una cosa che sai", ovvero, una password o un PIN;
- "Una cosa che hai", ad esempio, uno smartphone o le chiavette per generare codici in uso fino a qualche tempo fa per i sistemi di remote banking;
- "Una cosa che sei", ad esempio, un qualsiasi dato biometrico (impronta digitale, viso, iride, timbro della voce) processabile all’interno di una procedura di autenticazione.
In particolare, oggi, su alcuni smartphone è possibile sostituire il primo e il secondo livello del modello appena descritto, direttamente con un’implementazione del terzo livello: il riconoscimento del viso. Forse vi è già capitato di vederlo o di utilizzarlo: con gli smartphone di ultima generazione e di fascia alta, è possibile sostituire il tradizionale accesso di tipo 1) e 2) con un accesso di tipo 3) basato sul riconoscimento del visus. È una misura attivata su quasi tutte le app di remote banking e su molte app che custodiscono dati personali e dati delle carte di credito. Vediamo come funziona e perché, al momento, è utilizzabile solo sugli smartphone di fascia alta.
Innanzitutto, l’accesso biometrico non sostituisce completamente l’accesso con password ed il secondo fattore di autenticazione. Normalmente la prima autenticazione avviene attraverso questi due metodi e poi, quando l’identità dell’utente è accertata, l’app vi consente di sostituire questi due metodi con un terzo, appunto, il riconoscimento del volto. D’ora in avanti, per accedere all’app o per confermare le sue funzionalità più critiche (come l’esecuzione di un bonifico in un’app di mobile banking) basterà inquadrare il proprio volto e il gioco è fatto.
Chi gestisce il dato biometrico? In realtà il codice derivante dal riconoscimento del viso è legato al vostro smartphone e non alle singole app che lo utilizzano. Prima dovete abilitare il riconoscimento del viso sul vostro smartphone e poi le app che avete installato potranno utilizzarlo. Il risultato iniziale della scansione del viso, ovvero, l’elemento che sarà utilizzato per il confronto ogni volta che un’app richiederà di verificare la liceità di un accesso è contenuto in un chip hardware all’interno dello smartphone. Quindi, la nostra identità è legata allo smartphone, ovvero, "una cosa che hai" e quindi tipo 2), ed è basata sul riconoscimento del volto, ovvero, su "una cosa che sei" e quindi tipo 3). Le app, una volta effettuata la prima autenticazione usando le procedure di tipo 1) e 2) possono associare a quella identità il riconoscimento del viso. Da quel momento in poi, ogni volta che serve verificare l’identità dell’utente, l’app chiederà allo smartphone di effettuare il riconoscimento del viso ed in risposta da esso riceverà un ok (se siamo noi) o ko se il viso non è riconosciuto.
Questa modalità è attivabile solo su smartphone che siano dotati di un chip in grado di custodire al suo interno l’identità in modo sicuro[5] ed abbiano una videocamera idonea al riconoscimento del volto e, quindi, solo sugli smartphone di fascia alta. Lo stesso ragionamento vale per i PC.
Tutto ciò in attesa che lo sviluppo di questa tecnologia renda disponibile nuovi metodi sicuri per adottare la modalità di autenticazione di tipo 3) anche su smartphone e PC di fascia più bassa rispetto a quelli sui quali è ad oggi possibile attivarla.
App di autenticazione. App che consente di generare codici validi come secondo fattore di autenticazione per uno specifico sito web. Richiede una procedura di configurazione del sito web nell’app che viene, solitamente, effettuata inquadrando con la telecamera dello smartphone un qr-code messo a disposizione dal sito web al cui interno è contenuta la chiave che serve a generare i codici.
Brute force. Con metodo forza bruta (o anche ricerca esaustiva), indica un algoritmo in grado di verificare tutte le soluzioni teoricamente possibili fino a che si trova quella effettivamente corretta. Il suo principale fattore positivo è che esso consente teoricamente di trovare sempre la soluzione corretta, ma per contro è sempre la soluzione più lenta o dispendiosa.
Codice Utente (user-id). È il codice che consente ad un’applicazione o ad un sito web di riconoscere univocamente l’utente che si sta connettendo. Solitamente, i sistemi di autenticazione legano al codice utente una serie di caratteristiche funzionali (profilazione) che permettono al sito web di mostrare all’utente una serie di pagine personalizzate.
Credenziali di autenticazione. Sono composte dall’accoppiata codice utente e password e costituiscono le informazioni minime per accedere ad un sito web.
Hash. Le funzioni di hash consentono apartire da una qualsiasi stringa in input A, di produrre una stringa B (impronta) che ha una lunghezza costante, a prescindere dalle dimensioni di A. In pratica, una funzione di hash rileva "l’impronta digitale" di un testo, ma da questa impronta è impossibile risalire al testo iniziale.
Hashcat. È, probabilmente, il software per il recupero password "più veloce al mondo". Ha avuto un codice proprietario fino al 2015, ma ora è rilasciato come "free software". Sono disponibili versioni per Linux, OS X, e Windows. La sua particolarità sta nel fatto che per gli attacchi consente di poter sfruttare la potenza di calcolo dei processori grafici (GPU), oltre che della più classica CPU.
Hydra. È lo strumento per eccellenza quando si tratta di effettuare attacchi brute force, soprattutto se nel mirino c’è un servizio d’autenticazione remota. È molto potente e supporta oltre cinquanta protocolli, tra cui telnet, ftp, http, https, e smb.
Identità digitale. In un’accezione ampia è costituita dall’insieme di informazioni presenti online in relazione ad un determinato soggetto. In senso più stretto, l’identità digitale è articolata in due parti: l’identità vera e propria e le credenziali che ognuno possiede (gli attributi di tale identità). Identità (username) e credenziali (password o dispositivi più complessi) sono la chiave per accedere a tutte le informazioni che ci riguardano e che sono memorizzate online.
Jonny The Ripper (JTR). È un software open source che permette di effettuare attacchi di tipo dizionario o brute force. Inoltre, rileva automaticamente dall’hash, il tipo di cifratura usato. È disponibile per ogni sistema operativo, Windows, Linux e Mac Os, e si può scaricare gratuitamente dal sito OpenWall, anche se esiste una versione pro a pagamento.
PSD2 (Payment Services Directive 2). È una direttiva europea che regolamenta i servizi di pagamento e i gestori dei servizi di pagamento all’interno dell’Unione europea.
Secondo fattore di autenticazione. È composto, solitamente, da un codice numerico di sei cifre che viene richiesto dai siti web che supportano tale modalità dopo aver inserito in modo corretto le proprie credenziali di autenticazione. In questo caso il sito web a cui si sta accedendo richiede l’inserimento di un codice numerico per completare l’autenticazione. Il codice numerico può essere inviato all’utente via SMS o generato dall’utente medesimo tramite un’APP Authenticator opportunamente configurata per generare codici per lo specifico sito web. Questa modalità aumenta la sicurezza in fase di autenticazione perché, anche se le credenziali di autenticazione fossero state sottratte all’insaputa del legittimo proprietario, il secondo fattore (indispensabile a completare la procedura di autenticazione) verrebbe recapitato sullo smartphone che si suppone essere ancora in possesso del legittimo proprietario.
Trusted Platform Module (TPM). È un chip contenuto all’interno degli smartphone (ma anche dei PC) di ultima generazione in grado di mantenere in modo sicuro le informazioni biometriche utilizzate per l’autenticazione degli utenti.
Username. Il nome identificativo dell’utente che è normalmente visibile, diversamente dalla password.
[1] https://clusit.it/rapporto-clusit/
[2] Hydra, Hashcat, Jonny The Ripper (JTR), (vedi Glossario).
[3] PSD2 è una direttiva europea che regolamenta i servizi di pagamento e i gestori dei servizi di pagamento all’interno dell’Unione europea.
[4] NIST SP 800-63
[5] TPM – Trusted Platform Module (vedi Glossario)
Di Marcello Fausti