L’autenticazione a due fattori via SMS non è sicura. Meglio usare altri metodi

18 Ott 2018

Nel corso dell’ultimo paio d’anni, il concetto di autenticazione a due fattori (espressione spesso abbreviata mediante la sigla 2FA), un tempo conosciuto solo dagli esperti del settore, è ora famigliare alla maggior parte degli utenti. Tuttavia, il termine viene utilizzato spesso per riferirsi unicamente all’autenticazione a due fattori che si serve degli SMS per l’invio di password “usa e getta”. Purtroppo, però, questa non è l’opzione più affidabile ed ecco perché:

  • È facile sbirciare le password inviate via SMS, soprattutto se sono attive le notifiche su schermo;
  • Anche se le notifiche sono state disattivate, si può rimuovere la scheda SIM e usarla su un altro smartphone per poter visualizzare gli SMS che contengono le password monouso;
  • I messaggi che contengono le password possono essere intercettati da Trojan insidiatisi nello smartphone;
  • Grazie a diverse tecniche (persuasione, corruzione etc.), i cybercriminali possono ottenere da un negozio di telefonia una nuova scheda SIM con il numero di telefono della vittima. Gli SMS arriverebbero su questa nuova scheda e il telefono della vittima verrebbero scollegato dalla rete;
  • Gli SMS con le password potrebbero essere intercettati sfruttando una falla piuttosto semplice nel protocollo SS7, che si usa per la trasmissione dei messaggi.

Tutti i metodi che abbiamo appena menzionato per appropriarsi delle password via SMS (anche i più complicati e tecnologicamente avanzati come sfruttare la falla nel protocollo SS7), sono già stati messi in pratica con successo. Il resto per i cybercriminali è un gioco da ragazzi. Ciò vuol dire che non stiamo parlando di ipotesi ma di minacce concrete.

In generale, le password inviate via SMS non sono poi così sicure e, in certi casi, non lo sono affatto. Per questo, la soluzione più logica è quella di cercare alternative all’autenticazione a due fattori più popolare, e in questo post ve ne proporremo alcune.

Autenticazione a due fattori: quale scegliere?

Codici monouso su file o su carta

Il modo più semplice per sostituire le password di un solo uso inviate via SMS è usare sempre password usa e getta ma preparate in anticipo. Non è male come opzione, soprattutto per servizi a cui ci si collega di frequente. Può funzionare anche sul caro, vecchio Facebook, soprattutto come piano di riserva.

L’idea è piuttosto semplice: su richiesta il servizio genera e mostra una decina di codici usa e getta che possono essere successivamente utilizzati per il login. Questi codici possono essere stampati o scritti a mano e conservati in un luogo sicuro; oppure, ancora meglio, possono essere salvati in una nota cifrata custodita da un password manager.

Non importa tanto se i codici vengono custoditi in formato digitale o fisico, l’importante è: 1) non perdere i codici e 2) non farseli rubare.

C’è una app per tutto: le app di autenticazione

I codici usa e getta già prestabiliti, però, prima o poi finiscono e potreste rimanerne senza nel momento più inopportuno. Meno male che c’è un’altra soluzione: i codici di un solo uso possono essere generati sul momento utilizzando una piccola e di solito semplice applicazione di autenticazione.

Come funzionano le app di autenticazione

Queste app sono molto facili da usare. Ecco come fare:

  • Installate l’app di autenticazione sullo smartphone;
  • Entrate nelle impostazioni di sicurezza del servizio per il quale volete utilizzare la app;
  • Selezionate la 2FA (dando per scontato che l’opzione esista): il servizio vi mostrerà un codice QR che viene scannerizzato direttamente dalla app di autenticazione;
  • Scannerizzate il codice con la app, che inizierà a generare un nuovo codice usa e getta ogni 30 secondi.
Come attivare un'app di autenticazione su Facebook

I codici vengono creati in base a una chiave (nota solo a voi e al server) e all’orario, arrotondato ai 30 secondi. Entrambe le componenti sono le stesse per voi e il servizio, e i codici vengono generati in modo sincronizzato. Si utilizza l’algoritmo OATH TOTP (Time-based One-Time Password), sicuramente il più popolare.

In realtà, esiste un’alternativa, l’algoritmo OATH HOTP (HMAC-based One-Time Password) che, invece dell’orario, utilizza un contatore che aumenta di un’unità ogniqualvolta si crea un nuovo codice. Tuttavia, non viene utilizzato molto nella vita reale perché questo sistema complica la generazione in sincrono dei codici dell’app e del servizio. In sostanza, ci sarebbe un rischio concreto che il contatore vada leggermente fuori fase e la password usa e getta non funzioni.

