双因素身份验证如何与随机数一起使用?

How does two factor authentication work with random numbers?

我了解双因素身份验证的基本概念:两个凭据用于更安全地对用户进行身份验证。我问的是我经常遇到的双因素认证的具体方法。

当我为我的 Google 帐户启用双因素身份验证时,我能够在我的 iPhone 上访问经常变化的伪随机数。这些随机数构成了第二个身份验证因素(另一个是我的密码),我可以输入这些数字来验证自己。

我真的不明白的是,当我的 iPhone 离线时,这些数字仍然可以用来验证我的身份。 所以显然发生了什么比 Google 验证我有他们给我的号码更有​​趣。

我对到底发生了什么很感兴趣。伪随机数是系统时间的键控哈希吗?这是我最好的猜测,但我很好奇。

您所谓的“伪随机数”是一次性密码 (OTP)。这些密码是根据算法生成的。如果您谈论频繁更改的 OTP,则使用 TOTP 算法。 TOTP(time-based one-time password)算法是指生成一个临时密码。此密码通常会在 30-60 秒后过期。您的设备不需要在线,因为 OTP 是根据密钥生成的,这对您的设备和服务是一样的。因此设备和服务器生成相同的密码,当您在访问您的帐户的过程中输入 OTP 时,服务器会检查 OTP 是否正确。服务器根据它确认或拒绝对帐户的访问。