如何使用一个密码创建 pin(又名 Google 2-Factor-Auth)

发布于 2024-11-15 05:12:43 字数 265 浏览 3 评论 0原文

也许你们中的一些人知道 Google 的 2-Factor-Authentication;首先 Google 生成一个常量密码(例如“abcd”)。 如果您登录,系统会要求您输入 PIN 码,应用程序可以生成该 PIN 码,或者您也可以使用 10 个预设 PIN 码之一。有趣的是,您不必使用一个 PIN,应用程序会在不使用网络访问的情况下生成一个随机PIN。

这是怎么做到的?我知道如何使用一个特定的引脚来完成此操作,但是如何使用多个“随机”引脚呢?

谢谢, 马克

maybe some of you know Googles 2-Factor-Authentication; first Google generates a constant password (eg. "abcd").
If you login, you're asked for a pin, an app can generate that or you can use one of 10 preset pins. The interesting part is, that you don't have to use one pin, the app generates a random one without using network access.

How is that done? I know how to do it with one specific pin, but how could you use several "random" pins?

Thanks,
Marc

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小矜持 2024-11-22 05:12:43

这是通过 HOTP(基于哈希的 OTP)等系统实现的。 RFC 详细解释了它的工作原理,但简而言之:

  1. 服务器生成一个随机数密钥并与 OTP 生成器共享。
  2. 服务器和 OTP 生成器都将计数器初始化为 0。
  3. 当用户从 OTP 生成器请求新密钥时,它会增加计数器,计算 HMAC 使用共享密钥,并以指定方式对部分散列进行编码,产生数字代码。
  4. 当服务器收到 OTP 代码时,它会执行相同的计算,如果匹配则接受它。如果没有,它会再次尝试使用其他几个(较大的)计数器 ID,以防用户跳过一个或多个 ID。

预先生成的 OTP 列表只需如上所述提前生成。

This is made possible by systems like HOTP (hash-based OTP). The RFC explains how it works in detail, but in short:

  1. The server generates a random secret key and shares it with the OTP generator.
  2. Both server and OTP generator initialize a counter to 0.
  3. When the user requests a new key from the OTP generator, it increments the counter, calculates the HMAC of it using the shared key, and encodes part of the hash in a specified way, resulting in a numeric code.
  4. When the server receives an OTP code, it performs the same calculation, accepting it if it matches. If it does not, it tries again with several other (larger) counter IDs in case the user skipped one or more IDs.

Pre-generated lists of OTPs are simply produced as described above, ahead of time.

桃扇骨 2024-11-22 05:12:43

我相信谷歌通过计算它认为您可以使用的多个引脚来做到这一点,并且愿意接受任何匹配的引脚。

这是一个重要的可用性功能,因为这意味着如果有人使用 2-factor 登录一次失败,他们可以尝试再次登录并且仍然可以。

I believe that Google does it by computing multiple pins that it thinks you could use, and is willing to accept any of these that match.

This is an important usability feature, because it means that if someone fails to login once using 2-factor, they can try to login another time and still be OK.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文