就在今天!Unix 之父的密码被破解了
(给Linux爱好者加星标,提升Linux技能)
转自:技术最前线
10 月 10 日(美国当地时间是 9 日),Hacker News 首页头条帖子,就在讨论一件事: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) 算法加密后的散列(hash)值。因为 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! )中,包括了国际象棋中的一步走棋 (q2-q4)。q2-q4 中的 q 是 Queen 的缩写,这种走棋记法属于国际象棋的描述性记谱法,不过该记谱法 1981 年被弃用了。
他这个密码,反映出另外一件事:Ken 是一个国际象棋爱好者,他曾经是 1980 年第 3 届全球计算机国际象棋锦标赛的冠军。
Ken 也在那个 Unix 邮件列表中,针对密码被破解,他的回应很简单:congrats (恭喜答对了!)
下面是 1983 年 Ken 参加第 4 届全球计算机国际象棋锦标赛的留影。
推荐阅读
(点击标题可跳转阅读)
看完本文有收获?请分享给更多人
关注「Linux 爱好者」加星标,提升Linux技能
好文章,我在看❤️