Utilia

Generatore di codici TOTP e HOTP

Genera codici 2FA TOTP e HOTP da un segreto Base32 o un URI otpauth://, con SHA-1, SHA-256 o SHA-512, conto alla rovescia e codice QR per le app.

Un segreto 2FA è delicato quanto una password. Qui tutto funziona in locale nel tuo browser: il segreto, i codici e il codice QR non vengono mai inviati da nessuna parte.

Configura un'app di autenticazione

Aggiungi un emittente e un nome account, poi scansiona il codice QR o copia il link otpauth:// nella tua app di autenticazione.

Come generare codici TOTP

  1. Incolla un segreto Base32 (per esempio JBSWY3DPEHPK3PXP) o un link otpauth:// completo in Segreto (Base32) o URI otpauth://. Spazi, trattini, lettere minuscole e padding = mancante sono accettati.
  2. I codici compaiono mentre scrivi, oppure quando premi Mostra codici. Un URI incollato compila per te i campi Tipo, Algoritmo, Cifre, Periodo (secondi), Emittente e Account.
  3. Leggi il Codice attuale al centro, con il Codice precedente e il Codice successivo ai lati. La barra sottostante conta i secondi che mancano al cambio del codice, e Copia codice lo copia senza lo spazio.
  4. Per i codici basati su contatore, scegli HOTP (basato su contatore), imposta il Contatore e usa Contatore successivo per avanzare.
  5. Per creare un nuovo segreto 2FA, premi Nuovo segreto casuale. Compila Emittente e Account, poi scansiona il codice QR con un’app di autenticazione, premi Copia URI oppure Scarica codice QR (PNG).

Come funzionano TOTP e HOTP

HOTP (RFC 4226) calcola un HMAC di un contatore di 8 byte con il segreto condiviso, poi applica il troncamento dinamico: gli ultimi quattro bit dell’HMAC scelgono un offset, da lì vengono letti quattro byte, il bit più alto viene azzerato e il numero viene ridotto modulo 10^cifre. Il risultato è un codice da 6 a 8 cifre.

TOTP (RFC 6238) è un HOTP in cui il contatore è l’intervallo di tempo corrente: T = floor(tempo Unix / periodo), con un periodo predefinito di 30 secondi. Il tuo telefono e il server calcolano lo stesso codice in modo indipendente, perché condividono il segreto e (più o meno) lo stesso orologio. Ecco perché vengono mostrati il Codice precedente e il Codice successivo: i server di solito accettano un intervallo prima o dopo per tollerare lo scostamento dell’orologio.

L’HMAC viene calcolato con la Web Crypto API del browser usando SHA-1, SHA-256 o SHA-512. SHA-1 con 6 cifre e 30 secondi è ciò che usa quasi ogni servizio; SHA-256 e SHA-512 sono ammessi dalla RFC 6238 ma alcune app li ignorano, quindi cambia i valori predefiniti solo se il servizio lo richiede.

L’URI otpauth:// e il codice QR

Le app di autenticazione si configurano con un URI come otpauth://totp/Example:alice@example.com?secret=…&issuer=Example&algorithm=SHA1&digits=6&period=30, di solito mostrato come codice QR. Lo strumento legge questi URI (comprese le etichette con percent-encoding come ACME%20Co) e ne crea di nuovi. Il codice QR viene disegnato in locale a partire dall’URI mostrato in URI otpauth://.

Un nuovo segreto casuale ha 20 byte (160 bit), la lunghezza consigliata dalla RFC 4226, ricavati da crypto.getRandomValues.

Consigli di sicurezza

  • Il segreto è il secondo fattore stesso: chi lo possiede può generare i tuoi codici. Non incollare i segreti di account importanti su computer condivisi e non condividere mai screenshot del codice QR.
  • Tutto viene calcolato in locale; niente passa sulla rete. Chiudi la scheda quando hai finito.
  • Conserva i codici di backup forniti dal servizio: un segreto perso non si può recuperare.

Domande frequenti

Perché il mio codice non corrisponde a quello della mia app?

Controlla prima l’orologio del dispositivo: i codici TOTP cambiano a ogni periodo, quindi un orologio sfasato di più di circa 30 secondi produce codici diversi. Poi verifica che algoritmo, cifre e periodo corrispondano a quelli usati dal servizio.

Lo strumento è compatibile con Google Authenticator e app simili?

Sì. Segue la RFC 6238 e il formato URI otpauth usato da quelle app. Scansiona il codice QR o inserisci il segreto Base32 nell’app, ed entrambi dovrebbero mostrare lo stesso Codice attuale.

Che differenza c'è tra TOTP e HOTP?

TOTP avanza con il tempo, quindi un codice scade dopo il periodo. HOTP avanza con un contatore che aumenta ogni volta che un codice viene usato, quindi un codice resta valido finché non viene usato o sostituito.

Posso usare questo strumento come autenticatore quotidiano?

È pensato per test, sviluppo e recupero. Un’app sul telefono o una chiave hardware è più sicura per l’uso di tutti i giorni, perché il segreto non deve essere incollato ogni volta in una pagina web.

I calcoli sono stati verificati rispetto agli standard?

Sì. Lo strumento è testato con i valori HOTP dell’appendice D della RFC 4226 e con i valori TOTP dell’appendice B della RFC 6238 per SHA-1, SHA-256 e SHA-512.