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

Is it possible to predict future 2FA values given older values with timestamps?

共享 2FA 代码安全吗?我说的 TOTP 就像 Google AuthenticatorAuthy.

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

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

所以如果可能的话,我该怎么做?我正在寻找一些算法。

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

示例:

22:20:30 561918
22:21:00 161664
22:21:30 610130

在内部,这些 2FA 生成器通常基于已知安全的 time-based one-time password algorithm. Those algorithms work by using strong hash functions on a combination of two values: a shared secret and the current time increment, and specifically use a construction called HMAC 工作,前提是底层哈希函数是安全的。

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

换句话说,你不必担心有人会根据过去的值猜测未来的值,但我仍然建议不要给出旧值,因为你不应该将 2FA 值给出给除了您正在登录的网站。 :-)