用了 4 天多,终于破解了 Unix 之父的密码
Posted 程序员的那些事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用了 4 天多,终于破解了 Unix 之父的密码相关的知识,希望对你有一定的参考价值。
(给程序员的那些事加星标)
综合整理:程序员的那些事(id:iProgrammer)
这几天,国外技术社区在热议一件事:Unix 之父 Ken Thompson 的一个旧密码被破解了。
这究竟是怎么一回事呢?
2014 年,有个德国程序员 Leah Neukirchen 在 BSD 3 的源代码树中发现了一个 /etc/passwd 文件,其中包括了不少 Unix 骨灰级用户(大佬)的密码,包括:如丹尼斯·里奇(Dennis Ritchie, C 语言之父)、肯·汤普森(Ken Thompson,Unix 之父)、布莱恩·克尼汉(Brian W. Kernighan,那本超级经典的 《C 程序设计语言》是他和丹尼斯·里奇合著的)、史蒂夫·伯恩(Steve Bourne,sh 的创建者)和比尔·乔伊(Bill Joy,Vi 和 BSD 的创建者)。
发现的那些密码当然不是明文,而是用基于 DES 的 crypt(3) 算法加密后的密文。因为 crypt(3) 是一种弱加密算法,Leah 说密码最多只有 8 位,所以他就想着破解玩玩。
破解工具是用了业界知名的 hashcat 和 john。
很快,Leah 破解了大多数的密码,发现不少还是弱密码。
不过,Ken Thompson 的密文(ZghOT0eRm4U9s)他没能破解。在 2014 年的时候,即便是对所有小写字母和数字进行彻底的搜索,也是要花费好几天的时间。
由于 crypt(3) 算法是由 Ken 和 Morris 开发的,Leah 超级想知道密码是什么。他还意识到,与其他密码散列方案(如 NTLM) 相比,crypt(3) 的破解速度要慢得多,而且优化程度可能也更低。
Ken 的密码中是不是用了大写字母和特殊字符?(在现代 GPU 上,穷举搜索一个 7 位的密码,Leah 说要 2 年以上的时间。)
10 月初,这个话题再次出现在一个 Unix 的邮件列表中。Lean 分享了他的进展和结果(拿 Ken 的密码没办法)。
就在 10 日,另外一个程序员 Nigel Williams 把 Ken 的密码给破了。
ZghOT0eRm4U9s : p/q2-q4!
Williams 也是用了 hashcat 这个工具,在 AMD Radeon Vega64 上运行了 4 天多,才破解了。
Ken 的密码有什么特殊之处?
在 Ken 的密码( p/q2-q4! )中,p 代表 Pawn(卒/兵),密码表示国际象棋中的一步走棋(见下图),这步棋被称为 Queen's Pawn Opening,是常见的开局走棋。
此外,感叹号 !在记谱法表示这是一步好棋。(感谢「渐陵」补充)
( p/q2-q4 )采用的记谱法,就是国际象棋的描述性记谱法,不过该记谱法 1981 年被弃用了。
他这个密码,反映出另外一件事:Ken 是一个国际象棋爱好者,他曾经是 1980 年第 3 届全球计算机国际象棋锦标赛的冠军。
Ken 也在那个 Unix 邮件列表中,针对密码被破解,他的回应很简单:congrats (恭喜答对了!)
下面是 1983 年 Ken 参加第 4 届全球计算机国际象棋锦标赛的留影。
那些有名的高强度密码
像 p/q2-q4! 这样的强密码,位数还只是 8,如果位数再多几位的强密码,一般都是
2011 年左右,国内某程序员社区平台出现脱库,暴露了很多程序员常用密码。比如:
ppnn13%dkstFeb.1st 这样的令人惊叹的密码,如果不是密码主人来解释,估计没人能猜到是出自一句唐诗吧。
如何使用强密码,这些被破解的密码,给了大家一个思路。你们学会了嘛?
推荐阅读
(点击标题可跳转阅读)
关注「程序员的那些事」加星标,不错过圈内事
圈内事,我在看❤️
以上是关于用了 4 天多,终于破解了 Unix 之父的密码的主要内容,如果未能解决你的问题,请参考以下文章