如何逃离弱密码黑洞?

全球远程办公大潮中,一些企业安全的脆弱性问题被放大,全球数据泄露事件的频率和规模以肉眼可见的速度逐年递增,如果说身份与访问管理是数据安全的“重灾区”,那么“弱密码”则无疑是“震中”。

据安全牛CSO社区的一些央企安全主管反映,密码相关的安全加固措施是疫情期间最重要的安全工作之一。

根据Verizon的《数据违规调查报告》,有81%与黑客相关的违规行为都利用了被盗密码或弱密码,只需一名员工的弱密码就可以撬开重兵把守、重金打造的企业网络安全防御体系。

事实上,虽然零信任、多因素认证是当下的企业网络安全的热点话题,但是冥顽不化的弱密码问题,依然是企业网络安全最大的软肋之一,Centrify最近的一项调查显示,受访的1000名IT决策者中,74%的入侵事件涉及特权账户访问。而今年RSAC2020的现场调查数据显示:

·接近四分之一的受访者(23%)使用相同的工作和个人账户密码,违反了行业最佳实践

·超过五分之一的受访者(21%)仍将密码存储在手机、计算机或打印文档中,同样违反了行业最佳实践

注意,以上调查是针对安全行业人士进行,普通企业员工的密码违规情况要比上面的数据严重得多!

弱密码黑洞

如今,一位普通消费者都至少使用20个以上的账户。二十个不同的账户,二十个不同的密码,延伸出一系列的安全问题和安全隐患(上图),甚至包括安全专家在内,都会犯下在不同账户中重复使用密码的低级错误。密码安全性已经成为在线账户安全的主要问题,导致数据泄露、账户接管、欺诈性金融交易、敏感数据泄漏、个人数据滥用等。

截止到今天(2020年),最大的数据泄漏主要来自配置不当的系统,包括身份验证薄弱。

总而言之,在业界的不懈努力下,密码安全性较差的现状依然未能得到解决。

问题已经足够浅显直白,但是我们有解决方案吗?

对于弱密问题,很多企业采取强制频繁更改密码并使用单点登录(SSO),以及将特权凭证存储在密码库等措施,但企业应该认识到:弱密问题并不是一种或几种技术方案(例如IAM和PAM)或者规则能够根除的,需要参考和制定一套完善的密码准则,以应对消费者、供应商和企业自身的数字身份管理挑战。

以下,安全牛针对目前远程办公的“安全痛点”,老话重提,围绕NIST的新版密码指南与大家一起就密码安全温故知新:

NIST的十三条密码准则

NIST SP 800-63是美国国家标准技术研究院(NIST)2017年发布的数字身份验证准则的新修订版(2020年3月更新),其中提供了有关密码安全性要求的准则。

尽管SP 800-63是79页的冗长文档,但本文主要关注的是第5节“身份验证器和验证者要求 ”,该章针对如何处理身份验证要求制定了许多具体准则。

简而言之,它是密码管理的一些最佳实践的整理,包括存储、使用和颁发。

那么,NIST 800-63到底在说什么呢?NIST 800-63的意义是什么?与先前发布的密码安全性准则有何不同?

如果你比较赶时间,可以花1分钟了解一下这个最新版NIST密码指南的快速列表:

1.不再需要定期重置密码

2.定义的最小密码字符数–8(用户生成)

3.密码中定义的字符数至少为64+

4.允许ASCII可打印字符,包括空格和表情符号

5.定义的最小密码字符数–6(系统生成)

6.密码找回避免使用密码提示/安全问题

7.限制密码的复杂性要求

8.鼓励2FA/MFA并避免2FA中使用SMS短信验证

9.避免暴露以下来源的密码:

  • 以前暴露的违规账号
  • 字典单词
  • 包含重复或连续字符的密码
  • 特定于上下文的词,例如服务的名称、用户 名及其派生词

10.将失败登录尝试次数限制为一定数量,例如10次

11.不要截断密码并始终将其存储在单向哈希中

12.引导用户使用指示器展示评估密码强度

13.通过盐化和单向哈希安全地存储密码,以防止密码猜测攻击

NIST 800-63有哪些重大更新?

1.尝试淘汰过时的密码实践准则(例如定期更改密码)

2.对2FA/MFA的用法给出了很好的建议

3.增加旧/不良密码的作废要求

4.强调密码字符数量/长度(最小和最大值)的重要性

5.明确密码重置的理由

6.明确定义最佳的密码盐化存储方式

NIST密码新政详解

以下,我们逐项解读NIST的密码“新政”:

不再需要定期重置密码

一些服务提供商(例如在线银行)和企业会强制用户定期(例如30-90天)修改密码。但是问题是,如果密码很强并且没有受到破坏,为什么我们必须更改密码。

另外,当我们按定义的时间间隔定期更改密码时,我们倾向于引入较弱的密码。例如,您之前的密码是“ [Pr3ttyMeLikesD!$n3y]”。这个密码看上去非常强悍,但遗憾的是,在公开的密码泄露检查工具中,这条密码的检测结果是“阳性”。

虽然已经泄露,但如此“牛C”的密码用户是舍不得一下抛弃的,因此,很常见的做法是在原密码末尾添加一个或几个数字,例如 “ [Pr3ttyMeLikesD!$n3y] 9”,这样就可以满足提供程序的密码修改要求。

错了!

如果您的原始密码已被盗用,并且可以通过有针对性的攻击与之相关联,攻击者可以轻松地“猜出”您的“新密码”。

这就是为什么NIST的密码新规中强调避免强行使用任何类型的周期密码,因为这会进一步削弱密码流程。

