我遵循了多年的密码建议,后来发现制定这些规则的人自己后悔了

你可能一直遵循着一套”有问题”的密码规则

你是否曾经被逼着把密码从 Password!7 改成 Password!8,然后大家都假装这是一个有效的安全改进?

如果是这样,你并不孤单。事实上,你可能一直遵循着一套实际上适得其反的密码规则。

密码正统主义的起源

Bill Burr和NIST 800-63

大多数密码规则的根源可以追溯到2000年代初NIST(美国国家标准与技术研究院)开始开发的一份指南。Bill Burr,当时在NIST担任经理,帮助制定了一份附录,这份附录最终影响了全球的密码政策。

关键时间线:

  • 2003年:Burr开始撰写指南
  • 2004年6月:NIST正式发布Special Publication 800-63
  • 文件总页数:87页,其中附录D专门讨论密码指南(8页)

原始建议的内容

2004年的NIST指南建议:

  • 密码长度至少8个字符
  • 必须包含大写字母
  • 必须包含数字
  • 必须包含特殊字符
  • 密码必须定期更换(每90天)
  • 密码不能包含用户名
  • 密码不能是常见的密码

这些建议听起来合理,对吧?但它们基于的假设现在已经过时了。

为什么这些规则出了问题?

Burr自己的后悔声明

多年后,Bill Burr承认这些建议并没有像预期那样发挥作用。他在一次演讲中坦承:

“我对密码轮换的建议后悔了。我们没有数据支持这种做法,而且我们有证据表明它实际上会使密码更弱。”

人类行为的现实

NIST的原始文档其实已经注意到了一些会导致规则失效的人类行为模式,但这些洞察没有被充分重视:

观察到的问题:

  1. 用户倾向于在密码末尾添加数字或特殊字符
  2. 定期更换密码时,用户只是简单地在旧密码上加1
  3. 复杂的规则导致用户在便签上写密码
  4. 多重复杂度要求导致用户创建更易猜测的模式

实际结果:

  • Password1 → Password2 → Password3…
  • Summer2023! → Summer2024! → Summer2025!
  • 密码变得可预测而不是更安全

现代密码安全研究的发现

密码长度比复杂度更重要

现代研究一致表明,密码长度是安全性的主要决定因素,而不是复杂度。

计算安全性:

  • 8位纯小写字母密码:约208亿种组合
  • 12位纯小写字母密码:约8.9万亿种组合
  • 8位混合复杂密码:约3.5万亿种组合

关键洞察:
一个12位的纯小写字母密码比一个8位的混合复杂密码更安全,而且更容易记忆。

密码轮换的害处

定期强制更换密码已被证明有害:

  • 用户创建更容易猜测的变体
  • 用户在多个系统上使用相同的基础密码
  • 增加支持成本(密码重置请求)
  • 没有显著的安全收益

常见密码的巨大问题

根据Have I Been Pwned等数据库的数据:

  • 前10个最常见密码被使用超过1000万次
  • 前100个最常见密码被使用超过5000万次
  • 定期更换密码的用户仍然倾向于使用常见模式

NIST的新指南(2017年及以后)

认识到这些问题后,NIST在2017年发布了SP 800-63B,大幅简化了密码建议:

新的核心建议

应该做的:

  1. 允许长密码(至少8位,推荐12位以上)
  2. 允许所有字符,包括空格
  3. 检查密码是否出现在已知泄露的密码列表中
  4. 允许用户复制粘贴密码
  5. 提供密码强度指示器

不应该做的:

  1. 强制复杂度要求(大写、数字、特殊字符)
  2. 强制定期更换密码
  3. 禁止曾经使用过的密码(除非在黑名单中)
  4. 要求特殊的字符规则
  5. 限制密码长度

为什么这些改变很重要?

新的指南基于实际数据和用户行为研究,而不是理论假设。它们承认:

  • 用户是密码安全系统中最薄弱的环节
  • 可用性比理论安全性更重要
  • 简单但长的密码比复杂但短的密码更安全

