向攻击者学习?密码保护,你需要这样的反套路!

清溪算法 2019-08-29

只要你是人类,肯定不可避免反复用过某一两个密码。实际上,大部分年龄介于 18-65 岁之间的网民都这样做过,并且越是年轻的网民,越有可能为自己的所有帐户使用同一个密码。

向攻击者学习?密码保护,你需要这样的反套路!

大家都知道这种做法不好,而且大部分网民都知道怎样创建足够强的密码:应该包含随机字母、数字和字符,至少 16 位长,并且最重要的是:必须确保唯一性。

那么为什么大家不为自己的每个帐户创建这样不仅唯一,而且足够安全的密码?原因在于,按照美国国家标准与技术协会(NIST)去年发布的新版标识管理指南的结论,对于密码“复杂性”的强调,实际上忽略了需要持续管理大量密码这一现实情况。

每个网民平均有大约 200 个在线帐户,因此实际上很难去责怪用户不保证自己大量密码的唯一性。但同时我们更没有理由去责怪那些为了遵守优秀实践而要求用户必须使用足够复杂密码,但对用户的忽视又束手无策的公司。

不幸的是,虽然 NIST 的新版标识管理指南对于密码安全机制的矫正提供了看似非常卓越的路线图,但在密码要求、安全检查或用户密码使用习惯方面,实际上并不会产生多大的影响。

是时候了,企业必须停止抵抗变化,引导自己的员工和客户养成更安全、更可管理的密码使用习惯。了解威胁的具体实施方式,这有助于我们采取简单的预防性措施斩断伸向受保护帐户的黑手。

别被人猜到了

一如往常,网络漫画网站 XKCD 通过简洁风趣的漫画描述了帐户被接管的实际情况(其实真不需要太多攻击手段) —— “这把钥匙能打开那个锁吗?”

我们可以非常合理地做出这样的假设:位于某地的某人针对某个网站运行了帐户检查工具,输入一系列已知的邮件地址和类似密码,或包含网站名称的密码。例如使用“123456”、“abcd1234”或“password”,毕竟这些都是不安全密码界的佼佼者。

密码不应与用户名相同,不应包含网站或相关服务的名称,也不应是连续字母或数字,更不应是简单的组合或普通单词。我们都知道,攻击者可以通过一些工具非常快速地检查所有此类密码,进而判断自己能否打开某个用户帐户的大门,这些工具还会试着使用密码的各种变体,以此来应对用户们在简单密码基础上发挥的“小聪明”。

为避免用户使用易于猜测的密码,企业应创建或下载常用密码列表,将用户使用的密码与这些列表进行对比。对于相符的,形式较为简单的,或包含网站 / 服务名称的密码(或者其他类似的变体,例如为披萨外卖网站的帐户使用“PapaJohn1”这样的密码),应该建议用户不要使用。更好的做法则是检查并确保用户选择的密码并不在第三方已泄露密码范围之列。如上文所述,大部分用户会在多个网站上使用相同的密码,如果一个网站的密码外泄,就会将你的公司(以及用户帐户)置于危险之中。

别被人轻松破解了

简单密码还会造成另一个问题:手头资源有限的攻击者可以借助这样的密码更快速地破解加密算法。

一些全球很受欢迎的在线服务依然在使用过时、甚至不安全的加密技术来“保护”密码,这一点着实令人感觉遗憾。这些加密算法虽然可以阻止低水平攻击者通过读取用户密码访问数据库,但在技能更娴熟的攻击者看来,这只不过是一种有趣的“拼图游戏”而已。

除了使用字典防止用户设置重复、简单,或其他易于猜测的密码,企业还需要了解自己所用哈希算法的局限,并建议用户设置更复杂的密码,例如同时包含数字和字母,甚至通过易于记忆的短句来生成更复杂的密码。

如上所述,当今攻击者所用的工具可以通过常用密码列表发起攻击,甚至可以自动尝试常用密码的各种变体。实际上,这意味着类似 MD5 这种古老(但依然常用)的哈希算法甚至可以在几秒钟内被破解,哪怕用户给密码添加了一串数字或将字母“o”用数字“0”替代,也于事无补。

帮助用户创建更长、更复杂的密码,这是一种增加暴力密码破解难度的好方法,使用诸如 bcrypt 这样的强哈希算法才能让密码更难以被暴力破解。通过将 bcrypt 这样的算法与类似短句的长密码(NIST 建议使用包含符号和空格,64 位长的密码)配合使用,才能真正有效遏制暴力破解(这种情况下的暴力破解可能需要几十年时间)。

不要直接交钥匙

保护帐户不被进行此类攻击的好的方法是确保密码没有被“已经”攻陷。攻击者可能已掌握了数十亿个密码,这些密码可能是从明网(Clearnet,“暗网”的对应面)盗取而来,甚至被编译为“组合列表”,其中包含各种用户名以及对应的密码,而这样的东西正在黑市以非常低廉的价格出售。好在白帽子和安全专家们也在收集这些密码,借此追踪已经不再安全的凭据。

NIST 在新版指南中明确提出,针对已知被攻陷凭据检查用户的密码,是一种可有效测试密码安全性的做法。更重要的是,企业通过这样的检查可以帮助客户和员工更全面地了解自己所面对的安全态势,而用户安全性的提高也有助于大幅改善整个网络的安全性。

已知被攻陷凭据列表不仅可以免费获取,甚至可以通过这样的静态列表,实现比以往单纯提出密码复杂度要求时更高程度的密码安全保护。

然而静态的列表会逐渐过时,因此 IT 团队需要定期进行更新。从长远的角度来看,具备一个持续更新的已知被盗密码数据库,这已经成为一种更好的策略。但企业也不需要用手工的方式对这样的列表进行增补,IT 团队可以放心地定期检查新密码和现有密码,而这些服务通常会包含自动化的缓解工具,对需要更新密码的员工或用户发出提醒。

这一点为何重要

很多人都会重复使用密码,因此对企业来说,上文提到的检查措施非常必要。尤其是对于员工每天都在用的应用程序,简单的或重复使用的密码最容易违背 IT 有关密码安全的要求,而企业网络内部很可能已经有至少一个帐户在使用重复的密码。

更糟的是,员工们为了符合 IT 要求采取的“小聪明”做法也成了攻击者设法潜入受保护网络内部的最便捷途径。

相关推荐