了解Google身份validation器应用程序的工作原理

我见过很多双因素authentication应用程序,如谷歌身份validation应用程序。

该应用程序离线工作,每30秒重置手机上的密钥。

那么服务器如何知道哪些密钥是有效的?

我无法理解这一点?

如果我自己创build这样一个应用程序。 我怎么能这样做?

Google身份validation器使用基于时间的一次性密码algorithm 。 它使用当前时间和共享密钥来计算代码。 只要设备和服务器具有正确的时间设置,生成的代码就会生效。

Google身份validation器使用两种不同的方法:

1 …

“基于时间”的版本(TOTP)很容易保持同步。 (您的设备…和远程服务器…必须具有相同/正确的时间。)

2 …

“计数器”版本(HOTP)保持同步(即使您的移动设备处于飞行模式),并以某种方式每隔30秒更新其计数器内部,而远程服务器也是这样。

我只和#1一起工作过…因为Google不太清楚#2计数器如何在移动设备和远程服务器之间没有任何通信的情况下保持“同步”(改变30秒)。