
我遵守了多年的密码规则,后来才知道它的设计者自己后悔了
Diebug
公司要求你每季度改一次密码,而你每次只能把 Password!7 改成 Password!8。所有人都假装这是件严肃的安全措施。
如果你经历过强制密码重置,你大概率理解这句话——密码规则似乎是由一个对人类记忆力怀有敌意的人设计的:加一个大写字母,加一个数字,加一个特殊符号,把它们乱七八糟地拼在一起。
我们大多数人遵守这些规则已经很多年了,从来没想过它们从何而来,也没问过:这套规则真的有效吗?
答案是:很大程度上,没有。而且设计这套规则的人,后来公开承认自己后悔了。
密码规则的起源:一份八页的附录
要理解今天的密码策略,得先回到2003年。
当时,美国国家标准与技术研究院(NIST)正在起草一份联邦身份认证标准,名叫 Special Publication 800-63。文档的主笔人是 Bill Burr、Donna Dodson 和 W. Timothy Polk。其中 Bill Burr 负责起草的附录A,占了整整八页,专门讨论一个问题:
用户创建的密码,到底有多难猜?
当时的情况是,NIST 缺乏真实的用户行为数据。他们只能根据 Claude Shannon 对英语文本可预测性的研究,以及当时能找到的其他有限资料,来建立一个关于密码熵值的理论模型。
熵值,简单说就是不确定性。一个密码的熵值越高,攻击者暴力破解它所需的时间就越长。NIST 当时的模型认为:如果要求密码必须包含大写字母、小写字母、数字和特殊符号,那么密码的熵值会显著提升。
这个结论听起来很有道理,但问题在于——模型是建立在纸上,而用户是活生生的人。

人类总是找到绕过规则的最简单路径
Burr 的附录其实已经预见到了这个问题。原文写得相当明确:
用户被迫添加大写字母和符号时,会以最可预测的方式来处理。大写字母会放在开头,标点符号会放在末尾,
$替换s之类的替换会反复出现。而且密码设计得越”随机”,用户就越难记住,最终会写在某个地方。
换句话说,NIST 2004年的文档就已经警告过:强制复杂度规则只会让用户用更规律的方式应付规则,而不是真正提升安全性。
但现实是,这份附录给了组织一个合理的数学依据,让它们把复杂度规则写进了强制政策。于是,企业、大学、网站、IT部门纷纷效仿,密码创建变成了一场大多数人至今仍在经历的障碍赛。
password → Password1!
iloveyou → Iloveyou1@
攻击者很快发现了这个规律。密码破解工具不需要暴力尝试所有组合,只需要尝试这些常见模式,就能在极短的时间内突破大量账户。

90天密码过期:一个被广泛误读的规则
一个更常见的例子是每90天必须更换密码。很多人认为这是NIST明文规定的,但实际上,2004年的原始附录并没有强制要求90天过期。
它只是在示例中讨论了密码寿命的概念,而 Bill Burr 后来的建议逐渐与定期换密码绑定在了一起。
一旦过期政策普及,用户又会做一件完全符合预期的事:在旧密码的基础上做最小改动。
Pa55word!1 → Pa55word!2
攻击者如果拿到了你的旧密码,这种变化几乎没有任何阻挡作用。后来的研究(包括2017年发表在 arXiv 上的论文)也证实了这一点:用户在面对强制密码重置时,改动的模式高度可预测,攻击者完全可以利用这些规律大幅缩减破解时间。
这也解释了为什么安全社区现在普遍认为:定期强制换密码是一项弊大于利的政策。

设计者的忏悔
2017年8月,Bill Burr 已经退休。他接受《华尔街日报》采访时说了一段非常直白的话:
我大部分做过的事,现在都后悔了。
具体来说,他后悔的是:密码复杂度要求给用户带来的负担,远超过它实际提供的安全收益。
当然,事情没那么简单。NIST 2004年的文档本身就充满了保留条款,熵值估算被明确标注为粗略估计,文档也预测了用户可能采取的绕过手段。真正的问题不在于规则本身有误,而在于规则被当成了刚性政策,而不是建议。
到了2017年,研究者和执法机构已经积累了海量的泄露密码数据。人们终于可以看到:在真实场景中,用户究竟是如何创建、重用和修改密码的。这正是 Burr 的原始附录在2004年明确承认自己缺乏的东西——关于用户行为的真实数据。

NIST 2017年重写:规则彻底翻篇
2017年,NIST 发布了 Special Publication 800-63B,密码建议来了一个180度大转弯。
取消强制复杂度规则。取消定期密码过期(除非有证据表明密码已泄露)。新增对常见密码的强制拦截,如123456和password123。建议将新密码与已知泄露密码库进行比对。
这条思路的核心转变是:不再强迫用户在创建密码时玩字符类别寻宝游戏,而是把重点放在密码是否曾经泄露以及长度是否足够上。
2025年,NIST 又发布了 SP 800-63B-4,进一步确认了这些方向。当前指导的核心数字是:密码最低长度15位,最大支持长度64位,推荐使用由多个随机单词组成的长 passphrase,使用密码管理器生成唯一且随机的密码。
这意味着:密码越长,安全增益越大。而强迫用户每90天改一次密码、每改一次就加一个数字,实际上是给攻击者提供了更多线索。

老规则为什么还在?因为改起来很慢
尽管NIST已经更新了建议,但现实世界并没有同步跟上。
2023年的一项研究分析了超过2万个网站,发现仍有15%的网站在执行字符复杂度要求——而这些要求,NIST在2017年就已经明确不推荐了。
这很好理解。密码策略的调整涉及企业IT部门、合规要求、审计标准,甚至法律合同。很多组织的密码政策是写在内部安全手册里的,手册的修订周期远长于技术标准的更新周期。
更麻烦的是,很多用户已经被训练成了这个模样:看到密码框里弹出”必须包含大写字母”的要求,会觉得这才是正规的安全措施,反而对只要求长度的系统感到不安。
这是一种认知惯性。改变它,需要技术引导和用户教育同步推进。
你现在应该怎么做
如果你还在被强制每90天改一次密码,这不是你的问题,是组织的策略滞后。你可以做以下几件事。
检查你的密码是否已泄露,使用 Have I Been Pwned 或类似工具查询。如果已出现在泄露库中,立即更换。
优先增加密码长度。比起复杂字符,一个由4到5个随机单词组成的长 passphrase,如 correct-horse-battery-staple,更难破解,也更容易记忆。
使用密码管理器,让工具生成并保存随机密码,不要重复使用同一个密码。这也是目前安全社区最推荐的实践。
如果你是IT管理员,可以参考 NIST SP 800-63B-4,推动内部密码政策向长度优先、取消定期更换的方向调整。
最后,启用多因素认证。密码只是安全链的一环,MFA 能大幅降低密码泄露后的风险。
总结
密码规则的历史,是一段理论模型脱离用户实际行为的教训。强制复杂度规则让用户产生了高度可预测的密码模式,反而降低了安全性。密码越长越好,禁用常见密码,取消定期强制更换,配合密码管理器使用。
安全不是靠让流程更繁琐来实现的。真正有效的安全,是让攻击者无从下手,同时让合规用户不受打扰。这条路,NIST 走了20年才走完,而我们大多数人,才刚刚开始适应。
原文来源:MakeUseOf