Di fatto, quindi, lo standard al momento è l’algoritmo OATH TOTP (anche se ufficialmente non dovrebbe essere considerato uno standard, come ribadiscono i suoi creatori).

App per la 2FA e compatibilità del servizio

La maggioranza delle app per l’autenticazione in due passaggi utilizzano lo stesso algoritmo, per cui può essere utilizzata qualsiasi app sui servizi che supportano questo tipo di autenticazione, la scelta è vostra.

Tuttavia, c’è sempre l’eccezione che conferma la regola. Per ragioni che solo essi conoscono, alcuni servizi preferiscono creare le proprie app per la 2FA e che funzionano solo per quel servizio.

Si tratta di una pratica piuttosto comune nel mondo dei videogiochi: ad esempio, Blizzard Authenticator, Steam Guard con Steam Mobile integrato, Wargaming Auth e altre app sono incompatibili con servizi e app di terze parti. In sostanza, queste app create per i propri clienti possono essere utilizzate solo sulle piattaforme di gaming corrispondenti.

Questa insolita via è stata intrapresa anche da Adobe, con il suo Adobe Authenticator che funziona solo con gli account AdobeID, anche se comunque si possono usare anche altre app di autenticazione per cui non capiamo molto il senso di tutto ciò.

In ogni caso, la maggior parte delle compagnie IT non obbligano gli utenti a scegliere un’app in particolare per la 2FA. E anche se l’azienda all’improvviso decide di creare la propria app, di solito non protegge solo gli account della compagnia ma anche quelli di altri servizi.

Insomma, potete scegliere l’app di autenticazione che preferite in base alle funzionalità aggiuntive che vi propone, dovrebbe funzionare con la maggior parte dei servizi che supportano le app per la 2FA.

Le migliori app per l’autenticazione in due passaggi

Se non sapete quale app utilizzare, c’è l’imbarazzo della scelta. Basta scrivere “app di autenticazione” o “authenticator” su Google Play o App Store e vi appariranno decine di opzioni. Tuttavia, vi sconsigliamo di installare la prima app che cattura la vostra attenzione, perché potrebbe non essere la più sicura. Ricordate che a questa app affiderete le chiavi dei vostri account (ovviamente non saranno rivelate le vostre password ma l’autenticazione a due fattori serve proprio perché spesso ci sono fughe di dati, tra cui le password). In generale, meglio avvalersi di un’app creata da uno sviluppatore importante e di fiducia.

Sebbene le funzionalità di base di tutte queste app siano più o meno le stesse (ovvero creare codici usa e getta mediante un unico algoritmo uguale per tutti), alcune app offrono opzioni extra o interfacce più attraenti di altre. Facciamo una carrellata delle funzionalità aggiuntive più interessanti.

 

1. Google Authenticator

Piattaforme: Android, iOS

App Google Authenticator

Per molte riviste tech, Google Authenticator è l’app di autenticazione più facile da usare, praticamente non ci sono impostazioni da configurare. Solo basta aggiungere un nuovo token (ovvero il generatore del codice per ogni account) oppure cancellare uno già esistente. E per copiare un codice solo bisogna premerci sopra con il dito. Ecco fatto!

Tuttavia, tutta questa semplicità può avere i suoi lati negativi. Se non vi piace l’interfaccia o avete bisogno di altre funzionalità, meglio scaricare un’altra app di autenticazione.

Punto a favore: molto facile da usare

 

2. Duo Mobile

Piattaforme: Android, iOS

App Duo Mobile

Anche Duo Mobile è un’app davvero user-friendly, minimalista e senza impostazioni aggiuntive. Ha un ulteriore vantaggio rispetto a Google Authenticator: di default Duo Mobile nasconde i codici e, per visualizzarli, l’utente deve fare tap sul token di cui ha bisogno. Se preferite evitare che i codici dei vostri account siano sotto gli occhi di tutti ogniqualvolta aprite la app, allora Duo Mobile è ciò che fa per voi.

Punto a favore: codici nascosti di default

 

3. Microsoft Authenticator

Piattaforme: Android, iOS

App Microsoft Authenticator

Anche Microsoft ha optato per un approccio minimalista con la sua app di autenticazione, anche se comunque offre maggiori funzionalità rispetto a Google Authenticator. E anche se i codici sono visibili di default, ogni token può essere nascosto separatamente.

Inoltre, Microsoft Authenticator fa sì che collegarsi agli account Microsoft sia più semplice. Dopo aver digitato la password, bisogna solo fare tap sulla app per confermare l’accesso, non è necessario inserire il codice di un solo uso.

Punto a favore: si può configurare per nascondere i codici

Punto a favore extra: collegamento rapido agli account Microsoft

 

4. FreeOTP

Piattaforme: Android, iOS

App FreeOTP di Red Hat

