One-Time Passwords look like they can play a helpful role in a layered-security system, yet their use, especially paper-based TANs seem like clients could be vulnerable to getting out of sync with the servers. Is this a common problem with One-Time Password schemes you've seen implemented and, if so, are there best-practices that can be implemented to minimize these occurrences?

If the better implementations are not vulnerable to falling out of sync that would be helpful note as well.


Disclosure: I work for a company that builds an OTP-based 2FA server.

Yes they can and do become unsynchronized assuming it's not a time based OTP. Assuming we're talking hardware tokens, the biggest reason these things become unsynchronized (believe it or not) is usually because someone's toddler likes to press the button repeatedly. Followed by fat-fingering usernames and/or pins.

If you're using a device that doesn't have it's own power source, e.g. USB-powered, it doesn't get out of sync very often unless you like pressing the button while plugged in. To combat this problem, often times the server will generate 15-20 future iterations of the password after a successful authentication, and future authentications will validate against these values, and then after the next successful auth it will generate another 15-20.

In the event things get totally out of sync you could potentially enter the next 2-4 OTP's generated by the token, and the system will scan from what it thinks is the current key until it finds matching passwords, up to say 100 iterations. This will allow you to resync the key states.


There are two common kinds of one-time passwords. One kind has passwords that are actually valid for a short period of time (a few minutes). This kind remains synchronized as long as the clocks on the server and on the password calculator don't derive too much.

With the other kind, truly one-time passwords, the typical way to handle synchronization is that the server indicates which password it wants: instead of asking password:, it asks for password #42:, and that tells the user to enter the 42nd password on his list. Some OTP software have the server print out the last password it accepted and the user must enter the next one.

Another variant has the server send a challenge which the user must type into his password calculator. That doesn't work with paper lists.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.