practical_password_security(实用密码安全指南)

基于最新的研究和NIST的指南,以下是你应该采取的实际行动:

个人密码管理

创建强密码:

  1. 使用至少12-16个字符
  2. 使用 passphrase(短语密码):Correct-Horse-Battery-Staple
  3. 避免个人信息(生日、名字、宠物名)
  4. 不要使用常见单词的简单变体

密码管理器:

  1. 使用密码管理器(如Bitwarden、1Password、KeePass)
  2. 为每个账户生成唯一的随机密码
  3. 只需记住一个主密码
  4. 定期备份密码库

避免的错误:

  1. 不要在多个网站使用相同密码
  2. 不要在生产环境和个人账户之间共享密码
  3. 不要在便签或明文文件中存储密码
  4. 不要通过电子邮件发送密码

企业安全策略

密码策略建议:

  1. 最小长度8位,推荐12位以上
  2. 检查新密码是否在泄露列表中
  3. 不强制定期更换密码
  4. 提供密码强度反馈
  5. 支持多因素认证

额外安全措施:

  1. 实施多因素认证(MFA)
  2. 监控异常登录活动
  3. 教育员工密码安全知识
  4. 定期审计密码策略效果

多因素认证:超越密码

即使有了好的密码策略,单靠密码仍然不够安全。多因素认证提供了额外的保护层:

MFA的类型

你知道什么:

  • 密码、PIN码
  • 安全问题答案

你拥有什么:

  • 手机(短信验证码、认证器应用)
  • 硬件密钥(YubiKey)
  • 智能卡

你是什么:

  • 指纹、面部识别
  • 声音识别
  • 虹膜扫描

推荐的MFA组合

最佳实践:

  1. 密码 + 认证器应用(如Authy、Google Authenticator)
  2. 密码 + 硬件密钥(如YubiKey)
  3. 密码 + 生物识别

避免的做法:

  1. 仅使用短信验证码(可以被SIM卡切换攻击)
  2. 安全问题作为第二因素(答案往往是公开信息)
  3. 仅依赖密码(单一因素不够安全)

常见密码安全误解

误解一:”复杂密码更安全”

真相:长度比复杂度更重要。一个16位的纯小写字母密码比一个8位的混合复杂密码更安全。

误解二:”定期更换密码更安全”

真相:除非有证据表明密码已泄露,否则定期更换密码可能导致用户创建更弱的密码变体。

误解三:”所有字符都必须使用”

真相:强制使用所有字符类型可能导致用户创建可预测的模式(如首字母大写+末尾数字)。

误解四:”密码越短越安全”

真相:密码越长,暴力破解所需时间越长。12位密码的破解时间是8位密码的数千万倍。

未来趋势

无密码认证

越来越多的服务提供商正在转向无密码认证:

  • FIDO2/WebAuthn标准
  • Passkey(通行证密钥)
  • 生物识别认证
  • 基于设备的认证

密码学的进步

  • 后量子密码学准备
  • 更好的哈希算法(Argon2、bcrypt)
  • 抗GPU破解的参数调整

用户行为的改变

  • 密码管理器的普及
  • MFA的广泛采用
  • 对密码安全的更高意识

总结

Bill Burr的后悔故事告诉我们:即使是权威机构制定的最佳实践,也可能随着时间推移和新证据的出现而需要修正。

关键教训:

  1. 遵循基于证据的建议,而不是教条
  2. 优先使用长密码而不是复杂密码
  3. 使用密码管理器管理你的密码
  4. 实施多因素认证作为额外保护层
  5. 定期检查你的密码是否出现在已知泄露列表中

下次当你被逼着把 Password!7 改成 Password!8 时,记得这其实是制定这些规则的人也会后悔的做法。真正的安全来自于长度、唯一性和多因素认证,而不是机械地遵循过时的复杂度要求。

来源:MakeUseOf