谷歌验证器(Google Authenticator)

        双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统。双因素认证是一种采用时间同步技术的系统,采用了基于时间、事件和密钥三变量而产生的一次性密码来代替传统的静态密码。每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间、事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证。就像我们去银行办卡送的口令牌.

多因素认证(MFA),是一种计算机访问控制的方法,用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源。MFA的目的是建立一个多层次的防御,使未经授权的人访问计算机系统或网络更加困难,从而提高安全性。

目前大部分网站或软件已经采用二次加密使用Google Authenticator(谷歌身份验证器)动态密码。

Google Authenticator项目在github上的地址是:https://github.com/PHPGangsta/GoogleAuthenticator
工具/原料
Google Authenticator(谷歌身份验证器)
方法/步骤
百度搜索下载或通过三方软件等下载到手机上,完成安装。
运行手机安装后"身份验证器"图标

第一次运行需要设置你的帐户跟密钥(密钥可通过网站或软件获取),保存返回。

此时主界面已经显示你的动态密码,动态密码一分钟变更一次。

【验证实现原理】

开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。

实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。

目前客户端有:
android版: Google 身份验证器
iOS版:https://itunes.apple.com/cn/app/google-authenticator/id388497605

实现原理:

一、用户需要开启Google Authenticator服务时,
1.服务器随机生成一个类似于『DPI45HKISEXU6HG7』的密钥,并且把这个密钥保存在数据库中。
2.在页面上显示一个二维码,内容是一个URI地址(otpauth://totp/账号?secret=密钥),如『otpauth://totp/[email protected]?secret=DPI45HCEBCJK6HG7』,下图:
谷歌验证器(Google Authenticator)_第1张图片
3.客户端扫描二维码,把密钥『DPI45HKISEXU6HG7』保存在客户端。

二、用户需要登陆时
1.客户端每30秒使用密钥『DPI45HKISEXU6HG7』和时间戳通过一种『算法』生成一个6位数字的一次性密码,如『684060』。如下图android版界面:
谷歌验证器(Google Authenticator)_第2张图片
2.用户登陆时输入一次性密码『684060』。
3.服务器端使用保存在数据库中的密钥『DPI45HKISEXU6HG7』和时间戳通过同一种『算法』生成一个6位数字的一次性密码。大家都懂控制变量法,如果算法相同、密钥相同,又是同一个时间(时间戳相同),那么客户端和服务器计算出的一次性密码是一样的。服务器验证时如果一样,就登录成功了。

Tips:
1.这种『算法』是公开的,所以服务器端也有很多开源的实现,比如php版的:https://github.com/PHPGangsta/GoogleAuthenticator 。上github搜索『Google Authenticator』可以找到更多语言版的Google Authenticator。
2.所以,你在自己的项目可以轻松加入对Google Authenticator的支持,在一个客户端上显示多个账户的效果可以看上面android版界面的截图。目前dropbox、lastpass、wordpress,甚至vps等第三方应用都支持Google Authenticator登陆,请自行搜索。
3.现实生活中,网银、网络游戏的实体动态口令牌其实原理也差不多,大家可以自行脑补下,谢谢。
谷歌验证器(Google Authenticator)_第3张图片

 

【插件下载】

1、Google Authenticator for Android - Download https://google-authenticator.en.softonic.com/android

2、Google Authenticator – WordPress plugin | WordPress.org https://wordpress.org/plugins/google-authenticator/

3、Linux下部署SSH登录时的二次身份验证环境记录(利用Google Authenticator) https://www.cnblogs.com/kevingrace/p/7065255.html  <做服务器运维等保的推荐看这个>

4、利用Google Authenticator实现用户双因素认证-https://blog.51cto.com/kbsonlong/2113665

5、python 实现google authenticator 认证- https://blog.51cto.com/12113362/2053673

你可能感兴趣的:(谷歌验证器(Google Authenticator))