中英文泡椒 发表于 2026-9-1 18:32:33

让你密码必须加 !@#$ 的那个人,后来道歉了

本帖最后由 中英文泡椒 于 2026-9-1 18:33 编辑

你肯定经历过这种事。

注册一个账号,输入密码,系统弹出一行红字,「密码必须包含大写字母、数字和特殊字符」。你咬咬牙改成 Zhangsan123!

三个月后系统又来,「您的密码已过期,请修改,且不能与前三次密码相同」。你把感叹号改成井号,Zhangsan123#。这套

流程你已经走了十几年。你以为这是某种严谨的密码学原理。

不是的。它来自一个人,一份 8 页的文件,和一篇他自己都没验证过的 1980 年代论文。2003 年,一个叫 Bill Burr 的人在美

国国家标准与技术研究院(NIST)写了一份密码安全指南,编号 SP 800-63B,附录 A。



这份文件只有 8 页。它规定了三件事。密码必须混合大小写字母、数字和特殊字符。密码必须每 90 天更换一次。密码不能和

之前用过的一样。Bill Burr 当时不是什么顶级密码学家。他是 NIST 的一个中层管理者,接到了这个任务,想找点数据支撑,但

2003年几乎没有大规模的密码泄露数据可以研究。他能找到的最有参考价值的文献,是一篇 1980 年代的白皮书。那时候互联网

还不存在。但他还是用了。然后这 8 页纸变成了全球标准。银行用它,学校用它,公司用它,每一个网站的注册页面都在用它。

你注册任何一个账号时看到的那行「密码强度要求」,大概率都可以追溯到这 8 页纸。一个人,一份文件,改变了全世界几十亿

人输入密码的方式。但问题来了,这套规则真的管用吗?

如果你用密码管理器,让它随机生成一串 K7$mQ2!xR9pL,那这套规则完全没毛病,暴力破解要算到太阳熄灭。但你不会那么做。

几十亿人也不会。你回想一下自己的密码。大概率是一个单词或者拼音,首字母大写,后面跟几个数字,末尾加个感叹号。

几十亿人都在这么干。密码学家后来拿到了真实的泄露数据库,比如 LinkedIn 那次几亿条密码泄露,发现了一个尴尬的事实。人

类在「满足复杂度要求」这件事上,套路惊人地一致。

大写字母?放第一个。

数字?放末尾。

特殊字符?感叹号,永远是感叹号。

破解工具早就把这些模式写进了字典。你以为的强密码,在暴力破解面前可能几秒就倒了。



2011 年,xkcd 的作者 Randall Munroe 画了一幅后来被引用了无数次的密码漫画。他对比了两种密码。

第一种,Tr0ub4dor&3。大小写混合,数字替换字母,还有特殊字符,完美符合 NIST 的要求。信息熵大约 28 比特。

第二种,correct horse battery staple。四个随机的普通英文单词拼一起,没有大写,没有数字,没有特殊字符。信息熵大约 44 比特。

第二种比第一种强几万倍。但你猜哪种更好记?

Munroe 在漫画下面写了一句话,大意是,我们花了 20 年,成功训练了所有人使用人类记不住、但电脑很好猜的密码。



2017 年,Bill Burr 72 岁,已经退休。

华尔街日报找到他做了一次采访。他说了一句,“Much of what I did, I now regret.” 我做的那些事,很多我现在都后悔了。

同年,NIST 正式修改了密码指南。取消了特殊字符的强制要求,取消了 90 天强制更换的规定,转而推荐用长的、容易记住的短语

作为密码。一个基于 1980 年代论文拍脑袋写出来的规则,全球执行了 14 年,折磨了几十亿人,最后被它的作者亲手否定。但你

今天注册一个账号的时候,大概率还是会看到那行红字。「密码必须包含大写字母、数字和特殊字符。」规则的制定者已经道歉了。

但规则还在跑。

tomok 发表于 2026-9-2 09:08:28

缪误已经扩散
真理迟迟缺位

羽风亦雨 发表于 2026-9-2 14:04:50

已经根植在很多系统的底层代码中了,修改何其费劲,成本又高昂,只能将错就错了{:10_266:}

sunshine_8205 发表于 2026-9-2 16:23:42

{:5_98:}
页: [1]
查看完整版本: 让你密码必须加 !@#$ 的那个人,后来道歉了