最近,开发人员Leah Neukirchen 在博客中称,Unix 之父 Ken Thompson 的旧密码被破解了。这是什么情况呢?
早在2014年时,Leah在BSD 3源码树的文件转储中发现了一个/etc/passwd文件,其中包含了计算机领域中一些具有传奇性的工程师的旧密码,如Dennis Ritchie、Ken Thompson、Brian Kernighan、Steve Bourne和Bill Joy 等开发Unix的大师。Leah 对他们使用的密码非常感兴趣,由于该密码用基于DES的crypt(3)算法加密后的散列(hash)值,而 crypt(3)是一种弱加密算法(最多限于8个字符),Leah 觉得破解起来应该比较容易,所以决定尝试。
Leah使用各种破解工具,如 John the Ripper 和 hashcat。很快,Leah 就破解了其中一些比较脆弱的密码,这些破解出来的密码字符组成比较简单。不过,Ken Thompson的密码却没能破解,尽管花了几天时间对所有小写字母和数字进行彻底遍历,结果仍没有用。因为如此,再加上这个算法是由Ken和Morris开发的,Leah 好奇心更加重,更加想要破解这个密码。他还发现,与其他密码散列方案(如NTLM)相比,Crypt(3)破解速度要慢得多。
Leah 猜想KenS可能用大写字母,甚至是特殊字符。如果这种情况,在现代GPU上穷举搜索一个7位的密码也需要两年的时间,甚至可能不止,所以放弃了分析。然而10 月初,这个话题再次出现在了The Unix Heritage Society 邮件列表上,Leah 分享了他破解的结果和进展,表示自己没能够破解KenS 的密码。当众多黑客都陷入苦思时,澳大利亚工程师 Nigel Williams 宣称终于破解KenS 的密码,他在邮件中做了描述:
KenS 的密码结果是:ZghOT0eRm4U9s:p/q2-q4!
乍一看,p/q2-q4!像是一个数学公式,而实际上是一种古老的符号,代表国际象棋中棋子的走位,意思是“线上的棋子(Pawn)向前移动2个方格( Pawns in the line move forward 2 squares)”。q 代表Queen,p 代表Pawn,这种走棋记法属于国际象棋的代数记谱法。
皇后前面的兵(Queen's Pawn Opening)一般在游戏开始时就占据棋盘的中心位置,这是下棋最常用的策略,这也只能是KenS 才独有的想法,KenS 是一个国际象棋爱好者,他曾经是1980年第3届全球计算机国际象棋锦标赛的冠军,还是一个国际象棋程序 Belle 的作者之一。