2003年,一个叫Bill Burr的人在美国国家标准与技术研究院(NIST)写了一份密码安全指南,编号SP 800-63B,附录A。这份文件只有8页,却规定了三件事:密码必须混合大小写字母、数字和特殊字符;密码必须每90天更换一次;密码不能和之前用过的一样。
你注册任何一个账号时看到的那行红字——「密码必须包含大写字母、数字和特殊字符」,大概率都可以追溯到这8页纸。一个人,一份文件,改变了全世界几十亿人输入密码的方式。
他当时并不是什么顶级密码学家
Bill Burr当时是NIST的一个中层管理者,接到了这个任务,想找点数据支撑,但2003年几乎没有大规模的密码泄露数据可以研究。他能找到的最有参考价值的文献,是一篇1980年代的白皮书。那时候互联网还不存在。但他还是用了。
然后这8页纸变成了全球标准。银行用它,学校用它,公司用它,每一个网站的注册页面都在用它。
这套流程你已经走了十几年。注册账号,输入密码,系统弹出一行红字,你咬咬牙改成Zhangsan123!,过了。三个月后系统又来,「您的密码已过期,请修改,且不能与前三次密码相同」。你把感叹号改成井号,Zhangsan123#,又过了。你以为这是某种严谨的密码学原理。不是的。
几十亿人的套路惊人地一致
如果你用密码管理器,让它随机生成一串K7$mQ2!xR9pL,那这套规则完全没毛病,暴力破解要算到太阳熄灭。但你不会那么做,几十亿人也不会。
你回想一下自己的密码。大概率是一个单词或者拼音,首字母大写,后面跟几个数字,末尾加个感叹号。Password1!、Summer2024!、Zhangsan123#,你不是一个人。
密码学家后来拿到了真实的泄露数据库,比如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年,折磨了几十亿人,最后被它的作者亲手否定。
但你今天注册一个账号的时候,大概率还是会看到那行红字。「密码必须包含大写字母、数字和特殊字符。」规则的制定者已经道歉了。但规则还在跑。
热门跟贴