Un'app di autenticazione può produrre un codice senza ricevere un messaggio. Un codice di verifica inviato via SMS arriva invece attraverso un canale di consegna, quindi la configurazione e la gestione degli errori sono diverse.
Cosa significa ogni termine?
OTP descrive un codice accettato una sola volta. HOTP e TOTP descrivono algoritmi per generare quel codice.
| Termine | Cosa fornisce il codice | Di cosa ha bisogno l'utente |
|---|---|---|
| OTP | La categoria generale, indipendente dal metodo di generazione | Dipende dal metodo scelto |
| HOTP | Un segreto condiviso e un contatore incrementale | Un token o un'applicazione registrati |
| TOTP | Un segreto condiviso e l'intervallo di tempo corrente | Un autenticatore registrato con un orologio utilizzabile |
RFC 4226 definisce il segreto condiviso e il contatore di HOTP. RFC 6238 usa il tempo al posto di quel contatore per TOTP.
L'autenticatore e il verificatore hanno bisogno dello stesso segreto per calcolare codici corrispondenti. Proteggi quel segreto durante la registrazione e l'archiviazione, poiché possederlo consente la generazione di codici.
Come cambia il codice di HOTP?
Il token incrementa un contatore quando genera un codice. Il verificatore aggiorna il proprio stato corrispondente dopo aver accettato il codice atteso.
Un codice HOTP non scade solo perché passa del tempo. Generare codici senza inviarli può portare il token avanti rispetto al verificatore.
Fornisci la risincronizzazione del contatore richiesta dalla specifica di HOTP. Limita la ricerca dei valori successivi del contatore, perché accettare più candidati aumenta le possibilità di indovinare.
Mantieni limitati i tentativi di autenticazione non riusciti durante quel processo. La risincronizzazione non deve diventare un percorso verso tentativi illimitati.
Come cambia il codice di TOTP?
TOTP genera un codice dal segreto condiviso e dall'intervallo di tempo corrente, anche quando nessuno richiede un nuovo codice.
RFC 6238 consiglia un intervallo di tempo di 30 secondi. Il codice visualizzato cambia quando l'orologio supera il limite dell'intervallo successivo.
Un codice inserito verso la fine di un intervallo può raggiungere il verificatore durante l'intervallo successivo. Consenti un ritardo limitato affinché la normale tempistica di inserimento non causi errori non necessari.
L'RFC consiglia al massimo un intervallo di tolleranza per il ritardo di rete. Questa raccomandazione riguarda il ritardo di trasmissione; non è un limite universale per tutta la risincronizzazione dell'orologio.
Mantieni allineati gli orologi del dispositivo e del server. Una finestra di accettazione ampia tollera più disallineamento. Accetta però anche più codici candidati.
Rifiuta un codice già accettato anche all'interno del suo intervallo di tempo. Il cambio successivo dell'orologio non garantisce da solo l'uso singolo.
Un codice di verifica inviato da Bird è un TOTP?
No. Bird Verify genera un codice di verifica casuale e lo recapita attraverso il canale selezionato.
Il destinatario non registra un segreto condiviso di autenticazione per ricevere quel codice. La sua validità segue la scadenza e la politica sui tentativi della verifica, non il contatore o l'intervallo di tempo di un autenticatore.
Scegli la lunghezza del codice, la scadenza e il limite di tentativi per il flusso di verifica. Misura gli intervalli di consegna e completamento quando i destinatari segnalano ritardi.
HOTP e TOTP generano codici localmente dopo la registrazione, quindi non attendono un messaggio al momento dell'accesso. Il loro recupero deve invece tenere conto di un autenticatore o segreto condiviso smarrito.
Quale metodo scegliere?
- Usa un codice di verifica recapitato quando il flusso deve verificare l'accesso a un numero o indirizzo raggiungibile.
- Usa TOTP quando gli utenti possono registrare e conservare un autenticatore con un orologio affidabile.
- Usa HOTP quando il token non può basarsi sul tempo e puoi mantenere la sincronizzazione del contatore.
- Per ogni metodo, limita i tentativi, imponi l'uso singolo e definisci il recupero dell'account prima del lancio.
In breve
OTP è la categoria.
HOTP e TOTP sono modi per generare codici monouso. Un server può anche generare e recapitare un codice di verifica casuale.
HOTP segue un contatore.
Generare codici inutilizzati può portare il dispositivo avanti rispetto al verificatore. Prevedi un meccanismo limitato per risincronizzarli.
TOTP segue l'orologio.
L'intervallo di tempo consigliato è di 30 secondi. Tieni conto del ritardo di inserimento senza allargare inutilmente la finestra di accettazione.
Scegli il modello di registrazione e recupero.
I codici da autenticatore richiedono un segreto condiviso in precedenza. I codici recapitati richiedono un canale di consegna funzionante.