分享好友 最新动态首页 最新动态分类 切换频道
Google账户两步验证是如何工作的?
2024-12-26 23:54

我们往往会在不同的网站上使用相同的密码,这样一旦一个网站账户的密码泄露,就会危及到其他使用相同密码的账户的安全,这也是最近的密码泄露事件造成如此大影响的原因。为了解决这个问题,一些网站在登录时要求除了输入账户密码之外,还需要输入另一个一次性密码。银行常用的动态口令卡就是这种一次性密码的例子,在线支付网站的一次性短信密码则是另一种实现。

Google账户两步验证是如何工作的?

Google现在也推荐用户启用两步验证(Two-step verification)功能(Youtube上的视频介绍,并且除了以短信或者电话的方式发送一次性密码之外,还提供了另一种基于时间的一次性密码(Time-based One-time Password,简称TOTP,只需要在手机上安装密码生成应用程序,就可以生成一个随着时间变化的一次性密码,用于帐户验证,而且这个应用程序不需要连接网络即可工作。仔细看了看这个方案的实现原理,发现挺有意思的。下面简单介绍一下。

HTOP

Google的两步验证算法源自另一种名为HMAC-Based One-Time Password的算法,简称HOTP。HOTP的工作原理如下

客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道。此外,客户端和服务器各有一个计数器C,并且事先将计数值同步。

进行验证时,客户端对密钥和计数器的组合(K,C)使用HMAC(Hash-based Message Authentication Code)算法计算一次性密码,公式如下

HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))

上面采用了HMAC-SHA-1,当然也可以使用HMAC-MD5等。HMAC算法得出的值位数比较多,不方便用户输入,因此需要截断(Truncate)成为一组不太长十进制数(例如6位)。计算完成之后客户端计数器C计数值加1。用户将这一组十进制数输入并且提交之后,服务器端同样的计算,并且与用户提交的数值比较,如果相同,则验证通过,服务器端将计数值C增加1。如果不相同,则验证失败。

这里的一个比较有趣的问题是,如果验证失败或者客户端不小心多进行了一次生成密码操作,那么服务器和客户端之间的计数器C将不再同步,因此需要有一个重新同步(Resynchronization)的机制。这里不作具体介绍,详情可以参看RFC 4226。

TOTP

介绍完了HOTP,Time-based One-time Password(TOTP)也就容易理解了。TOTP将HOTP中的计数器C用当前时间T来替代,于是就得到了随着时间变化的一次性密码。非常有趣吧

虽然原理很简单,但是用时间来替代计数器会有一些特殊的问题,这些问题也很有意思,我们选取几个进行一下探讨。

