SPID, il Sistema Pubblico di Identità Digitale italiano, ha reso comune l'idea di un secondo fattore mobile per accedere ai servizi della pubblica amministrazione: molti provider SPID usano app che generano codici temporanei sullo smartphone, seguendo la stessa logica di base di TOTP anche quando l'implementazione tecnica differisce nei dettagli.
Un segreto condiviso più il tempo
Durante la configurazione, il server e l'app di autenticazione si scambiano un'unica chiave segreta condivisa (è esattamente ciò che è codificato nel codice QR). Da quel momento, entrambe le parti calcolano in modo indipendente un HMAC a partire da quel segreto e dall'ora unix corrente, arrotondata a un intervallo di 30 secondi — ottenendo lo stesso codice senza comunicare tra loro.
Perché funziona senza internet
Poiché il codice viene calcolato localmente a partire dal segreto e dall'orologio di sistema del dispositivo, l'app di autenticazione non ha bisogno di una connessione di rete per generare un codice. L'unico requisito è che gli orologi del server e del telefono restino sincronizzati entro un piccolo margine consentito (di solito ±30–60 secondi).
Perché il codice cambia ogni 30 secondi
L'intervallo di tempo breve limita la finestra durante la quale un codice intercettato rimane valido, riducendo il rischio che venga riutilizzato da un attaccante. Il server di solito accetta l'intervallo corrente più quello precedente per compensare un piccolo ritardo di rete nell'inserimento del codice.
A cosa serve
- Capire la meccanica dell'autenticazione a due fattori quando si configurano o si risolvono problemi con le app di autenticazione.
- Testare la propria implementazione di TOTP durante lo sviluppo di un sistema di autenticazione.
- Generare codici per test automatizzati senza inserirli manualmente da un telefono.
Cosa non protegge TOTP
TOTP protegge efficacemente dal furto della password separato dal codice, ma non dal phishing in tempo reale: se la vittima inserisce sia la password sia il codice TOTP corrente su un sito falso, l'attaccante può usare istantaneamente entrambi i valori sul sito vero, mentre il codice è ancora valido. Da questo tipo di attacco proteggono solo le chiavi hardware secondo lo standard FIDO2/WebAuthn, che sono crittograficamente legate a un dominio specifico.