是否可以根据带有时间戳的旧值来预测未来的 2FA 值?

Nem*_*sis 4 security authentication math google-authenticator

共享2FA代码安全吗?我说的是TOTPGoogle AuthenticatorAuthy

例如,如果我有代码和生成时间,是否可以预测新代码?如果我有超过 1 对代码+时间怎么办?

我认为可以根据旧信息(代码+时间)预测新代码。

那么如果这是可能的,我该怎么做呢?我正在寻找一些算法。

已知时间段、时间、代码和秘密长度。

例子:

22:20:30 561918
22:21:00 161664
22:21:30 610130
Run Code Online (Sandbox Code Playgroud)

tem*_*def 6

在内部,这些 2FA 生成器通常基于基于时间的一次性密码算法来工作。这些算法通过对两个值的组合使用强哈希函数来工作:共享秘密和当前时间增量,并且特别使用称为HMAC的结构,只要底层哈希函数是安全的,该结构已知是安全的。

\n\n

因此,如果有人可以通过查看 2FA 设备的一些时间戳和输出来预测 2FA 设备的未来输出,那么他们要么 (1) 必须知道共享密钥,要么 (2) 能够破解 HMAC。除非有人侵入了 Google,或者知道对 HMAC 或底层哈希函数的攻击方式超出了公共文献中的\xe2\x80\x99s,否则这两种情况都不太可能发生。

\n\n

换句话说,你不应该\xe2\x80\x99t需要担心有人猜测给定过去值的未来值,尽管我\xe2\x80\x99d仍然建议不要给出旧值,因为你不应该\xe2\x80\x99t给出将 2FA 值发送给除您\xe2\x80\x99 登录的站点之外的任何人。:-)

\n

  • 我想你可能误解了我的回答。目前还没有已知的算法可以预测以这种方式生成的 2FA 密码,因为它的设计目的是抵抗此类算法。 (2认同)