Unix之父Ken Thompson的密码被Nigel Williams破解了

最后编辑于 2019年10月11日 开发

大神程序员的点点滴滴都会成为人们茶余饭后的谈资,津津乐道。究其原因还是人们比较闲得慌。这不,最近一位澳大利亚程序员破解了Unix之父Ken Thompson的密码,就成了程序员们关心的话题。

一位德国慕尼黑的女程序员叫做Leah Neukirchen,她很早就找到了Ken Thompson等人的密码,但却破解不了,直到Nigel Williams这位哥们出现。

Nigel Williams来自澳大利亚的塔斯马尼亚州首府霍巴特(Hobart,Tasmania),毕业于澳大利亚塔斯马尼亚大学(University of Tasmania)。Nigel Williams在塔斯马尼亚大学从事存储和网络工作,曾是一位HPC(High Performance Computing,高性能计算)系统管理员。

Leah Neukirchen在博客上写下了破解过程:


2014年的时候,我在BSD 3源代码树的dump文件中找到了/etc/passwd文件,里面包含了所有前辈们的密码,包括Dennis Ritchie、Ken Thompson、Brian W. Kernighan、Steve Bourne和Bill Joy。

众所周知,这些密码使用的哈希是基于DES的crypt(3)算法,该算法较弱并且最多只能包含8个字符,所以我认为破解这些密码应该简单有趣。

工具则是johnhashcat

很快,我破解了很多密码,其中很多密码都很弱。(奇怪的是,bwk使用了很容易在QWERTY键盘上键入的/.,/.,)

但是我无法破解Ken Thompson的密码 :
ZghOT0eRm4U9s

因为在2014年的时候,即使是对所有小写字母和数字的进行穷尽搜索也需要花费几天的时间,只好放弃。由于该算法(指的是crypt(3))是由Ken Thompson和Robert Morris开发的,所以我就想弄清楚。我还意识到,与其他密码哈希方案(例如NTLM)相比,crypt(3)的破解速度要慢得多(也许是优化的少)。

Ken Thompson真的使用了大写字母甚至特殊字符吗? (使用现代GPU进行7位数的穷尽搜索仍然需要2年以上的时间。)

这个话题出现在了本月初的The Unix Heritage Society邮件列表中,而我分享了我的结果以及无法破解Ken Thompson的密码的沮丧。

终于,今天(2019年10月9日)这个问题被Nigel Williams解决了:

From: Nigel Williams <nw@retrocomputingtasmania.com>
Subject: Re: [TUHS] Recovered /etc/passwd files

ken is done:

ZghOT0eRm4U9s:p/q2-q4!

took 4+ days on an AMD Radeon Vega64 running hashcat at about 930MH/s
during that time (those familiar know the hash-rate fluctuates and
slows down towards the end).

这是记谱法中的一个国际象棋棋步,也是许多常见开头的开始。这非常吻合Ken Thompson的国际象棋背景。

我很高兴这个问题已经解决,我对答案很满意。


也就是说,Ken Thompson的密码是:

p/q2-q4!
而p/q2-q4!的哈希值正是ZghOT0eRm4U9s

其中q2-q4是国际象棋的一个棋步,而Ken Thompson是1980年在奥地利林茨举办的第3届全球计算机国际象棋锦标赛的冠军。

Ken Thompson,1943年出生于美国新奥尔良,从小就着迷于逻辑运算。他在1960 年进入加州大学伯克利分校电气工程专业,在此期间鼓捣计算机并学会了汇编编程。1966年,Ken Thompson加入了贝尔实验室,开始了他的封神之旅,因为在1970年,基于MULTICS计划的Unix诞生了。这位大神不但是Unix的发明人之一,还是B语言的作者。广泛普及的C语言正是基于B语言发展而来。不仅如此,在2006年Ken Thompson加入谷歌后,他还与Robert Griesemer、Rob Pike一起开发出了Go语言,即Golang。

Leah Neukirchen的英文原文:
Ken Thompson's Unix password

工具:
john
hashcat

登录注册后才能评论。