Inserisci un segreto valido per vedere il codice.
Controlla un codice come farebbe il server: vengono accettati quello attuale e fino a 2 passi prima o dopo, per tollerare orologi sfasati.
Come funziona
TOTP (Time-based One-Time Password, RFC 6238) è l'algoritmo alla base dei codici a sei cifre di Google Authenticator, Microsoft Authenticator, Authy o 1Password. Il servizio e il tuo telefono condividono un segreto; ogni 30 secondi entrambi calcolano un HMAC del segreto con l'ora attuale suddivisa in passi, lo riducono a sei cifre e confrontano il risultato. Poiché nessuno trasmette il codice finché non lo digiti, funziona anche se il telefono non è connesso.
HOTP (RFC 4226) è l'algoritmo di base: invece dell'ora usa un contatore che avanza ogni volta che viene richiesto un codice. TOTP è HOTP con il contatore sostituito dal numero di periodi trascorsi dal 1970. Il segreto è scritto in Base32 e viaggia all'interno di un URI otpauth:// che viene mostrato come codice QR quando si attiva la verifica in due passaggi.
Lo strumento genera segreti con il generatore crittografico del browser, calcola il codice attuale, il precedente e il successivo, costruisce l'URI e il relativo QR, legge un URI esistente e verifica un codice con la stessa tolleranza dell'orologio usata dai server. Il segreto non lascia mai il tuo browser né viene incluso nel link di condivisione.
Esempi
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · SHA1 · 8 · T = 59 s94287082Vettore di test della RFC 6238. Il segreto è il testo ASCII 12345678901234567890 codificato in Base32; a 59 secondi dall'epoca Unix il passo è 1 e il codice a otto cifre deve essere esattamente questo.GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · SHA1 · 8 · T = 1111111109 s07081804Un altro vettore della RFC 6238, utile per verificare che la tua implementazione non perda gli zeri iniziali: il codice è una sequenza di cifre a lunghezza fissa, non un intero.HOTP · GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ · contador 0755224Primo vettore della RFC 4226 a sei cifre. Con il contatore a 1 il codice diventa 287082.otpauth://totp/Ejemplo:ana%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=EjemploTOTP · SHA1 · 6 · 30 sIl formato Key URI definito da Google Authenticator e adottato dalle altre app. Se mancano algorithm, digits e period si assumono SHA1, 6 e 30, quindi la maggior parte dei QR contiene solo il segreto e l'emittente.Casi d'uso
- Testare l'attivazione della 2FA della tua applicazione: generare un segreto, scansionare il QR con il telefono e verificare che il server accetti lo stesso codice mostrato dall'app.
- Capire perché un server rifiuta codici validi: vedere se coincidono con il passo precedente o successivo rivela un orologio sfasato.
- Validare una propria implementazione di TOTP o HOTP con i vettori di test delle RFC 6238 e 4226.
- Leggere un URI otpauth:// esportato da un'altra app per controllare quale algoritmo, quante cifre e quale periodo usa l'account.
- Caricare in una seconda app o in un gestore di password un account di prova di cui hai già il segreto in Base32.
Domande frequenti
Perché il server rifiuta un codice che l'app mostra come valido?
Quasi sempre è colpa dell'orologio. TOTP richiede che il telefono e il server concordino sull'ora: con 30 secondi di differenza calcolano già passi diversi. Per questo i server accettano uno o due passi in ciascuna direzione. Se il codice coincide con il passo precedente o successivo, sincronizza l'ora del server con NTP e attiva l'ora automatica sul telefono.
È sicuro generare qui il segreto di un account reale?
Il segreto viene generato con crypto.getRandomValues e non lascia il tuo browser, ma in produzione deve generarlo e conservarlo il server che verificherà i codici. Questo strumento serve per testare e fare debug. Tratta qualsiasi segreto reale come una password: chi lo possiede può generare i tuoi codici per sempre.
Conviene usare SHA-256, 8 cifre o 60 secondi?
In teoria sono più robusti, ma diverse app, tra cui alcune versioni di Google Authenticator, ignorano questi parametri e calcolano sempre SHA-1 con 6 cifre ogni 30 secondi, per cui l'utente vede codici che il server rifiuta. SHA-1 resta sicuro come HMAC. Per compatibilità quasi tutti i servizi usano i valori predefiniti.
Quanto deve essere lungo il segreto?
La RFC 4226 richiede almeno 128 bit e ne raccomanda 160, che in Base32 corrispondono a 32 caratteri. Molti servizi usano 80 bit (16 caratteri) e le app li accettano comunque. Questo strumento genera 160 bit.
TOTP protegge dal phishing?
Non del tutto. È molto meglio degli SMS, che possono essere intercettati o rubati con uno scambio di SIM, ma un sito falso può chiederti il codice e usarlo su quello reale entro gli stessi 30 secondi. Le chiavi di sicurezza FIDO2 e le passkey sono legate al dominio e resistono a questo attacco.
Cosa succede se perdo il telefono?
Senza il segreto non c'è modo di calcolare i codici. Per questo i servizi forniscono codici di recupero quando attivi la 2FA: conservali fuori dal telefono. Alcune app permettono di fare un backup cifrato degli account nel cloud o di esportarli come QR per trasferirli su un altro dispositivo.