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

时间:2011-06-13 13:42:54

标签: algorithm authentication passwords

也许你们中的一些人知道谷歌2因素认证;首先,Google会生成一个固定密码(例如“abcd”)。 如果您登录,则会要求您提供针脚,应用程序可以生成针脚,或者您可以使用10个预设针脚中的一个。有趣的是,您不必使用一个引脚,该应用程序会生成一个随机的,而不使用网络访问。

怎么做的?我知道如何使用一个特定的引脚,但你怎么能使用几个“随机”引脚?

谢谢, 马克

2 个答案:

答案 0 :(得分:2)

这可以通过像HOTP这样的系统实现(基于散列的OTP)。 The RFC详细解释了它的工作原理,但简而言之:

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

答案 1 :(得分:0)

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

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