Dovreste scegliere l’app di Red Hat per quattro motivi. Innanzitutto, si tratta di un software open source e poi è l’app più leggera del nostro elenco (la versione iOS pesa solo 750 KB – Google Authenticator ha bisogno di quasi 14MB e Authy di cui parleremo in seguito, occupa ben 44 MB).

In terzo luogo, l’app nasconde i codici di default, che viene visualizzato solo quando si fa tap sul token. Infine (dettaglio più importante), FreeOTP consente di configurare manualmente i token, conferendo maggiore flessibilità. Ovviamente, si può sempre optare per il metodo di creazione tradizionale, ovvero mediante la scansione di un codice QR.

Punti a favore:

codici nascosti di default;

pesa solo 750 KB;

è open source;

disponibilità di varie impostazioni per la creazione manuale dei token.

 

5. Authy

Piattaforme: Android, iOS, Windows, macOS, Chrome

App Twilio Authy

Authy è l’app 2FA più alla moda e che ha il principale vantaggio che tutti i token sono custoditi su cloud, ed è quindi possibile accedere ai token da qualsiasi dispositivo. Allo stesso tempo, rende più agevole la migrazione su nuovi dispositivi. Non c’è bisogno di riattivare l’autenticazione a due fattori su ogni servizio, si possono utilizzare i token esistenti.

I token su cloud vengono cifrati con una chiave creata mediante una password indicata dall’utente; ciò vuol dire che i dati sono custoditi in modo sicuro e non si possono rubare facilmente. Si può quindi impostare un PIN di accesso per la app o la si può proteggere con l’impronta digitale, se lo smartphone lo supporta.

Il punto negativo principale di Authy è che l’account va collegato a un numero di telefono, altrimenti la app non funziona.

Punti a favore:

token custoditi su cloud, da usare su tutti i dispositivi;

facile migrazione su altri dispositivi;

accesso alla app protetto da PIN o impronta digitale;

sullo schermo viene visualizzato solo il codice dell’ultimo token utilizzato;

a differenza di altre app, non funziona solo su Android e iOS, ma anche su Windows, macOS e Chrome.

Punto a sfavore: l’app non funziona se l’account Authy non è collegato a un numero di telefono.

 

6. Yandex.Key

Piattaforme: Android, iOS

App Yandex.Key

L’idea alla base di Yandex Key potrebbe far sì che sia la migliore app per l’autenticazione a due fattori. Da un lato, non richiede la registrazione immediata, si può utilizzare con la stessa facilità di Google Authenticator. Dall’altro, offre diverse funzionalità aggiuntive per chi non ha paura di usufruire di altre opzioni.

Innanzitutto, YandexKey può essere bloccata con codice PIN o impronta digitale. In secondo luogo, si può creare una copia di backup, protetta da password, da salvare sul cloud di Yandex (per questa opzione sì che è necessario indicare un numero di telefono) e da ripristinare sul dispositivo in uso. Allo stesso modo, si possono trasferire i token su un nuovo dispositivo in caso si abbia bisogno di effettuare una migrazione.

YandexKey consente di avere la semplicità di Google Authenticator ma anche le funzionalità aggiuntive di Authy, dipende da ciò che si desidera. L’unico aspetto negativo della app è che l’interfaccia non è proprio semplice da usare quando si ha un buon numero di token.

Punti a favore:

app minimalista alla quale si possono aggiungere funzionalità grazie alle impostazioni;

possibilità di creare copie di backup dei token su cloud, per il loro uso su vari dispositivi e per migrazioni;

accesso alla app protetto da PIN o impronta digitale;

sullo schermo viene visualizzato solo il codice dell’ultimo token utilizzato;

sostituisce in modo permanente la password dell’account Yandex.

Punto a sfavore: Quando ci sono vari token, non è così facile trovare quello di cui si ha bisogno.

Strumenti di autenticazione hardware FIDO U2F: YubiKey e altri

Se un’app che genera codici usa e getta vi sembra una maniera troppo intangibile per proteggere i vostri account e siete alla ricerca di qualcosa di più solido e affidabile che blocchi il vostro account con una chiave che vada a finire letteralmente nelle vostre tasche, allora la scelta migliore sono gli hardware token che si basano sullo standard U2F (Universal 2nd Factor) di FIDO Alliance.

Come funzionano i token FIDO U2F

I token hardware U2F sono i preferiti degli specialisti in sicurezza innanzitutto perché, dal punto di vista dell’utente, funzionano con grande semplicità. Per iniziare, bisogna solo collegare il token U2F al dispositivo e registrarlo sul servizio compatibile. Il tutto si fa in un paio di click.

