L’autenticazione a due fattori (2FA) è una procedura di sicurezza che richiede all’utente di fornire due diversi fattori di autenticazione per accedere a un account o a un sistema. Uno dei metodi più comuni e sicuri per l’autenticazione a due fattori è basato sull’utilizzo di password monouso, valide per un breve periodo di tempo, chiamate codici OTP (One-Time Password).
L’autenticazione a due fattori basata su OTP richiede l’utilizzo di un dispositivo generatore di password monouso, come un token hardware o un’applicazione software (generalmente installata su un dispositivo mobile come lo smartphone ma spesso disponibile anche in versione per sistemi desktop). Quando l’utente desidera accedere a un account o a un sistema protetto con l’autenticazione a due fattori basata su codici OTP, viene richiesto di effettuare il login con nome utente e password corretti quindi di inserire la password monouso generata dal dispositivo OTP.
La password monouso viene generata utilizzando un algoritmo crittografico che utilizza un segreto condiviso tra il dispositivo OTP e il sistema di autenticazione. La password monouso è valida solo per un breve periodo di tempo (pochi secondi) e non può essere riutilizzata, rendendo difficile per gli aggressori utilizzarla per l’accesso all’account altrui.
L’utilizzo dell’autenticazione a due fattori basata su OTP è sempre più comune in molti contesti, come l’accesso a servizi online, la sicurezza delle transazioni finanziarie e l’accesso a reti aziendali.
Ove possibile, è sempre bene evitare l’invio di codici OTP tramite SMS, sistema ormai ritenuto poco sicuro. L’invio di OTP via SMS può essere soggetto ad attacchi di intercettazione e phishing; in secondo luogo, l’invio di OTP via SMS può essere soggetto a attacchi spoofing, in cui gli hacker inviano un messaggio SMS che sembra provenire dal sistema di autenticazione, ma che non realtà è creato per mettere in difficoltà gli utenti. In un altro articolo spieghiamo nel dettaglio cosa sono SMS spoofing e smishing.
Quando si parla di autenticazione a due fattori via OTP spesso si pensa ad applicazioni come Google Authenticator o Microsoft Authenticator ma non è indispensabile appoggiarsi ad app proprietarie: il mondo open source offre tante alternative di primo livello. Piuttosto nota è ad esempio Authy.
Cos’è la TOTP (Time-Based One-Time Password)
Nel caso delle applicazioni citate, tuttavia, si dovrebbe parlare di TOTP ovvero della generazione di password monouso basate sul tempo: un apposito algoritmo viene utilizzato per generare password monouso che sono valide solo per un breve periodo di tempo. Come abbiamo spiegato nell’articolo citato in apertura, per generare il codice monouso, viene utilizzato un algoritmo TOTP che combina un segreto con un timestamp (o ora corrente) e restituisce un codice numerico a 6 cifre che è valido solo per un periodo di tempo limitato, di solito 30 secondi. Superata questa finestra temporale, l’applicazione TOTP genera un nuovo codice, sempre diverso dal precedente.
Le app che generano TOTP sono utilizzabili per dimostrare il possesso del segreto in un momento specifico: sono convenienti perché non richiedono hardware speciale; qualsiasi dispositivo dotato di CPU e di un orologio correttamente impostato, può generare un codice TOTP valido.
Tanti utenti guardano con un po’ di ritrosia ad app come Google Authenticator e Microsoft Authenticator perché non si fidano del codice proprietario e temono di trovarsi in difficoltà, con l’impossibilità di accedere ai vari account online, nel caso di perdita o furto del dispositivo. Google ha recentemente abilitato il backup delle informazioni di autenticazione via TOTP (token) sul cloud ma l’assenza della crittografia end-to-end ha fatto drizzare le antenne a molti. Tanto che l’azienda di Mountain View ha deciso di attivarsi rapidamente in tal senso e di abilitare la cifratura end-to-end anche su Authenticator.
App OTP per l’autenticazione a due fattori dal mondo open source: Aegis e FreeOTP+
Se siete alla ricerca di app alternative agli Authenticator di Google e Microsoft, è possibile guardare con fiducia a proposte open source come Aegis e FreeOTP+.
Aegis è scaricabile gratuitamente e provvede a memorizzare i token per la generazione di OTP accettati sui vari account in una cassaforte locale crittografata. La cassaforte può essere protetta mediante password ed eventualmente anche con i dati biometrici come l’impronta digitale o il riconoscimento del volto. Se si dimenticasse la password utilizzata in difesa del contenuto della cassaforte di Aegis, non sarà in alcun modo possibile recuperare i propri token.
L’utilizzo del sensore di impronte digitali accelera notevolmente il processo di autenticazione anche se a volte Aegis chiede comunque di confermare la password: “così non rischiate di dimenticarla…”, è il punto di vista degli autori dell’applicazione. Peccato che avvenga sempre quando si ha fretta di accedere a un servizio.
I segreti TOTP sono stringhe base32 arbitrarie e, quindi, non sono molto simpatiche da digitare sulla tastiera di un telefono. Fortunatamente, la maggior parte dei servizi che si basano su codici OTP offrono la possibilità di generare un codice QR contenente il segreto: Aegis, come le altre applicazioni della stessa categoria, può utilizzare la fotocamera dello smartphone per leggerli, acquisire il contenuto e configurare rapidamente nuovi account tra quelli supportati.
Per impostazione predefinita, Aegis mostra una schermata con tutti i servizi già configurati visualizzando l’OTP attualmente valido per ciascuno di essi. Toccando su un determinato servizio si può copiare il codice OTP in memoria e incollarlo in un modulo da qualche altra parte.
Aegis integra varie funzionalità per l’importazione e l’esportazione dei dati: la schermata di importazione è uno dei punti di forza dell’applicazione supportando un ampio ventaglio di applicazioni di terze parti, comprese Google Authenticator, Microsoft Authenticator e Cisco Duo.
Quando al file di esportazione viene crittografato per impostazione predefinita, a meno che l’utente non agisca su un paio di opzioni il cui utilizzo viene caldamente sconsigliato.
Un’altra app TOTP che consigliamo vivamente si chiama FreeOTP+ ed è a sua volta un fork di FreeOTP, originariamente rilasciata (con licenza Apache2) da Red Hat. A una prima occhiata FreeOTP+ appare simile ad Aegis, in quanto presenta una schermata unica che viene via via popolata con gli account aggiunti dall’utente.
Rispetto ad Aegis e ad altre soluzioni simili, FreeOTP+ non visualizza il codice OTP valido per un determinato account fino a quando esso non viene toccato. L’applicazione può essere impostata al fine di richiedere l’autenticazione all’avvio prima di fornire qualsiasi codice, ma si tratta di un comportamento che non risulta abilitato di default.
Come Aegis, FreeOTP+ può aggiungere all’interno del suo archivio i segreti TOTP a partire da un codice QR mentre offre opzioni di importazione ed esportazione nettamente più limitate. Non è inoltre disponibile alcun supporto per l’organizzazione degli account in gruppi, cosa che invece Aegis permette.
Su desktop il password manager KeePassXC open source permette anche la gestione dei codici TOTP: di recente sottoposto a un audit che aveva come obiettivo quello di verificare la sicurezza di KeePassXC e con il supporto per le passkey che sarà a breve inserito, KeePassXC consente di abilitare TOTP semplicemente portandosi nella sezione Avanzate.
Qui, digitando otpauth://totp/
KeePassXC mostra un piccolo quadrante di orologio che, una volta cliccato, calcola e mostra un codice OTP valido. La documentazione del programma consiglia di archiviare i dati TOTP in un database separato rispetto a quello contenente le password, possibilmente anche su un dispositivo diverso. Le ragioni del suggerimento sono ovvie: non si dovrebbe mai conservare il segreto con cui vengono generati i codici OTP accanto alla credenziali di accesso per i vari account.