RSS订阅信息安全技术跟踪与研究:技术、平台、会议、论文、产业
你现在的位置:首页 / 学术研究 / 正文

浅析Google账号的强认证方式:two-step verification

0 学术研究 | 2015年9月23日
转载申明:本站原创,欢迎转载。但转载时请保留原文地址。
原文地址:http://www.vonwei.com/post/AuthenticationatScale.html

Google感觉简单的密码和不记名令牌(如cookies)不足以保证用户的安全,早已经推荐使用基于OTP和公钥技术的两步验证方法(two-step verification),来增强对用户和设备的身份认证。经典的认证框架是:“something you know”“something you have”结合使用。这篇论文描述Google是如何实现这个框架,以及大规模投入使用后学习到的经验与方向。

经典认证框架的一个简单例子:ATM取钱,你输入的6位数字密码相当于“something you know”;你插入的银行卡相当于“something you have”,攻击者想要取走你的钱,得要同时偷到你的密码和银行卡。

 

账号分类

不是所有的账号都需要强认证方式,Google分了如下五类

1一次性账号throw-away accounts):如为了测试目的注册的一个账号,以后不会再使用,这类账号基本不用考虑;

2日常账号routine accounts):如订阅在线新闻的账号,无关重大金融或者信誉损失风险,强认证不一定需要;

3发言人账号spokesperson accounts):如拥有大批粉丝的博客账号,存储了信用卡等信息的在线商店账号等,被攻破后有一定的不良后果和影响,需要强认证;

4敏感账号sensitive accounts):如个人主Email账号,或者在线银行的账号,丢失后风险很大,需要强认证;

5高价值的交易账号very high-value transaction accounts): 拥有不可撤销属性的一些专业系统,如跨境货币流动与武器释放,这种账号需要更强的保护,需要专门设计,也不在考虑范围之内。

因此,Google在这里研究的强认证机制主要针对发言人账号和敏感账号这两类。

 

安全威胁

安全性和实用性实际上是一个矛盾的对立体,密码设置简单易记却安全性低,密码设置复杂很多用户难以使用,为了设计好的认证机制,往往需要针对特定的安全威胁展开思考,研究可能的实现方法,Google总结的针对密码的一些安全威胁如下

1钓鱼攻击,登录页面可能是攻击者伪造的一个钓鱼网页,可以获取用户的账号和密码信息,即便在设备和浏览器中设置良好的密码管理器会有一定的预防作用,但碰到更聪明的攻击者,钓鱼依然可以进行;

2密码重用攻击,很常见的一种攻击方式,在薄弱的地方获得你的密码后,可以以后或者在其它网站使用,很多用户在多个网站一般使用相同的密码,OTP最早设计主要是防止这种攻击;

3离线暴力破解,用户选择的很多密码熵值都不高,很容易暴力破解;

4错误使用密码,如在一个错误的文本框中输入密码,或者输入的密码并不是期望的那个,这样都可能导致密码被记录,然后被泄露;

5容易猜测的安全问题和答案,安全问题和答案一般主要用来找回丢失的密码,但一般这种问题和答案可能很低级,容易成为一种泄露密码的手段;

6恶意软件感染,如键盘记录钩子以及其它恶意软件,特别是zero day攻击;

7密码丢失社会工程学等。

         从技术角度而言,并不是所有的攻击都能找到解决方案,Google的一个目标是,从攻击中恢复过来后,真正用户能重新掌握其对账号的所有权和控制权,不会失去任何长久(long-term)的凭证信息。

 

Google的两步验证解决方案

基于OTP和公钥

                                               

         除了输入传统的账号和密码之外,用户还需要输入一个动态生成的OTP码,该码由预先注册的手机产生,推荐通过SMS短信或者语音的形式发送给用户手机(当然手机上装一个离线的OTP应用也可以),用户收到后输入OTP码即可。登录成功后,用户可以选择该客户端设备和浏览器是可信的(勾选),这样本地会保存一个长期的cookie,以后会自动登录,不用重新输入相关账号信息和OTP了。因此,两步认证过程实际上主要用来对一个客户端设备进行授权认证。这里,传统账号和密码相当于“something you know”,而手机及其生成的OTP相当于“something you have”,即满足经典的认证框架。

         从安全角度而言,该两步验证方案对密码重用攻击、以及密码丢失比较有用,但是对于更加聪明的钓鱼攻击以及其它相关攻击,则无法防止。例如,某个人可能同时偷到你的密码和手机;攻击者通过社会工程学方式获得你的SMS短信;攻击者使用恶意软件获取你手机上的OTP等等。

         上面的方式用户需要在一个新客户端主机设备中手动输入OTP码来完成验证,这种输入使得钓鱼很难防范。为了进一步提高安全性,应对钓鱼等攻击行为,Google也研究了类似智能卡的USB令牌,该令牌通过USB接口与客户主机设备通信,该USB令牌使用公钥密码算法,拥有隔离的运行环境,安全保存私钥并进行签名操作,这时,该USB令牌代替手机成为“something you have”,而且USB令牌还嵌入了隐私增强的功能,即不同网站无法关联同一个用户的交易行为。这样虽然安全性提高了,但是需要携带一个额外的USB设备,也是用户不喜欢的一种方式(having to carry an additional token is likely to be a barrier to adoption for many consumers)。因此,更加吸引人的方案是将这种认证方式整合到用户随身携带的设备上,如手机或者珠宝戒指等,这样最大的技术挑战不再是密码学,而是缺少一种标准接口来在设备之间建立一种交互连接方式,当然蓝牙和NFC这些通信功能是正在考虑的方式。如果整合在手机上,还要考虑手机的安全性,如使用TrustZone等最新安全隔离技术;整合在珠宝戒指上是一个不错的思路,相当于智能卡安全技术+珠宝戒指,双卖点,市场效果应该不错,用户肯定会小心保护其珠宝戒指,相当于间接保护了其密码。

 

认证外的其它考虑

         上述认证方式授权一个客户端主机设备后,本地一般存储一个长期的Cookie,这种Cookie也是不安全的,Google考虑用TLS会话和客户端证书来代替Cookie,但是对证书的使用和管理实际上是比较麻烦的,Google建议采用Usenix Security 2012上一篇论文“Origin-Bound Certificates: A Fresh Approach to Strong Client Authentication for the Web”提出的一种机制来解决这个问题,将CookiesTLS会话绑定(自动进行,密码学上的绑定操作),这种Cookies一般称为是不记名令牌(bearer tokens)的一种,只能在这个客户端的TLS连接中使用。实际上,Chrome浏览器版本24中就嵌入了这种特征,称为ChannelID,不过用户基本感觉不到其存在。

 

参考

Google安全团队在IEEE Security & Privacy Magazine2013上发表了一篇论文“Authentication at Scale”,作者是Google负责安全的副总裁Eric Grosse和工程师Mayank Upadhyay



  • ------------------分隔线----------------

  • 如果感兴趣,欢迎关注本站微信号,跟踪最新博文信息,手机微信扫一扫下面的二维码,即可关注!
  • 微月信公众号
  • 推荐您阅读更多有关于“ 强认证   ”的文章

    请填写你的在线分享代码
    上一篇:[转]接入与身份认证技术概述下一篇:[转]我们可能很快就会穿上智能健身服

    猜你喜欢

    评论列表:

    发表评论

    必填

    选填

    选填

    必填,不填不让过哦,嘻嘻。

    记住我,下次回复时不用重新输入个人信息

    本站介绍
    最近发表
    本年最热文章
    本月最热文章
    网站分类
    文章归档