L’autenticazione a due fattori (2FA) funziona aggiungendo un ulteriore livello di sicurezza agli account online, richiedendo una credenziale di accesso aggiuntiva (qualcosa che si ha), oltre a nome utente e password (qualcosa che si conosce), per ottenere l’accesso. Senza questo metodo di riconoscimento aggiuntivo, è impossibile accedere all’account, il che a sua volta impedisce agli hacker di accedere agli account utilizzando solo la password rubata e le informazioni di accesso.
Ci sono diversi sistemi di verifica per la credenziale aggiuntiva ma i più comuni sono:
- 2FA tramite dati biometrici (impronta, iride, faccia ecc.)
- 2FA tramite chiave di sicurezza fisica (Yubikey ad esempio)
- 2FA tramite TOTP (Time-Based One-Time Password) generata da un SMS o da un’app
In questa guida vi mostreremo come funziona un’app che genera codici TOTP come ad esempio Google Authenticator, Authy o altre.
App 2FA che genera codici ramite TOTP: come funziona?
TOTP sta per Time-Based One-Time Password o password monouso basata sul tempo. È un metodo standardizzato per generare un codice che cambia regolarmente basato su un segreto condiviso (vale a dire, condiviso da un server e da uno smartphone). Poiché è uno standard, è possibile utilizzare molte app di autenticazione diverse (e per lo più gratuite).
Quando si configura l’app TOTP, il server dell’account in cui si sta abilitando genera una chiave segreta: un mucchio di numeri e lettere casuali sotto forma di codice QR o “seed”. L’app per la 2FA salva questa chiave, così che sia il server che la stessa app abbiano una copia di questa chiave segreta.
Quando si vuole accedere all’account, bisogna dimostrare di avere la chiave. Per fare ciò, l’app combina la chiave con l’ora corrente (di solito in finestre di 30 secondi) per produrre un codice di accesso. Lo fa usando qualcosa chiamata “funzione hash sicura” (HMAC-SHA-1 nello specifico). In parole povere, mescola l’ora e la chiave insieme per produrre un output unico (se l’ora o la chiave sono diverse anche in minima parte, l’output è completamente diverso), ma impossibile da invertire. Per facilitare la digitazione, il codice di accesso viene abbreviato in un numero di 6 cifre.
Quando si inserisce il codice di 6 cifre, il server dall’altra parte esegue la stessa identica operazione e, nel caso in cui il codice di 6 cifre risultante è lo stesso, permette l’accesso.
Richiedendo solamente la chiave segreta che è salvata sullo smartphone e l’orario, le app che generano TOTP funzionano perfettamente anche in assenza di connettività internet. Inoltre, se si installasse una seconda app per la 2FA e si inserisse la stessa chiave segreta fornita dal server, si otterrebbero gli stessi codici di 6 cifre.