最近,开发人员 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 就破解了其中一些比较脆弱的密码,破解的部分哈希码和密码的组合如下:
gfvwhuamf0trw: dmac
pb1amspsvpg0y: uio
ymvglqzjbwyde: /.,/.,
c8udintizcuia: bourne
aazk9aj5 / ue0e: foobar
e9i8fwghn1p / i: apr1744
iivxqsvq1v9r2: axolotl
9ezltsyjeeabe: network
p0chbwe / mb51k: whatnot
nc3ikfjyw2u7e: ... hello
olqh1vdqh38aw: sacristy
9uln5cwtc0b9e: sherril.
n33.mcncth5qw: uucpuucp
fh83pfo4z55cu : wendy !!!
ovcpatz8rfmfy: cowperso
|x.znnzrciwaue: 5% ghj
il2bmgecqjgbk: pdq; dq
4bkceieetjwxi: jilland1
8pyh / dubqt9ss : theik !!!
lj1vxnxtapndc: sn74193n
这些破解出来的密码字符组成比较简单。不过,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 的作者之一。
根据 williams 的说法,这个分析是在 4 天内使用了 amd 的 radeonrxvega 64 和分析软件 hashcat 完成。kens 之后在邮件上得知这个事情后,他对 williams 表示赞赏。
试用申请