Deepfake: considerazioni su come proteggersi

Non dobbiamo necessariamente essere degli esperti in materia di informatica per proteggerci dal furto di credenziali, e anche se lo fossimo non potremmo garantirci al 100%. Non esiste infatti, una protezione assoluta quando ci troviamo davanti ad un sistema informatico. Come tempo fa si diceva: “un computer sicuro è un computer spento, staccato dalla corrente e dalla rete, tenuto sotto terra all’interno di una camera di cemento… e nemmeno in questo caso mi sentirei di garantire”.

 Pensiamo solo che ogni minuto nel mondo vengono rubate oltre 6000 credenziali.

Senza entrare nel dettaglio (non è questo lo scopo del lavoro di tesi) degli attacchi brute force, phishing, social engineering, script kiddies e SQL injection, riportiamo a titolo di esempio un caso reale su come funziona un attacco credential stuffing .

“Il signor Rossi è il responsabile finanziario di una grossa azienda, segue metodicamente le policy aziendali e non si permetterebbe mai di usare il proprio account ufficiale per siti non pertinenti o poco sicuri, nemmeno per accedere al forum del financialgod.org tanto è scrupoloso.
Però il signor Rossi ha una vita privata e, libero dalle policy aziendali, decide di usare la password carlo2000 (nome del figlio e anno di nascita) per iscriversi al sito della sua passione personale (pescadimontagna.com).
Il sito si rivela con una pessima sicurezza e viene facilmente “bucato” dai criminal hacker che, subito dopo, pubblicano le credenziali degli utenti su pastebin.com.
Succede dunque che uno di questi ragazzi decide di tentare il colpo e fa un po’ di indagini sui vari utenti trovati. Scopre che il signor Rossi è un personaggio di un certo rango all’interno dell’azienda e, indagando ancora più a fondo, riesce a trovare la sua casella di posta aziendale. Ma niente da fare: le attenzioni usate dal nostro soggetto nella gestione del suo account aziendale non consentono all’attaccante di accedere alla mailbox.
Allora l’attaccante decide di provare gli altri account social che nel frattempo è riuscito a trovare, profilando il signor Rossi in una maniera degna dei servizi segreti. Caso vuole che il signor Rossi abbia utilizzato la password carlo2000 per un altro account personale. Questo ha permesso al ragazzotto di ottenere parecchi dati speciali su passioni e attività del signor Rossi, oltre a numerosi numeri di telefono.
A questo punto il nostro attaccante ha forgiato una campagna mirata (includendo anche attacchi di tipo SMS spoofing) per far sì che il suo ufficio emettesse un bonifico di 50 mila euro ad una fantomatica ditta filippina.
La truffa ha dato i suoi frutti.”

Cosa dice il NIST

Ci sembra a questo punto utile richiamare la “bibbia” della sicurezza delle password e rifarci dunque alle regole del NIST [1]. L’ultimo standard pubblicato a questo riguardo è l’800-63-3 [2] del 2017, e descrive le politiche, le procedure e le linee guida del governo federale degli Stati Uniti per i sistemi e le reti informatiche.

Di seguito i punti più significativi:

  1. Non costringere gli utenti a cambiare le password periodicamente

La novità che salta subito all’occhio è quella che troviamo nel capitolo “Memorized Secret Verifiers”, dove si sottolinea che non si devono obbligare arbitrariamente le persone a cambiare periodicamente le password, oltre a non essere utile può anzi essere dannosa e portare l’utente ad utilizzare password banali per riuscire a ricordarle più facilmente. In altre parole, le politiche di scadenza delle password fanno più male che bene, perché inducono gli utenti ad impostare password molto prevedibili e strettamente correlate tra loro: quindi la password successiva può essere dedotta sulla base della password precedente.

La password infatti andrebbe comunque cambiata se c’è anche solo il sospetto o l’evidenza di una sua compromissione. Anche perché le password, quando rubate, vengono exploitate (sfruttate) immediatamente. La scadenza periodica della password è quindi una difesa solo contro la probabilità che una password (o il suo hash) venga rubata durante il suo intervallo di validità e venga utilizzata da un attaccante. Se una password non viene mai compromessa, non c’è bisogno di cambiarla. E se si ha la prova o sospetto che una password sia stata rubata, è opportuno che si agisca immediatamente piuttosto che aspettarne la scadenza per risolvere il problema.

Anche Microsoft ha rinnovato la sua “Microsoft Password Guidance”, abbandonando la policy di scadenza delle password. E lo motiva con 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. 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”.

  1. Lunghezza minima delle password

La lunghezza minima per la password dovrebbe essere di almeno 8 caratteri, ma deve essere consentita una lunghezza massima di almeno 64 caratteri. Inoltre, tutti i caratteri ASCII (RFC 20) dovrebbero essere accettati.

