[关闭]
@liuhui0803 2019-08-22T09:10:56.000000Z 字数 2668 阅读 1107

向攻击者学习,引导用户保护自己的密码

隐私 Web安全


提升密码安全措施,斩断盗取密码的黑手,你需要这样做。

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

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

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

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

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

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

别被人猜到了

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

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

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

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

别被人轻松破解了

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

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

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

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

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

不要直接交钥匙

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

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

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

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

这一点为何重要

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

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

针对企业邮件系统的帐户目录使用NIST密码安全检查机制有助于确保员工没有重复使用已被攻陷的密码,这样可以更好地保护业务数据,同时也可以确保密码不会太简单,太易于猜测,或直接使用了已攻陷密码的其他变体。

将这样的措施与强哈希算法配合,这样一种简单、自动的机制不仅足以防止帐户被接管,还有助于帮助用户养成更好的密码使用习惯,让这样的密码在面对技能不那么娴熟的攻击者时发挥出更大的保护作用。

本文最初发布于Threat Post,作者Chris LaConte,经原作者授权由InfoQ中文站翻译并分享。点击查看英文原文:How to Guide Users to Better Passwords by Learning from Attackers

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