最近,開發人員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 的作者之一。