Molti siti purtroppo impongono lunghezze massime ridicole e non accettano caratteri speciali, limitazione questa da considerarsi non più accettabile. Anche le “regole di composizione” non devono risultare una imposizione, come quelle che richiedono “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.

Anche l’imposizione delle domande di sicurezza è deprecata dal NIST, che invita a non richiederle più. Tali domande (dette “hint”, suggerimento) sono in genere di questo tipo:

  • Il nome del tuo primo animale?
  • La città in cui sei nato?

Le risposte saranno molto banali e chi ci conosce potrebbe facilmente indovinarle.

  1. Consentire l’uso della funzione incolla

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 aumentano la probabilità che gli utenti scelgano password più forti.

  1. Consentire la visualizzazione durante la digitazione

Per aiutare il richiedente ad inserire con successo un segreto memorizzato (la password), il verificatore dovrebbe offrire la possibilità di visualizzare il segreto e non una serie di punti o asterischi, fino al suo inserimento.

  1. Autenticazione a due fattori

Chiaramente è anche consigliata l’autenticazione a due fattori, per la quale vengono esaminate le varie modalità disponibili. Per esempio, vengono evidenziati i rischi dell’utilizzo della linea telefonica per ricevere il secondo fattore OTP (one time password): una telefonata o un SMS con il codice OTP potrebbero essere dirottati dall’attaccante se questi riesce a realizzare una SIM swap (la clonazione della SIM).

Meglio utilizzare un “Multi-Factor OTP Device”, potrebbe trattarsi anche di uno smartphone (“una cosa che hai”), che attraverso un’applicazione apposita genera 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 sei cifre.

Per maggior sicurezza, 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, la faccia ecc.).

Con quest’ultimo passaggio si capisce perché, con l’entrata in vigore della Direttiva (UE) 2015/2366 nota come PSD2 (recepita dall’Italia con il D.lgs. 15 dicembre 2017, n. 218), non sono più ammessi i token hardware per l’autenticazione nei siti bancari: erano dispositivi non sicuri, perché potevano essere attivati senza alcun codice di sicurezza. Quindi in caso di furto o smarrimento, chiunque avrebbe potuto utilizzarli.

  1. Indicazioni agli amministratori di sistema, l’uso del salt

Il NIST conclude dando indicazioni agli amministratori di sistema, in particolare che salvino le password sotto forma di hash utilizzando il “salt”[3]. In questo modo si rendono molto più onerosi gli attacchi “a dizionario” e quelli “brute force”.

Lo scopo del salt è infatti quello di moltiplicare il numero di combinazioni hash possibili, a fronte di ciascuna password.

Per una data password (che se priva del salt avrebbe un unico hash come risultato), il numero di possibili combinazioni diventa invece pari a: 2sLen dove sLen è la lunghezza del salt in bit.

Per esempio, con un salt di 32 bit il numero di hash possibili si moltiplica di un fattore pari a 232 = 4.294.967.296, ove il valore di 32 bit è la lunghezza minima consigliato dallo standard 800-63B.

In abbinamento ad hash e salt, lo standard consiglia (per i Verifiers che conservano le password ed eseguono il processo di autenticazione dell’utente) di implementare anche algoritmi di derivazione della chiave KDF (Key Derivation Function).

L’algoritmo prevede l’utilizzo di una password e di un salt, a cui si aggiunge un “iteration count” che specifica il numero di volte in cui una funzione hash deve essere ripetuta prima di restituire la chiave derivata. Un “iteration count” elevato renderà l’attacco computazionalmente più oneroso, fino a fare diventare il crack delle password praticamente impossibile[4].

Il NIST raccomanda un valore di “iteration count” pari almeno a 10.000 iterazioni.

 

[1] Il National Institute of Standards and Technology è un’agenzia del governo degli Stati Uniti d’America che si occupa della gestione delle tecnologie. Nato nel 1901, il NIST ha come compito istituzionale quello di sviluppare standard tecnologici. In particolare, pubblica i Federal Information Processing Standard (FIPS), che definiscono gli standard obbligatori del governo statunitense. Questi standard non sono cogenti in Europa, ma considerata la loro autorevolezza sono un punto di riferimento a livello mondiale.

[2] https://pages.nist.gov/800-63-3/sp800-63-3.html

[3] Un salt (sale) è un numero generato in modo casuale che viene aggiunto in coda al testo della password. Da tale stringa composta, viene poi calcolata la chiave derivata (hash).

[4] In crittografia, con il termine “impossibile” si intende un processo non realizzabile con gli strumenti computazionali disponibili.