Dopo di ciò, per confermare l’accesso al servizio, bisogna connettere il token U2F al dispositivo dal quale vi state collegando e fare tap sul tasto del token (alcuni dispositivi richiedono un codice PIN o la scansione dell’impronta digitale, ma è una funzionalità extra). Ecco fatto, nessuna impostazione complessa, né bisogna digitare lunghe sequenze di caratteri random o effettuare operazioni complicate collegate al mondo cifratura.

Come collegarsi a Facebook con YubiKey

Inserire la chiave e cliccare sul pulsante, ecco tutto.

Allo stesso tempo, dal punto di vista della cifratura, è tutto sicuro: quando si registra il token a un servizio, si crea una coppia di chiavi di cifratura, una chiave privata e una pubblica. La chiave pubblica viene immagazzinata sul server, quella privata viene custodita su un chip Secure Element, il cuore del token U2F e che non abbandona mai il dispositivo.

La chiave privata serve per cifrare la conferma di accesso, che poi passa al server, e può essere decifrata utilizzando la chiave pubblica. Se qualche malintenzionato prova a trasferire la conferma di accesso cifrata con la chiave privata sbagliata, al momento di decifrare apparirà un linguaggio incomprensibile, e il servizio non consentirà l’accesso all’account.

Quali sono i dispositivi U2F in circolazione

L’esempio più famoso e diffuso di U2F è YubiKey di Yubico. L’azienda era leader in questo standard e ha poi deciso di renderlo aperto a tutti e, proprio per questo scopo è stato creato il consorzio industriale FIDO Alliance. Siccome si tratta di uno standard aperto, l’utente ha ampia scelta tra diversi dispositivi che supportano l’U2F e sugli store online si possono trovare modelli per tutti i gusti.

Autenticazione a due fattori: quale scegliere?

Ad esempio, di recente Google ha introdotto un set di sistemi di autenticazione chiamato Google Title Security Keys. Si tratta di chiavi prodotte da Feitan Technologies (la seconda casa produttrice di token U2F più famosa, dopo Yubico) e Google ha sviluppato il proprio firmware.

Naturalmente tutti i sistemi di autenticazione hardware compatibili con lo standard U2F funzionano su qualsiasi servizio compatibile con questo standard. Le differenze esistono soprattutto a livello di interfacce supportate dalla chiave e ciò determina i dispositivi con i quali si può lavorare:

USB: da collegare al PC (non importa se Windows, Mac o Linux, la chiave funziona senza dover installare alcun driver). Oltre alla solita USB-A, sono disponibili anche chiavi per USB-C;

NFC: per l’uso su smartphone e tablet Android;

Bluetooth: per i dispositivi mobile che non dispongono di NFC. Ad esempio, i proprietari di iPhone hanno ancora bisogno di un sistema di autenticazione via Bluetooth. Sebbene iOS ora permetta l’uso di app con NFC (fino a quest’anno era concessa solo Apple Pay), la maggior parte degli sviluppatori di app compatibili con U2F devono ancora esplorare bene quest’area. I sistemi di autenticazione via Bluetooth hanno qualche inconveniente, il primo è la necessità di doverli ricaricare e poi ci vuole molto più tempo per collegarli.

I modelli base di token U2F di solito supportano solo U2F e il costo oscilla tra i 10 e i 20 dollari. Esistono altri dispositivi più costosi (dai 20 ai 50 dollari) che funzionano anche come smart card, generano password di un solo uso (compresi OATH TOTP e HOTP), generano e custodiscono chiavi di cifratura PGP e servono per collegarsi a Windows, macOS, Linux etc.

SMS, app o Yubikey: quale scegliere?

Allora qual è la scelta migliore in quanto a autenticazione a due fattori? Non c’è una risposta unicaper tutti: si possono utilizzare diverse versioni o una combinazione dei vari sistemi in base ai servizi in uso. Ad esempio, gli account più importanti (come una casella di posta collegata a altri account etc.) dovrebbero essere protetti al massimo, ovvero mediante un token hardware U2F con tutte le altre opzioni di autenticazione a due fattori bloccate. In questo modo sarete sicuri che nessuno potrà avere accesso all’account senza il token.

Una buona opzione può essere quella di collegare due chiavi all’account, proprio come si fa con le chiavi della macchina: una la tenete sempre in tasca, l’altra la conservate in un posto sicuro nel caso perdiate la prima. Inoltre, potete utilizzare diversi tipi di chiavi: ad esempio, il metodo principale può essere un’app di autenticazione sullo smartphone e, come metodo di riserva, potete avere un token U2F o il pezzetto di carta con le password usa e getta.

In ogni caso, il consiglio principale è quello di evitare l’uso di password di un solo uso via SMS, se possibile. È vero, non sempre si può: sappiamo, ad esempio, che i servizi finanziari sono piuttosto conservatori e raramente offrono alternative agli SMS.