开启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/kisexu@gmail.com?secret=DPI45HCEBCJK6HG7』,下图:
3.客户端扫描二维码,把密钥『DPI45HKISEXU6HG7』保存在客户端。
二、用户需要登陆时
1.客户端每30秒使用密钥『DPI45HKISEXU6HG7』和时间戳通过一种『算法』生成一个6位数字的一次性密码,如『684060』。如下图android版界面:
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) 的实现原理是什么?
原创
©著作权归作者所有:来自51CTO博客作者mb6440a93307547的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:模拟低速网络
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Google Authenticator SSH双重验证技术
Google Authenticator SSH双重验证技术,SSH 安全隐患,在这我不多阐述,基于安全考虑,Linux系统服务器采用Google authenticator 身份验证,实现SSH双重验证技术,保证业务正常运行
linux google ssh google_authenticator -
CentOS 使用 Google Authenticator 登录验证
CentOS 使用 Google Authenticator 登录验证
CentOS Google Aut -
Google Authenticator windows client 谷歌身份验证器 windows 电脑端
谷歌身份验证器现在有安卓客户端和ios客户端,本人开发了一个windows客户端,基于 .NETFramework v4.7 开发,已在 github 上开源,可以在
google auth Authenticator windows 电脑 -
Google Authenticator安全配置ssh二次验证登录
安装依赖环境yum install gcc wget pam-devel libpng-devel libtool安装git及二维码工具yum install -y git qrencode安装google-authenticatorgit clone https://githu
google verification google-authenticator 二次验证 -
Google Authenticator TOTP原理详解(以Python为例)
通过Python语言详细解释并且示例了Google Authenticator的工作原理及其算法.
Google Authenticato 谷歌验证器 动态口令 HMAC-SHA1 TOTP