TOTP è in effetti una variante basata sul tempo di HOTP . In entrambi i casi, la sequenza di possibili password deriva da una chiave segreta e da un "valore di modifica". Con TOTP, il "valore variabile" è l'ora corrente, che entrambi i fini del protocollo presumibilmente sanno (l'ora corrente è di dominio pubblico). In HOTP, il "valore di modifica" è un contatore, che viene incrementato dopo l'uso. Entrambe le parti (client e server) ricordano l'ultimo valore del contatore utilizzato.
Se il client e il server vengono desincronizzati (ad esempio il client ha inviato una password e incrementato il contatore, ma un problema di rete ha interrotto la connessione e il server non lo ha mai ricevuto), esiste un processo per la risincronizzazione: dopo aver ricevuto una password, il server non lo confronta con la password successiva (in base al suo contatore), ma con le successive 100 password, consentendo così una contro-desincronizzazione di un 100 circa.
Questo meccanismo è adatto alle chiavi della macchina, che:
- Non hai una fonte di tempo comune (nessun orologio nella chiave).
- È necessario lavorare con una comunicazione unidirezionale (dalla chiave alla macchina, non viceversa).
- Avere una "risincronizzazione manuale" se non è andata bene (il nipote di 3 anni ha giocato con la chiave per un intero pomeriggio, ottenendo la chiave contro il bancone della macchina, anche con l'offset +100; non si apre più l'auto da remoto, ma quando si accende il motore, l'automobile e la chiave comunicano attraverso la RF a corto raggio per ripristinare i contatori).
Come per il codice, una semplice richiesta google su "hotp php" punta a questo e che