Generatore TOTP (password monouso)
Genera nel solo browser, a partire da un segreto TOTP in formato Base32, la stessa password monouso a sei cifre (RFC 6238) prodotta da Google Authenticator e app analoghe. Il segreto non viene mai trasmesso.
L'algoritmo TOTP
TOTP (Time-based One-Time Password) è l'algoritmo di generazione di password monouso basate sul tempo definito dalla RFC 6238. Converte il segreto condiviso e l'ora corrente in un contatore che avanza a intervalli regolari e ne ricava un codice numerico con lo stesso algoritmo di troncamento dinamico di HOTP (RFC 4226).
| Algoritmo HMAC | A scelta fra SHA-1 (predefinito), SHA-256 e SHA-512 |
|---|---|
| Cifre del codice | Sei cifre, la lunghezza standard delle principali app di autenticazione a due fattori come Google Authenticator |
| Intervallo di aggiornamento | Il codice cambia ogni 30 secondi |
Che cos’è un codice TOTP
Un TOTP (Time-based One-Time Password) è il codice a sei cifre, rinnovato ogni trenta secondi, usato nell’autenticazione a due fattori per aggiungere una verifica oltre a nome utente e password. Si calcola da una chiave condivisa detta segreto, registrata in anticipo, combinata con l’ora corrente: per questo il server e l’app di autenticazione che ha in mano arrivano allo stesso codice senza mai comunicare fra loro. Google Authenticator, Microsoft Authenticator, Authy e le altre app principali seguono tutte lo stesso standard, la RFC 6238.
Incolli la chiave di configurazione mostrata sotto il codice QR quando attiva l’autenticazione a due fattori – il segreto, in formato Base32 – e questo strumento riproduce nel browser lo stesso codice a sei cifre che la sua app mostrerebbe. La decodifica del segreto Base32 e il calcolo dell’HMAC avvengono tramite la Web Crypto API e nulla viene inviato a un server. È utile per riconfigurare un’app, ricontrollare un codice o verificare il comportamento su più dispositivi.
Come si genera un codice
- Inserisca il segreto Incolli nel campo del segreto la chiave di configurazione in Base32 rilasciata all’attivazione (per esempio JBSWY3DPEHPK3PXP).
- Verifichi l’algoritmo di hash La maggior parte dei servizi usa SHA-1. Se il codice non corrisponde, provi a passare a SHA-256 o SHA-512.
- Legga il codice a sei cifre Il codice relativo al momento presente viene calcolato mentre digita e compare insieme a una barra con i secondi rimanenti.
- Lo copi se le serve Il pulsante di copia lo porta negli appunti. Eviti di usarlo negli ultimi istanti prima del cambio.
Consigli per sfruttarlo al meglio
- Il segreto è la «chiave di configurazione» mostrata sotto il codice QR quando si attiva l'autenticazione a due fattori. Se l'avete già registrata nell'app del telefono, inserendo qui lo stesso segreto otterrete il medesimo codice.
- Alcuni servizi usano un algoritmo diverso da SHA-1, cioè SHA-256 o SHA-512. Se il codice generato non coincide con quello dell'app, provate a cambiare algoritmo.
- Il codice si aggiorna automaticamente ogni 30 secondi e la barra di avanzamento mostra a colpo d'occhio il tempo residuo. Attenzione a non copiarlo appena prima del cambio: potrebbe scadere prima di arrivare a destinazione.
- Chiudendo la scheda del browser il segreto viene eliminato del tutto e non resta memorizzato da nessuna parte. Se vi serve come copia di riserva, custodite il segreto in un luogo sicuro, per esempio in un gestore di password.
Quando questo generatore aiuta
Controllare o migrare un’app di autenticazione
Prima di cambiare dispositivo e registrarsi di nuovo, può confermare qui che il segreto conservato sia corretto, anziché scoprirlo già sul telefono nuovo.
Provare gli accessi in ambiente di sviluppo
Quando aggiunge l’autenticazione a due fattori al proprio servizio, generi codici dal segreto di un account di prova ogni volta che deve mettere alla prova la logica di autenticazione.
Verificare un segreto di backup
Confermi rapidamente che un segreto custodito in un gestore di password funzioni ancora, senza aprire l’app sul telefono.
Rafforzare la sicurezza dell’account nel complesso
Se desidera rivedere anche la robustezza della password stessa, meritano uno sguardo il generatore di password e il generatore di passphrase memorizzabili.
Esplorare il calcolo di hash sottostante
Se le interessano l’HMAC e le funzioni di hash su cui poggia il TOTP, il calcolatore di hash SHA-256 mostra quel mattoncino isolatamente.
Termini legati al TOTP
- TOTP (Time-based One-Time Password)
- Schema (RFC 6238) che genera una password monouso da un contatore ricavato dall’ora corrente. Il codice cambia automaticamente a intervalli fissi, di norma trenta secondi.
- HOTP (HMAC-based One-Time Password)
- Lo standard precedente (RFC 4226) su cui si basa il TOTP. Al posto dell’orologio impiega un contatore che avanza di uno a ogni utilizzo.
- Segreto (chiave condivisa)
- Chiave privata custodita sia dal servizio sia dalla sua app di autenticazione. Viene rilasciata come stringa Base32 all’attivazione e da essa, insieme all’ora, si calcola il codice.
- Autenticazione a due fattori (2FA)
- Metodo di accesso che unisce ciò che si sa, la password, a ciò che si possiede, di solito un’app di autenticazione sul telefono. Anche se uno dei due trapela, l’accesso non autorizzato resta assai più difficile.
- Passo temporale
- Intervallo con cui un codice TOTP cambia. La RFC 6238 fissa trenta secondi come valore predefinito, ripreso senza modifiche dalla maggior parte di servizi e app.
- Base32
- Codifica che rappresenta una sequenza di byte con i soli 32 caratteri A–Z e 2–7. I segreti TOTP sono distribuiti in questa forma perché è facile da leggere e trascrivere.
- Troncamento dinamico
- Passaggio che preleva quattro byte dalla lunga uscita dell’HMAC secondo una regola fissa e li converte in un numero a sei cifre. È definito nella RFC 4226 ed è comune a HOTP e TOTP.
Domande frequenti
A proposito — perché i codici a due fattori sono di sei cifre
OATH (Initiative for Open Authentication), che ha redatto le specifiche di TOTP (RFC 6238), ha ripreso il troncamento dinamico di HOTP (RFC 4226) lasciando libera l'implementazione di scegliere il numero di cifre. Che le sei cifre siano diventate lo standard di fatto si deve a Google Authenticator, che le adottò nella prima versione del 2010 e fu seguito da moltissimi servizi e librerie.
Sei cifre sono anche un ottimo punto di equilibrio. Con un milione di combinazioni (10⁶) e una validità di appena 30 secondi, un attacco a forza bruta diventa praticamente impossibile; allungare ulteriormente il codice, invece, ne comprometterebbe la praticità per chi deve leggerlo e digitarlo. Non è un caso che anche la maggior parte dei codici via SMS sia di sei cifre: è la regola empirica su cui è conversa l'intera categoria dei «codici numerici usa e getta».
Il predecessore di TOTP, HOTP (RFC 4226, 2005), si basava su un «contatore» che andava fatto avanzare a ogni utilizzo. Poiché gli utenti dimenticavano di premere il pulsante e i contatori di dispositivo e server finivano per disallinearsi, la TOTP del 2011 sostituì quel meccanismo con l'«ora corrente», un riferimento che chiunque può consultare, semplificando enormemente la gestione.