Perché l’autenticazione a due fattori è diventata una misura necessaria
Perché è così importante
Oggi l’autenticazione a due o più fattori non può più essere considerata un’opzione da utilizzare solo nei nostri account bancari (dove peraltro è obbligatoria) ma è diventata una necessaria misura di sicurezza da adottare per tutti i nostri account più importanti.
Non basta impostare password forti ed univoche: come abbiamo spiegato in un nostro precedente articolo, qualunque password potrebbe essere rubata e quindi compromessa.
Magari non per causa nostra, ma a seguito della compromissione del sito dove è stata registrata. Sono frequenti i casi di violazione di siti (data breach) con il furto massivo di migliaia o milioni di password: in questi casi le nostre password finiscono nel mercato nero del web e qualcuno potrebbe usarle per realizzare un Account Takeover (acquisizione dell’account).
Un’autenticazione basata solo su password è dunque intrinsecamente debole, anche se la password impostata è robusta, perché la sicurezza dell’account dipende da un solo fattore, appunto la password.
Per questo ci viene in aiuto la Strong Authentication o autenticazione forte a due o più fattori, definita anche 2FA o MFA (Multi-Factor Authentication). Essa rappresenta la misura di sicurezza più importante per proteggere l’accesso ai nostri account.
In ambito bancario è utilizzata ormai da anni ed è definita Strong Customer Authentication (SCA): la sua applicazione è stata ulteriormente rafforzata e resa obbligatoria per le operazioni bancarie online a seguito dell’entrata in vigore della Direttiva (UE) 2015/2366 nota come PSD2 (Payment Services Directive 2).
La SCA viene definita in modo molto preciso nella PSD2 all’art.4 comma 30 come:
«autenticazione forte del cliente»: un’autenticazione basata sull’uso di due o più elementi, classificati nelle categorie della conoscenza (qualcosa che solo l’utente conosce), del possesso (qualcosa che solo l’utente possiede) e dell’inerenza (qualcosa che caratterizza l’utente), che sono indipendenti, in quanto la violazione di uno non compromette l’affidabilità degli altri, e che è concepita in modo tale da tutelare la riservatezza dei dati di autenticazione”.
La medesima Direttiva indica i casi in cui è obbligatorio utilizzarla, cioè quando il pagatore:
- a) accede al suo conto di pagamento on line;
- b) dispone un’operazione di pagamento elettronico;
- c) effettua qualsiasi azione, tramite un canale a distanza, che può comportare un rischio di frode nei pagamenti o altri abusi.
Questa direttiva dell’Unione Europea è stata recepita dall’Italia con il D.Lgs. 15 dicembre 2017, n. 218 ed è in vigore in Italia dal 14 settembre 2019.
Molti utenti avranno notato, dopo questa data, che la loro banca ha reso più stringenti (e spesso anche più complicate!) le modalità di accesso ai servizi di internet banking.
Ormai tutti i siti importanti rendono disponibile l’autenticazione a due fattori, ma in forma facoltativa. Quindi sarà l’utente a doverla attivare come opzione aggiuntiva.
A darci la misura di questo determinante incremento di sicurezza è – per esempio – quanto esposto da Microsoft nel corso della RSA Conference 2020, svoltasi a San Francisco nel febbraio 2020. Nel corso di questo evento Microsoft ha evidenziato lo studio su oltre 1,2 milioni di account violati nel gennaio 2020: oltre il 99,9% di tali account violati non aveva la MFA (come evidenziato in figura).
Cosa è la 2FA/MFA
Quando eseguiamo l’autenticazione in qualunque servizio informatico (un sito, un account aziendale, ecc.), dopo aver inserito il nostro username dobbiamo autenticarci (dare dimostrazione non equivoca della nostra identità).
L’autenticazione può esser eseguita con modalità diverse che tipicamente sono le seguenti tre:
- CONOSCENZA: ”Una cosa che sai”, per esempio una password o il PIN.
- POSSESSO: ”Una cosa che hai”, come uno smartphone, una smartcard o un token di sicurezza.
- INERENZA: ”Una cosa che sei”, cioè un dato biometrico, quale l’impronta digitale, il timbro vocale, il viso, l’iride.
Nella maggioranza dei casi l’autenticazione avviene con la sola password: si definisce quindi “autenticazione ad un fattore”.
Si parla invece di 2FA se si usano almeno due dei tre fattori sopra elencati.
Ma affinché si possa definire propriamente “autenticazione a due fattori” è necessario che i due fattori utilizzati siano generati attraverso due modalità differenti tra le tre possibili. Non è corretto quindi parlare di 2FA se l’autenticazione è fatta con due password (perché due fattori della stessa natura).
È possibile – anche se molto meno diffusa – anche l’autenticazione a tre fattori (3FA), ovviamente se vengono richiesti insieme tutti i tre fattori.
Viene impiegata nello SPID (il Sistema Pubblico di Identità Digitale) di Poste Italiane, che offre appunto i tre diversi livelli di autenticazione:
- SPID 1: solo con la password associata allo UserID.
- SPID 2: con password più l’App PosteID, oppure un OTP (codice “one time password”) ricevuto via SMS. È la versione più utilizzata.
- SPID 3: oltre a password e App PosteID, richiede un terzo livello, che può essere una smart card o un dispositivo per la firma digitale remota (HSM).
Anche Aruba offre lo SPID di livello 3.
Come utilizzare la 2FA e come attivarla
Utilizzare la 2FA non è difficile e – come abbiamo detto – tutti i siti e servizi più importanti la prevedono, ma come opzione da attivare facoltativamente.
In questo utile sito è possibile consultare quali sono i servizi che la prevedono (e sono tanti!) e con quali opzioni alternative.
Quindi non abbiamo alcun motivo per non adottarla.
Dovremo accedere al servizio, facendo il login, poi entrare nella sezione del sito delle “Impostazioni di Sicurezza” (il nome può anche essere leggermente diverso, ma si tratta sempre della sezione dove andiamo, per esempio, a modificare la password).
Qui troveremo il menù dedicato all’autenticazione a due fattori, definita in alcuni casi “autenticazione forte”.
Una volta selezionata l’opzione “autenticazione a due fattori”, ci verrà chiesto la modalità con la quale vogliamo utilizzarla: in genere le soluzioni disponibili sono più di una, ma non tutte – come vediamo ora – ugualmente sicure.
Quasi sempre il primo fattore è comunque la password, mentre il secondo fattore potrebbe essere un codice numerico che, a differenza della password, viene generato in maniera pseudocasuale secondo uno specifico algoritmo (come spiegato in seguito) ed ha una durata molto limitata nel tempo (solitamente 30 secondi). Per questo motivo, lo si definisce anche OTP: “one time password”.
A differenza della password, che rimane invariata, questo secondo codice è di fatto inattaccabile, perché generato in maniera pseudocasuale e variato ogni 30÷60 secondi.
Il codice OTP può arrivare attraverso un SMS (meno frequentemente via email), oppure può essere generato mediante apposite applicazioni installate sul nostro smartphone. Siamo quindi nella modalità ”Una cosa che hai”.
Il codice OTP potrebbe anche essere generato da un Token hardware: una oggetto simile ad una chiavetta USB che fornisce il codice a tempo a seguito della pressione di un pulsante. In passato erano forniti dalle banche per accedere ai loro servizi di home bank, ma sono ormai abbandonati, in quanto non conformi alle nuove disposizioni della PSD2.
Sono considerati non sicuri, perché possono essere attivati senza alcun codice di sicurezza. Quindi in caso di furto o smarrimento, chiunque potrebbe utilizzarli.
Sono invece ammessi dalla PSD2 i codici OTP generati dalle app su smartphone.
Il motivo è spiegato chiaramente nella NIST SP 800-63B “Digital Identity Guidelines – Authentication and Lifecycle Management” (https://csrc.nist.gov/publications/detail/sp/800-63b/final): quando si usa una combinazione di due fattori di autenticazione, il secondo autenticatore deve essere basato sul possesso (cioè “qualcosa che hai”) e deve soddisfare il requisito di “garantire una resistenza all’impersonificazione”; in altre parole: impedire che qualcuno li possa usare al nostro posto. Questo è reso possibile perché lo smartphone richiede una procedura di sblocco per essere attivato.
Il secondo fattore può essere – in alternativa – di tipo biometrico (”una cosa che sei”). Ne abbiamo un esempio nelle applicazioni per smartphone che ci forniscono le banche: per aprire l’app ed anche per eseguire operazioni dispositive (p.es. fare un bonifico), ci viene richiesta la seconda autenticazione con l’impronta digitale o con il riconoscimento facciale.
Vediamo più in dettaglio quali sono le possibili alternative per il secondo fattore di autenticazione, presupponendo che il primo sia comunque la password. Per ciascuno esamineremo anche i vantaggi e gli svantaggi.
- SMS che ci viene inviato sullo smartphone che abbiamo indicato come attendibile: questo ci obbliga a fornire un numero di telefono, la qual cosa potrebbe essere sconsigliata per ragioni di privacy. Inoltre per funzionare richiede che lo smartphone sia connesso alla rete cellulare. È la modalità più diffusa, ma indiscutibilmente la meno sicura. Ciò a causa della ormai nota vulnerabilità del protocollo Signalling System No 7 (SS7): tale protocollo è piuttosto datato (fu sviluppato addirittura nel 1975) e le vulnerabilità di cui è affetto potrebbero consentire ad un attaccante l’intercettazione del messaggio con il codice OTP.
Ma il rischio più grave – e più frequente, soprattutto nel caso di account di home banking – è quello della SIM Swap Fraud: un malintenzionato che sia già riuscito ad avere le credenziali di accesso all’account bancario (per esempio con tecniche di phishing), potrebbe poi ottenere una SIM card con il nostro numero di telefono. Sebbene questo possa apparire un’eventualità poco probabile e complicata, in realtà si sono verificati numerosi casi in cui la SIM swap è stata perpetrata. Questo può accadere tramite tecniche di social engineering, così da indurre gli operatori di telefonia mobile a emettere una nuova SIM card, oppure con la complicità di un operatore del provider, o anche con la presentazione di un documento falso (ma talvolta l’utente riesce ad ottenere una nuova SIM senza che neppure gli venga richiesto un documento di identità).
La SIM swap permette di ottenere il completo accesso al numero di telefono del legittimo (e ignaro) proprietario di tale numero e quindi ricevere l’SMS con i codici di autenticazione a due fattori, ovviamente per realizzare operazioni bancarie. Il proprietario dello smartphone si troverà con il dispositivo muto e disconnesso dalla rete. Quando si sarà reso conto che la sua SIM non è più attiva potrebbe essere troppo tardi e i soldi già scomparsi dal suo conto corrente.
Per questo motivo, la 2FA con SMS è deprecata dal NIST nella già citata SP 800-63B, al capitolo 5.1.3 Out-of-Band Devices.
Quindi, potendo scegliere, consiglio di evitare sempre l’opzione SMS ed optare per le scelte seguenti. - Soft Token: sono applicazioni dedicate, che non richiedono la copertura telefonica e sono più sicure, perché legate non al numero di telefono, ma al dispositivo su sui sono installate. Restituiscono un OTP a 6 cifre, della durata in genere di 30 secondi, generato da un apposito algoritmo basato sul tempo ed associato allo specifico account.
Esistono numerose applicazioni del genere: le più note – tutte gratuite – sono Authy, Google Authenticator, Microsoft Authenticator. Anche i migliori password manager (di cui abbiamo parlato in questo articolo) offrono questa funzionalità: 1Password la implementa nel password manager stesso, mentre LastPass ha un’applicazione aggiuntiva dedicata (LastPass Authenticator).
Come utilizzare queste app: l’abbinamento va fatto (una volta sola quando si attiva la 2FA) attraverso la lettura di un QRcode che compare sullo schermo del computer e che dovremo inquadrare con la camera dello smartphone, nel quale abbiamo preventivamente aperto l’applicazione.
In questo modo viene eseguito l’Enrollment (registrazione) con lo scambio della chiave crittografica tra l’app sul dispositivo ed il sito. L’operazione permetterà di abbinare in futuro la specifica sessione del browser con la corrispondente istanza dell’app e generare una TOTP (Time-based One Time Password). Tale corrispondenza si basa sul timestamp T utilizzando un hash H (SHA-1) nella seguente funzione:
TOTP = HOTP(K, T)
ove:
T = (Current Unix time – T0)/X
X rappresenta la fase di tempo in secondi (predefinito X=30 sec.)
Questo algoritmo di generazione TOTP è codificato da due standard di riferimento emessi da IETF (Internet Engineering Task Force):
RFC-4226 (HOTP) (2005)
RFC-6238 (TOTP) (2011).
Nella fase di attivazione dell’autenticazione a due fattori è possibile (ma non sempre accade) che dal sito ci venga fornita anche una chiave di recupero, molto complessa e da conservare a parte. Tale chiave di recupero è da utilizzare solo in caso di password dimenticata o dispositivo smarrito o rubato.
Nella categoria dei Soft Token possiamo annoverare anche le app bancarie, che hanno la possibilità sia di generare un codice OTP, sia di fornire l’accesso con una seconda autenticazione di tipo biometrico.
Analogo funzionamento si trova nell’app PosteID, utilizzata per l’autenticazione SPID 2.
Ovviamente sia PosteID che le app delle banche sono dedicate ad un unico servizio. Viceversa le app precedentemente citate (quali Authy, Google Authenticator, Microsoft Authenticator) possono memorizzare differenti account ed essere utilizzate per qualsiasi servizio che supporti questa modalità di 2FA. - Token hardware: trascuriamo quelli che venivano in passato forniti dalle banche, che sono in via di dismissione, perché considerati non sicuri (per i motivi che abbiamo già spiegato e per effetto della PSD2).
Sono invece nati nuovi tipi di token, secondo lo standard FIDO U2F Security Key. Trattasi di uno standard di autenticazione open source, creato inizialmente da Google e da Yubico e successivamente confluito nella FIDO (Fast IDentity Online) Alliance.
Ne esistono numerosi modelli: i più semplici richiedono l’inserimento in una porta USB, quelli più avanzati (per esempio YubiKey) operano anche con NFC (Near Field Communication) o via Bluetooth come i Titan Security Key di Google (quindi possono essere utilizzati anche con gli smartphone che non hanno la porta USB).
I costi partono dai 20 dollari fino a 50-60 dollari ed oltre. Non è certamente il sistema più economico.
Ma il limite maggiore è dovuto al fatto che si tratta di una tecnologia recente, quindi con una diffusione ancora limitata. Solo alcuni browser la supportano, tra questi Chrome, Firefox ed Opera. Diventerà comunque lo standard del prossimo futuro, anche perché garantisce la conformità alla direttiva PSD2 per quanto riguarda la Strong Customer Authentication (SCA).
Quanto è complicato utilizzare la 2FA?
Nella pratica l’onere supplementare che ci viene richiesto è piuttosto modesto ed ampiamente ripagato dal notevole incremento in termini di sicurezza degli account.
L’attivazione della 2FA andrà fatta una volta sola.
Ai successivi login, dopo username e password, dovremo inserire il codice OTP a 6 cifre visualizzato dall’applicazione (o ricevuto via SMS) e che ogni 30 secondi verrà rigenerato.
Su molti siti è disponibile una comoda opzione chiamata in genere: “considera questo dispositivo attendibile” (o qualcosa di simile). Se la attiviamo (una tantum), nei login successivi – solo se eseguiti da quel dispositivo – non verrà più richiesto il codice OTP.
Questo non elimina la 2FA (che rimane attiva), né la rende meno sicura: poiché l’autenticazione a due fattori è finalizzata ad evitare accessi da computer o dispositivi diversi dai nostri, potremo fare in modo che il sito riconosca che stiamo facendo il login dal nostro “abituale” dispositivo e non ci richieda più il secondo fattore di autenticazione.
Continuerà a richiederlo, viceversa, se il login viene tentato da un dispositivo non riconosciuto come affidabile.
Articolo a cura di Giorgio Sbaraglia
Giorgio Sbaraglia, ingegnere, è Information & Cyber Security Advisor e svolge attività di consulenza e formazione per la sicurezza informatica, Risk Management e per il GDPR.