密码的安全程度,往往取决于可产生的密码组合是否多样化,从而延长密码破解所需的时间。但随着电脑的运算能力越来越高,这种微妙的平衡即将被打破。有技术人员就开发了一台配备25片GPU的Linux群集,可以在6小时内破解Windows密码。
这台Linux群集由Stricture Consulting Group的首席执行长Jeremi M Gosney,在刚于挪威举行的Passwords^12 conference上发布。这个群集由五台伺服器组成,採用了以Linux为基础开发的群工具OpenCL,可以利用25片AMD Radeon显示卡,成功破解Windows以NTLM加密算法产生的密码。测试中使用一个针对GPU运算优化的密码破解软体ocl-Hashcat Plus,每秒钟可以测试多达3500亿个密码组合。除了「暴力式破解」外,还可展开其他形式的攻击,例如利用内置字典作为密码组合的「字典式攻击」。
NTLM加密算法是自Windows Server 2003起,微软在每一个Windows 版本中使用的密码算法,支援由大写、小写字母、数字和符号组成的八个字密码,意味着在最新版本的Windows 7/8同样有被破解的危险。这次破解NTLM加密算法密码共用了约6小时,但如果是Windows Server 2003以前微软使用的LM算法密码就更加容易,这次只用了6分钟就已经破解了。原则上NTLM生成的Hash值不能用数学方法还原,所以唯一的破解方法,便是将各种密码组合生成NTLM的Hash值,再与系统原来的NTLM Hash值对比。前提是黑客利用系统漏洞预自取得Hash值的密码列表。顺带一提这种方法并不适用于网路攻击,因为大部分网站都会限制密码输入次数。
过去因电脑主机板、BIOS、机箱大小等限制,一台电脑上最多只能使用8张显示卡。OpenCL的突破之处在于把安装在不同伺服器上的显示卡组合成一个群集。类似的方法已经出现在云端系统上,笔者就曾经遇到有人利用大量Amazon Web Services的Instance尝试破解Gmail的密码。不管如何,尽量使用同时有大小写英文字、数字和符号的密码会比较安全。