Codici QR TOTP 2FA spiegati
Un'analisi tecnica approfondita del formato URI otpauth://, i segreti base32 e la matematica TOTP di RFC 6238.
Cos'è TOTP
TOTP (Time-based One-Time Password, RFC 6238) è l'algoritmo alla base di Google Authenticator, Authy, 1Password, Bitwarden e ogni altra app di autenticazione. Produce un codice a 6 cifre che cambia ogni 30 secondi in base a un segreto condiviso e all'ora Unix corrente.
L'URI otpauth
otpauth://totp/Issuer:account@example.com?secret=BASE32SECRET&issuer=Issuer&algorithm=SHA1&digits=6&period=30Lo schema URI è otpauth://, il tipo è totp (l'altra opzione è hotp, basato su contatore), poi il label, poi i parametri di query. Le app di autenticazione analizzano questo URI e lo aggiungono al vault dell'utente con una sola scansione.
Il label
Formato opzionale: Issuer:account@example.com. Il prefisso Issuer è ridondante rispetto al parametro di query issuer, ma la maggior parte delle app rispetta entrambi.
Il segreto
Una stringa di byte codificata in base32 (A-Z e 2-7, senza padding). Si raccomandano almeno 128 bit, la maggior parte dei server usa 160 bit (32 caratteri base32). Non codificare mai il segreto in URL; lasciarlo come base32 grezzo.
Algoritmo, cifre, periodo
algorithm: SHA1 (predefinito, universalmente supportato), SHA256 o SHA512. digits: 6 (predefinito) o 8. period: 30 secondi (predefinito) o 60. Mantieni i valori predefiniti a meno che tu non abbia un motivo specifico, alcune app di autenticazione non implementano le opzioni non predefinite.
Come viene calcolato il codice
Ad ogni intervallo di 30 secondi, l'autenticatore esegue: HMAC-SHA1(secret, floor(unix_time / 30)), prende gli ultimi 4 bit dell'HMAC come offset dinamico, legge 4 byte a partire da quell'offset, applica una maschera a 31 bit e riduce modulo 106 per ottenere un codice a 6 cifre.
Generarne uno con Abundera QR
Apri il generatore TOTP, inserisci emittente (il nome del tuo brand), account (email o username dell'utente) e un segreto base32. I valori predefiniti per algoritmo/cifre/periodo sono corretti per quasi tutti i server. Scarica il PNG e invialo per email o SMS all'utente, oppure incorporalo nel tuo flusso di registrazione.
Nota sulla privacy
Il tuo segreto TOTP è una credenziale condivisa tra server e utente. Abundera QR non la vede mai. Tutta la codifica avviene nel browser. Leggi l'informativa sulla privacy completa.