什么是两步验证?GoogleAuthenticator工作流程及实际上验证方法

什么是两步验证?

您应该熟悉两步验证,对吧?例如,苹果有自己的两步验证政策,防止用户的账户密码被盗和锁定手机进行勒索。这种例子并不少见,所以苹果建议大家开启两步验证。

谷歌的验证器一般也用于登录进行两步验证,和苹果的两步验证一样。只是Google的Authenticator使用越来越广泛,比如GitHub的两步验证就是基于Google的Authenticator。

Google 身份验证器简介

Google Authenticator 是一种基于时间和哈希的一次性密码算法的两步验证软件令牌。用户需要下载绑定网站的手机APP(Authenticator)。当网站验证完成用户名和密码后,将验证APP上生成的6位验证码。验证通过则登录成功google身份验证器,否则登录失败。

谷歌身份验证器使用

让我们看一下 Github 上使用 Google Authenticator 启用两步验证的应用。

如图所示,Github 上默认不开启两步验证。点击设置按钮进行设置。

google nexus7 wifi 验证_google nexus 5 官网验证_google身份验证器

google nexus7 wifi 验证_google nexus 5 官网验证_google身份验证器

Github 提供了两种基于 APP(Google Authenticator)和短信验证码的两步验证方式。我们选择第一个 Google Authenticator。

google nexus 5 官网验证_google身份验证器_google nexus7 wifi 验证

进入第一个验证模式,然后在APP验证器不工作时显示一堆恢复码以备不时之需。保存它们并单击下一步。

google身份验证器_google nexus 5 官网验证_google nexus7 wifi 验证

这是认证器的钥匙,下载谷歌的AuthenticatorAPP,然后扫描二维码进行绑定。

google身份验证器_google nexus 5 官网验证_google nexus7 wifi 验证

绑定后,APP Github模块下方会显示一个6位数的验证码,在上面的框中输入即可。

google nexus 5 官网验证_google nexus7 wifi 验证_google身份验证器

如下图所示,已成功启用两步验证。

google nexus7 wifi 验证_google身份验证器_google nexus 5 官网验证

google nexus 5 官网验证_google nexus7 wifi 验证_google身份验证器

接下来google身份验证器,我们退出 Github 并再次登录。该页面将提示您输入 Google 的验证器验证码。如果APP不能正常使用,可以使用底部之前保存的恢复码登录。

google nexus7 wifi 验证_google nexus 5 官网验证_google身份验证器

好的,Google Authenticator 就到此为止,它是如何工作的,它的原理是什么?我们的网站和APP是如何连接谷歌验证器的,让我们一一揭开谜底。

Google 身份验证器工作流程

其实Google Authenticator使用的是TOTP算法(Time-Based One-Time Password,即基于时间的一次性密码),其核心内容包括以下三点。

1、安全密钥

是客户端与服务端约定的安全密钥,也是绑定手机APP认证器(手机端通过扫描或手动输入安全密钥的方式绑定)和验证客户端唯一需要的密钥。验证码 安全密钥,由加密算法生成,最后经过Base32编码。

2、验证时间

google nexus7 wifi 验证_google身份验证器_google nexus 5 官网验证

Google 选择了 30 秒作为时间片,T 的值是从 Unix 纪元(1970 年 1 月 1 日 00:00:00) 算起的 30 秒数,所以在 Google Authenticator 中我们可以看到验证码每30秒刷新一次。

更详细的原理参考:

3、签名算法

Google使用HMAC-SHA1算法,全称:Hash-based message authentication code(哈希运算消息验证码),它以一个key和一个消息为输入,生成一个消息摘要作为输出,这里取SHA1 算法作为消息输入。

使用HMAC算法是因为只有用户自己知道正确的输入key,所以会得到唯一的输出。该算法可以简单地表示为:

hmac = SHA1(秘密 + SHA1(秘密 + 输入))

其实TOTP是HMAC-OTP(基于HMAC的一次性密码生成)的超集,不同的是TOTP是以当前时间为输入,而HMAC-OTP是以自增计算器为输入,需要使用同步。

Google 身份验证器的实际应用

了解了以上原理,我们就可以实战了。

google nexus 5 官网验证_google nexus7 wifi 验证_google身份验证器

/**
 * 微信公众号:Java技术栈
 */

public class AuthTest {

    @Test
    public void genSecretTest(
{
        String secret = GoogleAuthenticator.generateSecretKey();
        String qrcode = GoogleAuthenticator.getQRBarcodeURL("Java技术栈""javastack.cn", secret);
        System.out.println("二维码地址:" + qrcode);
        System.out.println("密钥:" + secret);
    }

    @Test
    public void verifyTest(
{
        String secret = "ZJTAQGLVOZ7ATWH2";
        long code = 956235;
        GoogleAuthenticator ga = new GoogleAuthenticator();
        boolean r = ga.verifCode(secret, code);
        System.out.println("是否正确:" + r);
    }
}

第一种方法是生成一个密钥和一个绑定到扫描二维码的URL。

第二种方法是根据密钥和验证码进行身份验证。

这里只是GoogleAuthenticator类的源码逻辑参考。

如果你有收获,请点赞转发,也可以留言表达你的问题和意见。

点击链接查看亮点

google nexus 5 官网验证_google nexus7 wifi 验证_google身份验证器

google nexus 5 官网验证_google nexus7 wifi 验证_google身份验证器

google nexus 5 官网验证_google nexus7 wifi 验证_google身份验证器

google nexus7 wifi 验证_google身份验证器_google nexus 5 官网验证

google nexus 5 官网验证_google身份验证器_google nexus7 wifi 验证

长按下图

版权声明:
作者:中州西鹿谷歌
链接:https://www.gmail777.com/archives/1082
来源:中州西鹿
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
什么是两步验证?GoogleAuthenticator工作流程及实际上验证方法
什么是两步验证?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见不鲜,所以苹果都建议大家开启两步验证的。的身份验证器一般也是用于登录进行两步验证,和苹果的两步验证是同样的道理。身份验证器。位验证码数字,验证通过则成功登录,否则登录失败。身份验证器开启两步验证的应用。(谷歌身份验证器)和短信验证码两种两步验证的方式,我们选择第一种谷歌身份验证器。
<<上一篇
下一篇>>
文章目录
关闭
目 录