[关闭]
@ensis 2017-01-10T15:43:25.000000Z 字数 2140 阅读 1523

密码不对居然登陆成功,还能在这个网站上放心玩耍么?

雷锋网投稿


某天小明正在开心地浏览他最爱的网站,突然间一个一言不合网站竟丢了个登陆框出来。小明一边内心极度不情愿,一边无比熟练地输入密码敲下回车,然而一低头却发现键盘上的大写锁定开着。正当内心抱怨又要重敲一遍的时候,小明吃惊地发现,自己居然登陆成功了。

在反复打开、关闭大写锁定重复登陆了几次,并确定大写锁定键没有坏后,小明发现两个密码都是可以登陆的。这太奇怪了,小明不禁要问,错误的密码都可以登陆,那别人用其他密码也能登陆我的账户吗?我还能在这个网站上放心地玩耍么?

其实,网站只是启用了打字错误纠正(typo correction)功能,除了大写锁定造成的大小写反转(Password -> pASSWORD)外,还可以处理首字母大小写错误(Password -> password)和尾部多余字符(Password -> Password`)问题, 这种机制极大地增加了合法用户登陆的成功率,网站的可用性(usability)大有改善。

然而,大部分的现实应用都存在安全性与可用性之间的权衡,两者此消彼长。因此,在可用性提高的同时,随之而来的安全风险有哪些,我们的账号被陌生人登入的可能性有多大,这些问题都值得关注。

来自康奈尔大学的研究人员在发表于2016年学术界顶级安全研究会议S&P上的“pASSWORD tYPOS and How to Correct Them Securely”一文中,对这些问题给予了解答。
具体来说,这篇文章主要回答了下面三个问题:
1. 在敲入密码时,什么样的typo最常出现,根据帕累托法则(也叫二八定律),自动纠正最常出现的typo类型即可对可用性有很大影响;
2. typo correction对可用性的影响究竟如何;
3. typo correction对于安全性的影响如何;

为回答第一个问题,研究人员在Amazon Mechanical Turk上发起了一个密码转录实验。这里额外介绍下Amazon Mechanical Turk,它是一个线上“劳动力”市场,网站自己的介绍是人工的人工智能(Artificial Artificial Intelligence),任何人都可以在上面发布人力智能任务(HIT, Human Intelligence Tasks,比如识别并录入一张超市小票中所有的条目名称和价格)并提供报价,其他人则可以在其上完成这些任务并获得相应报酬。这个密码转录实验就是请实验者敲入图片中的密码,最后有4300人参与,输入了10w多密码。统计结果发现,排名前三的typo分别是大写锁定(11%)、首字母翻转(4.5%)和在末尾添加字符“.”(4.6%),共占到了所有typo的20%。因此,文章接下来选择这三种typo类型加入到typo correction机制进行研究。

关于引入错误纠正机制对实际可用性的影响,研究人员通过发布一个特殊版本的Dropbox版本,记录用户输入的密码并观察是否登录成功,发现有3%的用户是由于上面提到的三种typo导致登陆失败。而在输入密码错误的用户中,如果三种typo可以自动纠正,则会有20%的用户可以节省至少1分钟的时间。可以看出引入错误容忍机制,对于可用性的提高是有显著影响的。

最后,回到typo容忍机制对于安全性的影响。对于基于密码的认证系统来说,切实的威胁主要来自两个方面。第一是服务器被黑,攻击者可以拿到存在服务器上的认证信息,这些信息通常是真实密码经加盐慢哈希后的结果(比如对应于PasswoRd这个密码,服务器上可能存储的就是将其拼接一个16字节随机数据后进行10000次MD5后的结果),而不会存储变换后密码对应的哈希结果。在这种情况下,是否引入typo容忍机制对于攻击者来说其实并无差别,因此对安全性也并无影响。

第二种威胁是远程猜测,攻击者可以不断尝试不同的密码直到登陆成功为止,不过实际中网站都会设定一个安全次数,在攻击者尝试错误密码一定次数(q)后账户就会被锁定。但在这种条件下,引入错误容忍机制的确会给攻击者带来优势。原本攻击者发起1次登陆请求只能验证1个密码是否正确,而错误容忍机制的存在使得攻击者可以一次排除4个不正确的密码,那么攻击者的成功率是否就因此而增加了300%呢?

其实不然,因为用户选择的密码并不是均匀分布的,用户对密码选择的偏向性导致某些字符串是正确密码的概率远大于其他字符串。因此,为了弄清对安全性的实际影响究竟如何,研究人员又做了模拟实验,实验中假定攻击者知道密码的分布情况,并且采取优先选择最可能密码的策略。结果表明,攻击者分别进行10次尝试,登入某个随机选择的用户账户的成功率在启用了错误容忍机制后从0.79%增加到了0.96%。而在进一步限制容忍策略后(比如若变换后的密码出现的概率较高,则不进行此种变换),成功率更是只从0.79%增加到0.81%,相较于可用性方面带来的提升,这可以忽略不计。

因此,在实际中,实现一个不影响安全性的容忍typo的密码检查方案是可行的。目前,作者仍在继续研究其他可能的typo correction方案,以安全地更正其他类型的typo。所以如果有一天我们真的遇到像小明那样的情况,不必担心,只管尽情享受这个变动带来的便捷吧~

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注