给定一个基于时间的一次性密码生成器(例如 Google Authenticator),需要多少个(时间,PIN)对实例才能显着削弱算法,使其能够缩小可能的种子范围到原来的功能?如果通过 SMS 或电子邮件向客户发送 PIN 码(而不是使用密钥卡或不会让人们看到过去 PIN 码的实际 Google Authenticator 应用程序),那么泄露过去 PIN 码的妥协是否会对系统构成重大威胁(请注意,电子邮件和短信都带有相对精确的时间信息)?
这个问题与双因素身份验证系统的设计有关,它是否应该涉及生成的一次性密码的任何时间戳存储。如果这大大削弱了系统的安全性,那么有人会争辩说,该设计不应包括任何过去 OTP(电子邮件、SMS 或其他)的存储。
- OTP 算法详情:http ://www.ietf.org/rfc/rfc4226.txt
- 参考 Java 实现:http ://rfc-ref.org/RFC-TEXTS/4226/chapter16.html
根据人们对stackoverflow的建议,这里重新提出:https ://stackoverflow.com/questions/9041162/reverse-engineering-one-time-passwords-for-two-factor-authentication-systems (问题会指向到这里)