Generatore TOTP

Risultati

Ogni volta che Google Authenticator o Authy mostrano un codice a sei cifre che cambia ogni 30 secondi, quello è TOTP: un HMAC calcolato da un segreto condiviso e dall’ora Unix corrente, standardizzato nella RFC 6238. Questo generatore calcola gli stessi codici a partire da qualsiasi segreto Base32, ed è comodo per fare il debug di una nuova integrazione dell’autenticazione a due fattori (2FA), capire perché un servizio rifiuta i tuoi codici oppure osservare come reagisce l’algoritmo al variare dei parametri. Usalo con segreti di prova: il codice viene calcolato sul nostro server, quindi i segreti veri che proteggono i tuoi account devono stare in un’app di autenticazione, non in una pagina web.

Come funziona questo generatore TOTP

  1. 1

    Incolla un segreto Base32

    Lettere A-Z e cifre 2-7, il formato usato nei codici QR otpauth://. Spazi e minuscole vanno bene; qualsiasi altro carattere viene segnalato come Base32 non valido.

  2. 2

    Scegli l'algoritmo di hash

    SHA-1 è quello usato da quasi tutti i servizi; passa a SHA-256 o SHA-512 solo se il servizio lo richiede espressamente.

  3. 3

    Imposta cifre e periodo

    Scegli 6, 7 o 8 cifre e una finestra di 30 o 60 secondi. La combinazione standard è 6 cifre ogni 30 secondi.

  4. 4

    Leggi il codice corrente

    Il codice si aggiorna ogni secondo e il conto alla rovescia indica quanti secondi restano alla finestra corrente.

  5. 5

    Confronta l'URI otpauth

    Lo strumento mostra l'URI otpauth:// dei tuoi parametri, così puoi confrontarla con ciò che codifica il QR di configurazione di un servizio.

L’algoritmo in parole semplici

TOTP è HOTP (password monouso basata su HMAC, RFC 4226) in cui il contatore è sostituito dall’ora Unix corrente divisa per il passo temporale (di solito 30 secondi):

counter = floor(unix_time / 30)
hash = HMAC-SHA1(secret, counter_as_8_byte_big_endian)
offset = last byte of hash AND 0x0F
truncated = 4 bytes from offset, with the top bit zeroed
code = truncated mod 10^digits

Il tuo dispositivo e il server eseguono gli stessi calcoli sullo stesso segreto e sullo stesso orologio, quindi arrivano allo stesso codice senza che questo venga mai trasmesso. Un codice a 6 cifre è semplicemente l’HMAC troncato modulo 10^6. Niente magia, solo hashing.

Parametri comuni

Servizio Algoritmo Cifre Periodo
La maggior parte di siti e app SHA-1 6 30 s
GitHub SHA-1 6 30 s
Cloudflare SHA-1 6 30 s
Account Microsoft SHA-1 6 30 s
Alcune banche e VPN aziendali SHA-256 o SHA-512 8 60 s

Se un servizio rifiuta i tuoi codici, controlla prima il numero di cifre e il periodo, poi l’algoritmo. Tieni presente inoltre che alcune app di autenticazione ignorano in silenzio i parametri non standard (Google Authenticator storicamente trattava tutto come SHA-1, 6 cifre, 30 secondi): fai sempre le prove con l’app esatta che useranno i tuoi utenti.

Conservare i segreti in sicurezza

  • Non inviare mai un segreto 2FA via email o messaggio. Una volta finito in una casella di posta, resta per sempre nei log e nei backup del provider.
  • Attiva la 2FA scansionando il codice QR. Il QR codifica una URI otpauth://totp/... che riunisce segreto, algoritmo, cifre e periodo in un unico pacchetto senza ambiguità.
  • Fai il backup al momento dell’attivazione. Conserva i codici di recupero, o il segreto stesso, in un gestore di password; perdere il telefono senza di essi ti lascia chiuso fuori.
  • Un segreto per ogni servizio. Ogni servizio emette il proprio segreto alla configurazione; se uno trapela, riattiva la 2FA in modo che quello vecchio smetta di funzionare.

Deriva dell’orologio

TOTP funziona solo finché i due orologi concordano. Questa pagina calcola i codici con l’orologio del server: se il codice mostrato qui differisce da quello della tua app di autenticazione, il primo sospettato è l’orologio del dispositivo. La maggior parte dei validatori accetta una finestra di scarto in entrambe le direzioni (da 30 a 60 secondi); oltre, sincronizza l’orologio del dispositivo via NTP prima di dare la colpa al segreto.

Usa qui segreti di prova

Questo strumento calcola il codice sul nostro server: il segreto che digiti viene trasmesso via HTTPS a ogni aggiornamento e compare anche nell’URL della pagina se passi da uno step all’altro dello strumento. Va benissimo per sviluppo, demo e debug con segreti usa e getta. Non è il posto per il segreto vero che protegge la tua email o il tuo conto in banca; quello deve vivere in un’app di autenticazione dedicata sul tuo telefono. Se hai già incollato un segreto reale fuori dalla tua app di autenticazione, riattiva la 2FA su quel servizio così da ruotare il segreto.

Domande frequenti

Considera questa pagina uno strumento per sviluppatori e test, non una cassaforte. Il codice è calcolato lato server, quindi il segreto viaggia verso il nostro server via HTTPS e può comparire nell’URL della pagina tra uno step e l’altro. Usa liberamente segreti dimostrativi o di sviluppo; non incollare mai il segreto reale di un account a cui tieni. Se l’hai già fatto, riattiva la 2FA su quel servizio per ruotare il segreto.

Controlla prima i parametri: algoritmo, numero di cifre e periodo devono corrispondere esattamente a quanto emesso dal servizio. Poi controlla gli orologi: questa pagina usa l’orologio del server, quindi uno scostamento di solito indica l’altro dispositivo. Infine ricorda che alcune app ignorano i parametri non standard, e Google Authenticator è l’esempio classico.

Solo Base32: lettere dalla A alla Z e cifre dal 2 al 7, con padding = facoltativo. Gli spazi vengono rimossi e le minuscole convertite automaticamente. I segreti in esadecimale o in byte grezzi vanno prima convertiti in Base32, altrimenti lo strumento segnala un segreto Base32 non valido.

Resti chiuso fuori dalla 2FA di quell’account. Usa la procedura di recupero del servizio (codici di recupero, verifica dell’identità, SMS di riserva). Al momento della configurazione salva sempre i codici di recupero o il QR iniziale in un posto sicuro.

Sì. Genera un segreto casuale lato server, di almeno 128 bit (la RFC 4226 ne raccomanda 160), mostralo una sola volta come codice QR e valida i codici inviati calcolando lo stesso HMAC, di norma accettando una finestra di tolleranza in entrambe le direzioni. Esistono librerie mature per ogni stack: pyotp (Python), otplib (JavaScript), rotp (Ruby).

Strumenti correlati

Strumento disponibile in altre lingue