共享2FA
代码是否安全?我说的是TOTP
,例如Google Authenticator
或Authy
。
例如,如果我有代码和生成时间,是否可以预测新代码?如果我的代码和时间超过一对,该怎么办?
我认为可以根据旧信息(代码+时间)来预测新代码。
因此,如果可能的话,我该怎么办?我正在寻找某种算法。
已知时间段,时间,代码和秘密长度。
示例:
22:20:30 561918
22:21:00 161664
22:21:30 610130
[内部,这些2FA生成器通常基于time-based one-time password algorithm工作。这些算法通过对两个值(共享的机密和当前时间增量)的组合使用强大的哈希函数来工作,并且特别使用称为HMAC的构造,只要其基础哈希函数是已知的,该构造就是安全的。
因此,如果有人可以通过查看2FA设备的时间戳和输出来预测2FA设备的未来输出,那么他们要么(1)必须知道共享密钥,要么(2)能够破解HMAC 。除非有人对Google进行了黑客攻击,或者知道以非公开文献记载的方式对HMAC或底层哈希函数进行了攻击,但这两种情况都不大可能。
换句话说,您不必担心有人会根据过去的值来猜测将来的值,尽管我仍然建议您不要给出旧的值,因为您不应向除您网站以外的任何人提供2FA值重新登录。 :-)