让你密码必须加 !@#$ 的那个人,后来道歉了
本帖最后由 中英文泡椒 于 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 年,折磨了几十亿人,最后被它的作者亲手否定。但你
今天注册一个账号的时候,大概率还是会看到那行红字。「密码必须包含大写字母、数字和特殊字符。」规则的制定者已经道歉了。
但规则还在跑。
缪误已经扩散
真理迟迟缺位 已经根植在很多系统的底层代码中了,修改何其费劲,成本又高昂,只能将错就错了{:10_266:} {:5_98:}
页:
[1]