密码长度更加重要

我们都知道NIST新规则格外强调密码长度的重要性,但关键问题是如何设定密码长度的最大值和最小值的合理范围。

过去,密码长度受到限制是为了适应存储需求。但现在,随着散列值的存储,大小限制变得非常宽松,允许使用强而复杂的密码。

无论密码是“password”还是“ Itw@asAN!c3P@$$sword4ALL”,存储这两个密码所需的存储空间实际上没有差异,这将由服务提供商使用的哈希算法确定。根据NIST的新准则,用户创建的密码长度至少应为8个字符,最大长度应允许超过64个字符。这意味着在线服务提供商常见的20-32个字符密码长度限制需要大幅放宽。

但这引发了另一个问题:如果密码是由服务/系统创建的(例如初始密码和默认密码),密码字符数量(长度)的要求是什么?幸运的是,新规范中系统创建密码的最小值减少到6个字符。这种6个字符的密码可以在员工初始入职时设置。此后,将要求用户强制执行首次登录密码更改。

传统上,密码长度一直保持为少数字符,以适应存储需求。

与最初起草的时间范围相比,当前的存储成本要低得多。之所以认为存储是因为密码是以前以纯文本存储的,因此导致了许多数据泄露事件,包括但不限于a,b,c。

哪些字符可以作为密码字符?

答案很简单。允许所有可打印的ASCII字符集。

简而言之,请允许使用标准键盘可以创建的任何内容,甚至允许空格作为密码的一部分!

那么,[ !@ #$%&*();’,。/ <> ?:] 这样的特殊字符呢?

再次强调!创建密码时,不应限制特殊字符。

那么表情符号呢?

😍表情符号也是允许的😍

有效密码表情符号:来源https://smiley.cool

安全问题不安全,避免密码提示/安全问题

在很多场景,我们习惯于在密码恢复和识别过程中输入类似真心话大冒险的“安全问题”。例如你爸妈在哪相爱?你出生在哪?你家的狗狗跑丢时几岁?你最讨厌的高中老师的名字?你几岁开始坐飞机?你老爸情人姓什么?之类。

在NIST新规中这是严格的禁忌。

原因是这些问题/答案很容易猜到。尤其对于针对性攻击者来说,在个人隐私泄露数据极大丰富,社工攻击泛滥的今天,这些问题的答案将不难找到。

在密码管理过程中,NIST不再允许此类提示或线索。

限制密码复杂度要求

正如前文所述,新的NIST密码规范极大拓展了可用于密码的字符类型,强调密码长度的重要性,同时建议取消密码复杂度的强制要求。此外,还建议服务商取消过去并不合理的强制密码复杂度要求,例如下面这个常见的规范:

“您的密码只能包含字母数字字符。它还应包含一个字母,一个数字和一个特殊字符”

按照上面的规则,“ Password!23”是可接受的密码,但它却是最弱的密码之一。

鼓励2FA / MFA并避免使用SMS短信验证

过去几年,随着数据泄漏事件的频率和规模不断增长(下图),越来越多的用户名和密码被暴露,甚至在网络黑市中交易。

对于攻击者而言,通过泄露数据获取用户登录密码变得越来越容易。

因此,建议在传统的用户名/密码组合之外再增加一个认证层,例如双因素身份验证(2FA) 或多因素身份验证(MFA)。

但是早期基于短信的双因素认证今天越来越容易受到SIM交换和相关攻击,因此建议避免使用基于SMS短信的身份验证令牌。

替代方法是使用身份验证器。第一步是用户名/密码组合。用于身份验证的下一步令牌将通过应用程序(软/硬件)创建。

安全社区强烈建议使用2FA或MFA这种方法,因为它已被证明可以击败几乎所有针对用户的基本密码攻击。

限制失败登录尝试次数

假设有人要登录您的账户。

第一步和最简单的步骤是猜测您的用户名和密码组合。如果用户名和密码很容易猜到,则该账户很容易受到破坏。

为避免这种情况,系统应强制执行失败登录次数限制。例如,在第五次失败登录尝试之后,系统可以逐级增加登录时间间隔,随着每一次登录失败,延迟可能会成倍增加,从而使攻击者难以得手。

考虑到所有这些情况,NIST建议定义一个特定的登录次数上限,从根本上杜绝非授权登录尝试,有助于确保此类账户的安全。

不要截断密码

早些年程序员通常将较大的密码截断为最多8-20个字符,以最大程度地减少其存储需求。

但现在,密码存储内容仅限于散列,同时存储设备的成本也已大大降低。

而且,密码的哈希值将根据字符而变化,并且包括截断在内的每个更改都会对所述密码的强度产生重大影响。

考虑到这些,NIST建议系统不应截断密码,而应仅存储其单向哈希。这有助于提高密码强度。

用密码强度指示器指导用户

任何新密码的强度都应在密码强度指示器的帮助下直观展示。由于当今大多数应用程序都可以在线访问,因此强烈建议显示可视化密码强度指示器。(上图)该可视密码强度指示器可用于指导用户设置更强的密码。

2020年NIST密码要求的关键要素

最后,我们将NIST密码新规范的关键要素总结如下:

需要注意的是,虽然NIST800-63的实施准则非常浅显易懂,但目前大多数在线服务提供商的合规性都很差。

参考文献

1.NIST特殊出版物800-63:

https://doi.org/10.6028/NIST.SP.800-63-3

2.https://en.wikipedia.org/wiki/Password_policy#cite_note-sp800-63B-13

上一篇:传媒业2020年亟需重点应对三种网络安全威胁

下一篇:万物互联,安全为基——网络安全公益短片