查看原文
其他

就在今天!Unix 之父的密码被破解了

技术最前线 Linux爱好者 2021-01-30

(给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 届全球计算机国际象棋锦标赛的留影。




推荐阅读

(点击标题可跳转阅读)

Unix 的版权史

那些被岁月遗忘的 UNIX 经典著作



看完本文有收获?请分享给更多人

关注「Linux 爱好者」加星标,提升Linux技能

好文章,我在看❤️

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存