L’autenticazione a due o più fattori, definita anche “strong authentication” o 2FA e MFA (Two-Factor Authentication e Multi-Factor Authentication) non dovrebbe più essere un’opzione, ma rappresenta ormai una necessità che chiunque dovrebbe adottare sui propri account, personali o aziendali.
Si è parlato di doppia autenticazione proprio in questi giorni, a seguito della comunicazione fatta da Twitter che ha informato che dal 20 marzo bisognerà essere utenti Twitter paganti (Blu) per usare l’autenticazione a due fattori tramite SMS (ne abbiamo parlato qui).
Tale modifica nei termini di servizio di Twitter potrebbe avere come risultato quello di ridurre il numero degli utenti che utilizzeranno su Twitter la MFA, con immaginabili conseguenze per la sicurezza degli account.
Indice degli argomenti
Perché l’autenticazione a due fattori è necessaria
Dovrebbe essere noto a tutti che la sicurezza degli account dipende dalla forza della password.
In un precedente articolo abbiamo già spiegato quali sono le regole per una password forte e sicura (e soprattutto sempre diversa nei vari account).
Abbiamo anche indicato nei Password Manager lo strumento oggi più utile e sicuro per memorizzare le tante password che ciascun utente si trova a dover gestire nella sua vita digitale.
Ma tutto questo non può bastare, perché qualunque password – per quanto forte sia – potrebbe essere rubata o scoperta, magari grazie a tecniche di social engineering, con email di phishing oppure mediante keylogger. Inoltre, qualunque account potrebbe risultare vulnerabile agli attacchi di tipo brute-force.
Per questo motivo, un’autenticazione basata solo su password è intrinsecamente debole, anche se la password impostata è robusta, perché la sicurezza dell’account dipende da un solo fattore, appunto la password.
Il rischio di compromissione dell’account è inoltre aumentato dalla pessima abitudine di molto utenti di utilizzare la stessa password su sistemi e account differenti.
Attivando un sistema di autenticazione a due fattori questo tipo di rischi viene assai ridotto. Anche entrando in possesso delle credenziali dell’utente con tecniche di social engineering, l’attaccante non avrebbe comunque accesso al fattore di seconda autenticazione.
Purtroppo, l’autenticazione a due fattori risulta essere ancora poco conosciuta e poco adottata dalla maggioranza degli utenti.
Lo segnala il recente rapporto “THE 3RD Annual Global Password Security Report” pubblicato da LastPass, uno dei più noti password manager realizzato da LogMeIn.
Il rapporto indica che l’uso complessivo della MFA è in aumento nel mondo, soprattutto in ambito business, ma questo trend virtuoso non si registra in alcune nazioni, tra cui l’Italia.
L’utilizzo della MFA è più elevato in Danimarca, seguita a ruota da Paesi Bassi e Svizzera. Mentre in Paesi come l’Italia, la Svezia, la Spagna e la Francia, l’utilizzo della MFA è significativamente inferiore.
Come spesso accade quando si tratta della cyber security, vediamo che l’Italia si colloca all’ultimo posto in questa classifica: solo il 20% degli utenti delle aziende hanno attivato la MFA.
Come si realizza l’autenticazione a due fattori
Nella maggior parte dei casi l’autenticazione utilizza un solo fattore che in genere è una password.
Se si utilizza la MFA, i fattori per l’autenticazione devono utilizzare almeno due dei seguenti:
- qualcosa che l’utente conosce: generalmente si tratta di una password, ma può essere qualsiasi informazione conosciuta soltanto dall’utente;
- qualcosa che possiede l’utente: potrebbe esserlo smartphone, una chiave hardware, una chiavetta USB o un token fornito dalla banca;
- qualcosa che è parte dello stesso utente: trattasi tipicamente di un dato biometrico come le impronte digitali, la voce, l’iride;
- qualche luogo in cui si trova l’utente: questa quarta modalità di autenticazione viene talvolta utilizzata dai gestori delle carte di credito, per verificare se la posizione dell’utente è compatibile con il pagamento che sta eseguendo.
Si ha la 2FA/MFA se si usano almeno due dei fattori sopra elencati. Ma non basta: la condizione affinché si possa definire “autenticazione a due fattori” si verifica solo quando i due fattori utilizzati sono di matrice differente: in altre parole se, per esempio, si usa “Una cosa che sai” + ”Una cosa che hai”.
Mentre non può essere – a rigore – considerata 2FA un’autenticazione fatta con due password (perché due fattori della stessa natura).
Utilizzando almeno due dei fattori di autenticazione appena visti, le probabilità che un attaccante riesca ad avere accesso ad entrambi i componenti sono statisticamente molto basse.
Uno studio presentato da Microsoft alla RSA Conference 2020 di San Francisco ha dimostrato come, su un campione di oltre 1,2 milioni di account compromessi, oltre il 99,9% di questi non aveva attivato la MFA.
La MFA è obbligatoria per gli account bancari e delle carte di credito, per effetto della Direttiva (UE) 2015/2366 (PSD2), mentre in molti altri siti è opzionale: spetta all’utente la scelta di attivarla.
Ormai tutti i siti più importanti la prevedono: per vedere quali siano e le differenti opzioni disponibili è possibile consultare il sito daito.
Consigliamo di adottarla sempre per i siti ed account più importanti, quali gli account e-mail, quelli aziendali come la VPN e anche per i propri profili social.
Questi ultimi sono oggetti di violazioni e furti molto frequenti (soprattutto Instagram e Facebook), le cui conseguenze possono essere gravi per il titolare del profilo social.
Il rischio non è solo quello di non avere più accesso al proprio profilo, ma quello – ben più grave – che il malintenzionato utilizzi il profilo per compiere truffe a nostro nome.
Un ulteriore vantaggio derivante dall’uso della 2FA: se la attiviamo, non ci verranno più chieste le deprecate domande di sicurezza.
La scelta della tipologia del secondo fattore non è indifferente, cioè non tutti i fattori di autenticazione garantiscono lo stesso livello di sicurezza, come vedremo ora.
L’autenticazione con SMS è la meno sicura
Con l’autenticazione a due fattori basata su SMS e voce, gli utenti forniscono i numeri di telefono al momento della registrazione e ogni volta che devono accedere al proprio account, viene generato un codice monouso (OTP in genere a sei cifre) che viene inviato al numero di telefono con cui si sono registrati (tramite un messaggio di testo o anche una telefonata automatica).
Tra tutte le opzioni possibili, questa è la soluzione più diffusa, facile da usare e che non richiede dispositivi quali smartphone per funzionare (è sufficiente avere un feature phone in grado di ricevere SMS).
Ma rappresenta la scelta meno sicura.
Pur essendo sempre meglio avere l’MFA con SMS piuttosto che non averla per nulla, potendo scegliere (e in genere la scelta è possibile) è consigliabile utilizzare altre modalità.
Il protocollo utilizzato per l’invio degli SMS all’utente – Signalling System No. 7 (SS7) – è un protocollo molto datato, sviluppato addirittura negli Anni 70, è vulnerabile ed è stato violato. Quindi i codici OTP (One Time Password) inviati agli smartphone potrebbero potenzialmente essere intercettati.
Ma esiste un rischio addirittura peggiore: la SIM swapping o clonazione della SIM. Significa che un utente malintenzionato potrebbe ottenere una SIM card con il numero di telefono della vittima. Può riuscirci con semplici tecniche di social engineering presso un negozio di telefonia o anche online, magari utilizzando un documento falsificato.
Con questa tecnica sarà lui a ricevere l’SMS con i codici di autenticazione, ovviamente per realizzare disposizioni bancarie fraudolente.
La clonazione della SIM è un problema serio che in questi anni ha causato danni importanti ad utenti che si sono trovati con il conto corrente prosciugato.
Per questo motivo l’autenticazione basata su SMS è stata deprecata dal NIST (National Institute of Standards and Technology) nel documento SP 800-63B “Digital Identity Guidelines – Authentication and Lifecycle Management” pubblicato a giugno 2017, nel cap.5.1.3.3: ne abbiamo parlato in un precedente articolo.
Le banche sono ovviamente consapevoli di questo rischio, perché allora rendono ancora disponibile l’opzione di MFA con SMS?
È evidentemente una scelta commerciale per non perdere quei clienti che non possono o non vogliono usare uno smartphone con applicazione dedicata: in questo caso l’SMS diventa l’opzione obbligata.
In realtà, oggi la SIM swap è diventata meno facile per l’attaccante, a seguito dell’intervento realizzato appositamente dall’Autorità per le Garanzie nelle Comunicazioni per il cambio della SIM.
Trattasi della delibera 86/21/CIR del luglio 2021 dell’AGCOM, successivamente aggiornata a seguito dei lavori del Tavolo Tecnico composto da AGCOM, banche e gestori telefonici. Tale aggiornamento è stato pubblicato il primo marzo 2022 per entrare in vigore non oltre il 15 novembre 2022.
Dopo questa data molti utenti avranno sperimentato quanto è diventato più complicato (anche per un cittadino onesto!) effettuare un cambio di SIM.
2FA con applicazioni dedicate: gli authenticator
L’autenticazione 2FA con “qualcosa che hai” può utilizzare l’oggetto che abbiamo sempre con noi: il nostro telefono.
Tali applicazioni sono definite “Token Software”, in pratica si comportano esattamente come gli SMS: generano un OTP a 6 cifre, associato ad uno specifico account.
Questa soluzione di 2FA richiede che l’utente scarichi ed installi un’app di autenticazione a due fattori sul proprio smartphone (alcune sono disponibili anche per desktop). Ne esistono molte e tutte gratuite, come vedremo.
Come funzionano gli authenticator
L’utilizzo è molto semplice: se un sito offre questo tipo di 2FA con l’app Authenticator (cioè gli sviluppatori del sito devono aver reso disponibile questa opzione), l’utente potrà attivare la 2FA all’interno delle impostazioni del sito.
A questo punto ci verrà mostrato sullo schermo un codice QR contenente la chiave segreta. Il codice QR dovrà essere scansionato dall’applicazione Authenticator.
Questa scansione è definita Enrollment, o registrazione: in pratica, viene scambiata una chiave univoca (un seme) che permetterà di contraddistinguere in futuro la specifica sessione del l’account sul browser oppure la specifica istanza dell’app.
Una volta scansionato il codice QR, l’applicazione produrrà un nuovo codice di sei cifre che cambierà ogni 30 secondi.
Nei casi in cui il QRcode non sia disponibile è possibile – in alternativa – inserire manualmente la chiave segreta (ovviamente fornita dal sito o app su cui intendiamo attivare la 2FA) e creare il codice TOTP (Time-Based One-Time Password) sull’app.
Con qualsiasi sito compatibile – e con la 2FA così impostata – gli utenti possono fare il login inserendo un nome utente e una password, per poi accedere all’app di autenticazione per leggere un codice di accesso unico generato dal software e basato sul tempo (TOTP), necessario per completare il tentativo di accesso.
Il vantaggio di questo tipo di autenticazione a due fattori è che non è necessario essere connessi a una rete mobile e non occorre neppure comunicare il nostro numero di telefono al sito. Se un hacker reindirizza il nostro numero di telefono al proprio con una SIM swap, non avrà comunque i nostri codici QR.
Esistono molte app Authenticator per smartphone disponibili gratuitamente sugli store.
È importante sapere che queste app sono equivalenti, cioè utilizzano lo stesso algoritmo di funzionamento, perché il codice TOTP che viene creato non è un numero casuale.
TOTP è generato da un algoritmo – basato su HOTP (HMAC-based One Time Password) – che produce una password one-time (OTP) da una chiave segreta condivisa K (quella scambiata con la lettura del QRcode) e sulla base dell’attuale timestamp T del dispositivo utilizzando una funzione hash H (di tipo SHA-1). Quindi:
TOTP = HOTP(K, T) ove T = (Current Unix time – T0)/X
dove X rappresenta la fase di tempo in secondi (predefinito in genere X=30 sec.) .
Questo processo è stato standardizzato dalla RFC-6238 “TOTP: Time-Based One-Time Password Algorithm”pubblicata nel 2011 da IETF (Internet Engineering Task Force).
Le app Authenticator sono disponibili sia per Android che per iOS, elenchiamo qui alcune delle più note: OTP auth (solo per dispositivi Apple), Step Two, Twilio di Authy, Google Authenticator, Microsoft Authenticator, Cisco Duo Mobile, FreeOTP (open-source), AuthPoint di WatchGuard, Authentication di Eset, andOTP (solo per Android), ecc.
I migliori password manager (per esempio 1Password) offrono anche l’autenticazione a due fattori per impostazione predefinita come funzione aggiuntiva all’interno del password manager.
Esiste anche un autenticatore integrato in iOS e macOS. A partire da iOS 15, su iPhone è disponibile un generatore di codice 2FA integrato. Lo trovate su Impostazioni → Password, selezionate un account memorizzato (o createne uno nuovo), e sotto la voce Opzioni account selezionate “Configura codice di verifica”: a questo punto si può scansionare il QRcode, come per le app già citate e creare il codice TOTP.
Authy: cos’è e quali vantaggi offre
Alcune di queste app esistono anche per i sistemi desktop, quali WinAuth per Windows, ma una delle più consigliate è Authy di Twilio.
Authy presenta il vantaggio di essere multipiattaforma: non solo ha l’applicazione per tutti i sistemi operativi mobili e desktop (e anche per Apple Watch), ma permette di sincronizzarli facilmente tra loro. Per fare questo Authy richiede la creazione di un account utente protetto da password di accesso.
Quindi i token 2FA che sono stati registrati su Authy si sincronizzano automaticamente con qualsiasi nuovo dispositivo che venga collegato all’account Authy.
Inoltre, Authy permette il ripristino dei backup crittografati nel cloud.
Se un dispositivo viene smarrito, rubato o non è più funzionante, potremo sempre e comunque accedere all’account Authy da altri dispositivi.
Questa funzione di ripristino è molto comoda e rende Authy una delle soluzioni migliori.
Altre app authenticator sono meno pratiche in caso di perdita o rottura dello smartphone: Google Authenticator, per esempio, rende possibile e comoda la migrazione dei codici OTP da un dispositivo ad un altro utilizzando un unico QRcode per importarli in massa sul nuovo dispositivo. Ma se il primo dispositivo non è più disponibile, il recupero dei codici OTP in esso memorizzati risulta molto meno agevole. Questo è un aspetto di cui tenere conto nella scelta dell’app.
Applicazioni 2FA proprietarie
Le applicazioni che abbiamo descritto sono universali, cioè su ciascuna di queste possiamo memorizzate i TOTP di molti siti diversi e per ciascuno di questi verrà generato il codice numerico a 6 cifre da utilizzare per la 2FA.
In altri casi vengono utilizzate invece applicazioni proprietarie che funzionano solo per uno specifico account. È il caso dei servizi di internet banking, ciascuno dei quali utilizza l’app proprietaria della banca stessa che funziona solo per quello specifico account.
In questo caso la 2FA non genera il codice TOTP a 6 cifre, ma invia una notifica push sullo smartphone, che l’utente dovrà confermare, in genere con un’autenticazione biometrica (FaceID, impronta ecc.).
Lo stesso processo viene usato da Microsoft Authenticator con gli account Microsoft, nel qual caso non è necessario inserire un codice, basta ricevere la notifica push e confermare il login toccando il pulsante nell’app.
Peraltro, Microsoft Authenticator funziona anche con i codici TOTP per tutti i servizi diversi da Microsoft. Tuttavia, questa app presenta lo svantaggio che le app per Android e iOS utilizzano sistemi di backup cloud completamente incompatibili e non è possibile trasferire i token in nessun altro modo tra i due sistemi operativi.
2FA con token hardware: il sistema FIDO
Trattasi di uno standard di autenticazione definito dalla FIDO (“Fast IDentity Online”) Alliance, fondata nel 2012 da PayPal, Lenovo, Nok Nok Labs, Validity Sensors, Infineon e Agnitio e che ha standardizzato questi protocolli di autenticazione.
Le specifiche FIDO2 sono la specifica Web Authentication (WebAuthn) del World Wide Web Consortium (W3C) e il corrispondente Client-to-Authenticator Protocol (CTAP) di FIDO Alliance.
Possono essere utilizzati come protocollo di autenticazione senza password (Passwordless) o come protocollo per dispositivi hardware di doppia autenticazione.
Nel 2013 Google, Yubico e NXP si sono uniti nella FIDO Alliance e hanno portato un protocollo di autenticazione sviluppato per la 2FA mediante chiavette hardware.
Esistono numerosi modelli di queste chiavette, realizzate secondo lo standard FIDO2 da numerosi produttori, che possiamo trovare nel sito della FIDO Alliance.
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).
Nell’immagine sottostante possiamo vedere la gamma YubiKey 5 Series, acquistabile sul sito di Yubico.
I prezzi partono dai 25 euro fino a 90 euro e oltre.
Queste chiavette, la cui attivazione richiede un PIN di sblocco per sicurezza, vanno associate all’account da autenticare e rappresentano il secondo fattore di autenticazione.
In pratica, il codice di autenticazione è salvato all’interno della chiavetta e questo rappresenta un livello di sicurezza molto elevato.
Il loro uso non è ancora molto diffuso nelle aziende, anche perché comportano costi di gestione, rischio di smarrimento da parte degli utenti e per questo motivo sarebbe consigliabile avere una copia di backup della chiavetta.
Non è certamente il sistema più economico, sebbene il livello di sicurezza sia superiore anche a quello offerto dalle app authenticator.
Aggiungiamo che i protocolli FIDO possono essere utilizzati anche per un’autenticazione senza password (passwordless).
Apple, Google e Microsoft hanno annunciato nel 2022 l’intenzione di espandere il supporto per uno standard comune di accesso senza password (passwordless) creato appunto da FIDO Alliance e dal World Wide Web Consortium (W3C).
La nuova funzionalità consentirà a siti web e app di offrire ai consumatori accessi senza password, sicuri e semplici su tutti i dispositivi e le piattaforme.
Il progetto si chiama Passkeys ed è descritto sul sito della FIDO Alliance.
L’autenticazione a due fattori può essere violata?
Sebbene sia possibile che l’autenticazione a due fattori venga violata, le probabilità sono molto basse e la 2FA è sicuramente la pratica migliore per mantenere sicuri gli account e i sistemi. Un modo in cui l’autenticazione a due fattori potrebbe essere violata è la tecnica della SIM Swapping, ma funziona solo se la 2FA utilizza l’invio di un codice TOTP al numero di telefono dell’utente tramite SMS o una chiamata automatica.
Esiste un’altra tecnica definita come “MFA fatigue”, che fa leva sul social engineering.
Un attacco MFA fatigue consiste nel bombardare incessantemente il proprietario di un account con notifiche push MFA fino a quando non sbaglia o non è logorato psicologicamente e approva la richiesta di accesso.
Una volta approvata la richiesta MFA, gli hacker possono accedere all’account dell’utente e farne l’uso che desiderano.
L’obiettivo principale di questo tipo di attacco è quello di inviare una raffica infinita di notifiche push MFA, per infliggere un senso di stanchezza al proprietario dell’account.
A tempo debito, questa “stanchezza MFA” fa sì che il proprietario dell’account approvi la richiesta di accesso accidentalmente o consapevolmente per interrompere le notifiche push MFA.
Con un numero sempre maggiore di applicazioni e servizi che adottano l’autenticazione a più fattori, l’approvazione delle notifiche push MFA può diventare un’attività di routine quando i proprietari degli account devono approvare le richieste MFA più volte al giorno. Alla fine, l’approvazione quotidiana delle notifiche push MFA può rendere i proprietari degli account disattenti.