微软:大部分密码复杂性努力都是徒劳的

11.05.2015  12:32

在当前以及可预见的未来,密码是主要的在线身份验证方法。密码最讨厌的特性之一就是对密码最小长度、字母大小写、数字及特殊字符的复杂性要求。然而,微软研究院的一份最新研究报告显示,大部分的复杂性努力都是徒劳的。在本文中,我们将解释一下微软的研究成果,然后再看看两个最新提出的解决方案是如何达到更好的密码安全的。

密码需要足够的强度才能够抵抗尝试性攻击,即通常所说的“暴力破解”。暴力破解有两种模式:在线模式,攻击者必须使用和用户应用程序相同的登录入口;与在线模式相对的是离线模式,攻击者需要首先窃取密码文件,但能够进行不受约束的破解尝试,并且没有应用程序和网络的破解速度限制(即单位时间内允许口令输入次数的限制)。

微软研究人员发现,“应对在线攻击和离线攻击所付出的努力有着巨大的差异。在线模式下,一个可以承受100万次猜解的密码,与离线模式下能够承受100万亿次猜解的密码,其安全性是一样的。”因此,一个可以承受100万次的破解并不复杂的密码,比如“tincan24”,和一个可以承受100万亿次破解的强密码“7Qr&2M”,其实区别不大。它们都足以应对在线破解,而在离线模式下,则可能双双被破解。但后者,则要难记得多。

此外,通过分解需要离线破解保护的用例,研究人员发现,“当密码文件泄漏并未被察觉,而且密码进行过适当的SALT加密和HASH加密的情况下,离线破解才会构成威胁。但如果发现了泄漏,只需要重设系统密码,就可以将离线破解拒之门外。”

因此,将防止密码破解的层层重担放在用户身上,让用户解决应用程序的问题,是非常低效的,也是不道德的。只有通过在应用程序端解决密码文件泄漏问题,才可以解除离线破解风险,释放对用户密码复杂性的要求。

为了防止密码文件对外泄漏,需要将密码限定在应用程序环境之内。微软报告中提到,最常见的解决方案是对每个密码进行加密,并将密钥存储在硬件安全模块(HSM)中。因为硬件安全模块不为存储在里面的加密密钥提供入口,密码的解密只能在应用程序环境内进行。

最近提出的其他两个关于此问题的创新解决方案:

1、在2014年的Derbycon安全大会上,本杰明·唐纳利和蒂姆·托姆斯展示了他们的“锁链”构架。“锁链”提供了一种方法,通过它可以人为地增大密码文件大小并将密码数据安全地进行传播,使密码泄露不可能实现。例如,在常规网络条件下,一个2TB的密码文件,需要攻击者进行至少一个月的发送。除了消耗的时间长,大量数据的对外发送也为安全竖起了一道警戒线。

2、在会上,以色列的一定初创公司Dyadic也展示了他们的分布式安全模块。通过使用最先进的多方计算加密技术(MPC),DSM在多台服务器之间将每个密码密钥进行分割。攻击者要破解密码,需要攻破所有涉及到的服务器的安全机制。因为服务器可以有不同的访问凭证,乃至不同的操作系统,这就使得攻击者的任务更加艰巨。

既然“除非尝试过其他所有的认证机制,否则密码就是最糟糕的认证方式”,也了解了密码的优劣是与系统的安全性密切相关的。因此,要对付离线破解,应该通过任何前面提到的方法,使用应用程序进行解决,而不是通过“密码复杂性”将其处理成用户的额外负担。