我们都痛恨密码,然而不幸的是在当下及可以看见的未来里,账户登录等在线认证操作的主要方法还是需要使用密码的。密码认证有时确实比较烦人,尤其是一些网站为了密码安全性,要求我们在设置密码时必须包含大小写字母、数字或特殊字符。
微软发布的最新研究报告称:增强密码复杂性基本是没有任何意义的。在本文中,我将简要分析一下微软的理论,并且与大家探讨下两个新的密码安全解决方案。
什么是暴力破解?
暴力破解攻击是指攻击者通过系统地组合所有可能性(例如登录时用到的账户名、密码),尝试所有的可能性破解用户的账户名、密码等敏感信息。攻击者会经常使用自动化脚本组合出正确的用户名和密码。更多信息请点我
增强密码复杂性基本没用
在密码能强大到无视社工字典的攻击后,采取的那种攻击称为暴力破解。这类暴力破解又分两种:在线破解和离线破解。
在线破解时,黑客通常使用与用户正常操作时相同的应用接口(比如登录时用到的web接口),因而可能被某些安全防控规则限制。然而由于离线破解的必要条件是黑客已经获取了密码文件,因而黑客们进行密码暴力猜解时通常是毫无忌惮、无所限制的。
微软安全研究人员发现,通过在线破解所尝试直至成功的次数最高约为100万次,而离线破解则达到了10亿次之多。
因此一个不太复杂的百万次猜解级别的密码“tincan24”与一个10亿次猜解级别的密码“7Qr&2M”相比,他们对于在线破解来说都是强密码,而通过离线破解则都不堪一击。同时后者还更加难以记住。
这就告诉我们,在离线暴力破解攻击面前,增强密码复杂性基本没用。
当密码文件泄露后
为了对抗密码文件泄露后的离线破解攻击,我们需要做一些防护措施。
在微软的报告里提到一个通用解决方案:
将每个密码进行加密,然后将密钥储存在硬件安全模块(HSM)之中。因为HSM并没有提供密钥的外部访问接口,所以想要解密密文,只能通过应用程序走正常流程,那样即使拿到了密文也没有太大用处。
两个创新性防护方案
对于防密码文件泄露,国外安全研究者提出两个创新性的解决方案:
1、在Derbycon 2014大会上,Benjamin Donnelly和Tim Tomes提出了他们的“球链”(BAC)解决方案。BAC提供了一种方法,可以人工填充密码文件从而增加文件大小。当然,密码数据会安全地存放在文件里不会丢失,这样一来密码的猜解难度增大了许多。打个比方,黑客想要在线猜解一个2TB大小的密码文件,至少得花费1个月的时间。这么长的时间,再加上如此大的数据发送量,黑客的攻击有非常大的可能性会暴露。
2、以色列某新兴公司Dyadic,向公众展示了它的分布式安全模块(DSM)。DSM运用了最先进的分布式计算(MPC)加密技术,通过把每组密码进行分割后,分布式存储在多个服务器上。黑客想要破解密码,需要遍历多个服务器。由于各服务器有着不同的访问凭证,甚至操作系统也可能不一样,这会大大增加黑客的破解难度。
把密码保护的重任压在用户身上是不科学的,作为安全研究人员,我们显然不能一味地要求用户增加密码复杂度。而诸如使用对称/非对称算法存储密码、加盐(salt)、加密机的使用似乎都是老生常谈,技术也并不新鲜。
有没有一些新的技术或方式可以提高密码及密码存储安全性?上文中国外的安全研究者抛出了两种方法,国内的同志们的呢?欢迎在本文评论中讨论和交流。