Given a one-time password generator that is time-based (such as Google Authenticator), how many instances of (time, PIN) pairs would one need to significantly weaken the algorithm to a point where one would be able to narrow down possible seeds to the original function? If one were to send out PINs to clients via SMS or email (instead of using a keyfob or the actual Google Authenticator app which does not let one see past PINs), would a compromise that reveals past PINs be a significant threat to the system (note that both emails and SMS carry relatively precise time information)?
The question is related to the design of a two-factor authentication system on whether it should involve any timestamped storage of the one-time passwords generated. If this significantly weakens the security of the system, then one would argue that the design should not include any storage of past OTPs (emails, SMS or otherwise).
- Details of the OTP Algorithm: http://www.ietf.org/rfc/rfc4226.txt
- Reference Java Implementation: http://rfc-ref.org/RFC-TEXTS/4226/chapter16.html
Per advice by folks on stackoverflow, this is re-asked here: http://stackoverflow.com/questions/9041162/reverse-engineering-one-time-passwords-for-two-factor-authentication-systems (question there will point to this one here)