首先,时间T的值怎么选取?因为时间每时每刻都在变化,如果选择一个变化太快的T(例如从某一时间点开始的秒数,那么用户来不及输入密码。如果选择一个变化太慢的T(例如从某一时间点开始的小时数,那么第三方攻击者就有充足的时间去尝试所有可能的一次性密码(试想6位数字的一次性密码仅仅有10^6种组合,降低了密码的安全性。除此之外,变化太慢的T还会导致另一个问题。如果用户需要在短时间内两次登录账户,由于密码是一次性的不可重用,用户必须等到下一个一次性密码被生成时才能登录,这意味着最多需要等待59分59秒!这显然不可接受。综合以上考虑,Google选择了30秒作为时间片,T的数值为从Unix epoch(1970年1月1日 00:00:00)来经历的30秒的个数。

第二个问题是,由于网络延时,用户输入延迟等因素,可能当服务器端接收到一次性密码时,T的数值已经改变,这样就会导致服务器计算的一次性密码值与用户输入的不同,验证失败。解决这个问题个一个方法是,服务器计算当前时间片以及前面的n个时间片内的一次性密码值,只要其中有一个与用户输入的密码相同,则验证通过。当然,n不能太大,否则会降低安全性。

事实上,这个方法还有一个另外的功能。我们知道如果客户端和服务器的时钟有偏差,会造成与上面类似的问题,也就是客户端生成的密码和服务端生成的密码不一致。但是,如果服务器通过计算前n个时间片的密码并且成功验证之后,服务器就知道了客户端的时钟偏差。因此,下一次验证时,服务器就可以直接将偏差考虑在内进行计算,而不需要进行n次计算。

以上就是Google两步验证的工作原理,推荐大家使用,这确实是保护帐户安全的利器。

参考资料

  1. TOTP: Time-based One-time Password Algorithm, RFC Draft, http://tools.ietf.org/id/draft-mraihi-totp-timebased-06.html
  2. HOTP: An HMAC-Based One-Time Password Algorithm, RFC 4226, http://tools.ietf.org/html/rfc4226
  3. Google Authenticator project, http://code.google.com/p/google-authenticator/ 

(本节转自: http://blog.seetee.me/archives/73.html 

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

目前客户端有

  • android版: Google 身份验证器
  • iOS版

用户需要开启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版的: 。上github搜索『Google Authenticator』可以找到更多语言版的Google Authenticator。

2.所以,你在自己的项目可以轻松加入对Google Authenticator的支持,在一个客户端上显示多个账户的效果可以看上面android版界面的截图。目前dropbox、lastpass、wordpress,甚至vps等第三方应用都支持Google Authenticator登陆,请自行搜索。

3.现实生活中,网银、网络游戏的实体动态口令牌其实原理也差不多,大家可以自行脑补下,谢谢。

原文发布时间为:2014-03-06

最新文章
使用 5118 挖词工具时如何提高关键词挖掘的效率?
要提高使用 5118 挖词工具进行关键词挖掘的效率,可以考虑以下几点:1.明确目标和需求:在开始挖掘之前,清晰地确定您的业务目标、受众群体以及内容方向。这有助于更有针对性地选择关键词。2.精确输入核心关键词:确保输入的核心关键词能够
莉景天气
莉景天气,一般又称莉景天气预报。 全球特殊景观、天气服务类应用程序,支持近3000多个城市的朝霞、晚霞、云海、雾凇、星空、银河等16项特殊景观的预报、信息订阅、推送以及基础天气预报服务。更完善的预报功能、更贴心的场景化服务——莉
笔趣阁免费小说大全
随时随地的拿出你的掌上小说阅读神器大全,小说全部免费,想看就看。《笔趣阁免费小说大全》是一款非常不错的手机小说阅读软件。海量的小说资源收录在软件内,各种热门小说应有尽有。这个理有你喜欢的小说类型。所有的小说全部免费畅读,让
发那科驱动器报410错误代码(维修)找我们准没错
因此它们具有较低的惯性,因此可以实现比具有永磁转子的电机(例如步进电机)更​​高的加速度和速度,转子上没有磁铁也提供了其他好处--包括能够承受更高的温度(需要更少的冷却)和比永磁电机更简单,成本更低的结构。发那科驱动器报410错误
谷歌SEO中,网站分析工具有什么用?
在当今数字化时代,搜索引擎优化(SEO)已成为企业提升在线可见性、吸引潜在客户、提高网站流量和转化率的重要手段。而我,作为一个在SEO领域摸爬滚打多年的从业者,深知网站分析工具在谷歌SEO中的核心地位。它们不仅能帮助我们深入了解网
社区论坛软件定制源码开发
社区论坛软件APP开发,社区论坛系统源码搭建,HU-899-LIAN,社区论坛系统网站开发,社区论坛APP源码开发用户组类别(1)自定义用户组这个主要用来对一些特殊用户进行分组,比如短说客户组,会将购买短说的客户归类至这个用户组,然后赋予基
花26900元的“押题班”一题没中!网络知识付费“套路”多
在网上报班学习,目前已经是许多消费者积累知识的一个重要途径,知识付费行业也随之兴起,然而在发展过程中,相关乱象也是层出不穷,从业人员资质存疑,或者是低价购课后被“套娃”收费,并且遭遇退款困难等,让享受学习的过程反而成了一件
抢滩AI三大运营商竞速加剧
  2024年,人工智能(AI)是科技圈关注度最高的领域之一。  10月12日,在“2024中国移动全球合作伙伴大会”(以下简称“全球合作伙伴大会”)上,工业和信息化部总工程师赵志国表示,我国人工智能核心产业的规模不断提升,企业数量超过
金栩三类医疗器械销售管理系统销售系统
北京金栩科技有限公司的医疗器械进销存软件系列产品中,金栩三类医疗器械销售管理系统销售系统是其中之一。该软件是一款专为三类医疗器械经营企业而设的软件,实现了对三类医疗器械的销售管理和跟踪。以下是该软件的品牌、特点、服务方式、
相关文章
推荐文章
发表评论
0评