有人青出于藍 卻有人永遠無法勝于藍 魯迅先生曾說,記錄這東西,就是用來打破的。 前陣子程序員圈子一定熱呼的不可開交,咋回事?還不是因為有個程序員妹子捅出了一個大簍子。 事情是這樣的,在德國慕尼黑有一個名叫 Leah Neukirchen 的程序員妹子,她厭倦了日復一復的解決小兒科程序代碼。 直到 2015 年的一天,閑來無事的 Leah 在 BSD3 源碼樹的文件轉(zhuǎn)儲中發(fā)現(xiàn)了一個 /etc/passwd 文件,其中包含了計算機領(lǐng)域中一些傳奇工程師的舊密碼,令人驚訝的是,這些密碼竟然已經(jīng)存放了39年之久。 Leah找到的部分舊密碼名單 Leah 對他們使用的密碼非常感興趣,加上此刻魯迅先生的名言在她耳邊縈繞不散。她相信,再古老的密碼都會有被破譯的一天。 因此,Leah 展開了一段暴力破解密碼之旅。 計算機大師用的都是些小兒科密碼? 她這一破就是破了5年,您別說,大部分密碼還真就都被她破解了。 但其實在大多數(shù)情況下,leah的成功是因為用戶的密碼比較容易猜到。 畢竟大部分計算機大師以前使用的密碼保護程序是 Unix 早期的版本——BSD,這是一個古老的操作系統(tǒng),因此從今天的密碼保護標準來衡量,它們的安全保障措施確實不敢恭維。 首先,保護密碼的哈希函數(shù)雖然在40年前是最先進的技術(shù),但現(xiàn)在要破解它并不難。更奇怪的是,一些BSD創(chuàng)建者的密碼散列包含在公開的源代碼中。 比如: BSD的共同發(fā)明者Dennis Ritchie使用了“dmac”作為密碼(他的中間名是MacAlistair); Stephen R. Bourne是Bourne shell命令行解釋器的創(chuàng)建者,他的密碼是“Bourne”; Eric Schmidt是Unix軟件的早期開發(fā)者,現(xiàn)在是谷歌母公司Alphabet的執(zhí)行董事長,他的密碼竟然是妻子的名字“wendy”; Unix自動化工具make的作者、同時也是第一個Fortran編譯器的作者Stuart Feldman,他使用的密碼是“axolotl”(一種墨西哥蠑螈的名字)。 其中最弱的是Unix貢獻者Brian W. Kernighan的密碼:“/.,/.,”,表示一個三個字符的字符串,重復敲兩次QWERTY鍵盤上的相鄰鍵就得到了。 但是,就像超模君說過,巨人總會遇到比他更大的巨人一樣(?),至少有五個純文本密碼 Leah 是一點想法也沒有。 這里面包括土耳其計算機科學家Ozalp Babao?lu, Unix 軟件開發(fā)人員Howard Katseff,Unix 的重要貢獻者 Tom London 和 Bob Fabry。 但其中令 Leah 最不甘心、最費解、花了最長時間甚至一度想把電腦砸了的是Unix之父Ken Thompson 使用的密碼。 Ken Thompson 和他的 UNIX Ken Thompson 是硅谷傳奇計算機科學家和工程師,UNIX 之父,江湖人稱“ken?!?,他同時也是 1983 年圖靈獎得主。 1983年ACM圖靈獎評語(節(jié)選): “UNIX系統(tǒng)的成功是由于英明地選用了一些有決定意義的觀念并且準確地加以了實現(xiàn)。UNIX系統(tǒng)作為一個樣板,已經(jīng)引導了一代軟件設(shè)計者思考程序設(shè)計的新途徑。UNIX的精髓是它的體系結(jié)構(gòu),這種結(jié)構(gòu)可使程序員藉此開展其他工作。 鑒于Ken Thompson和Ritchie在UNIX操作系統(tǒng)的開發(fā)和實現(xiàn)中所作出的卓越貢獻,美國計算機協(xié)會(ACM)將授予1983年的ACM圖靈獎?!?/p> 說出來你可能不信,就這么一個大人物的小學成績卻是爛到極點,爛到他母親足足給他退了三次學都被他成功說服回去再讀一遍試試。 直到有一節(jié)課講了二進制,自小喜歡邏輯的他瞬間被迷住了,他做了很多二進制運算,還借助一臺十進制計算器擴展到各種進制。 展現(xiàn)出計算機天賦的他,在1960 年如愿進入了加州大學伯克利分校主修電氣工程。 在二年級的時候他有機會使用一臺模擬計算機,其實因為根本沒人想用,實際上成了他的專用計算機。他仔細研讀,學會了編程,并在學校找到編程的工作,直到 1966 年他加入了貝爾實驗室。 在貝爾實驗室工作期間,湯普森在參與 Multics 操作系統(tǒng)項目的過程中開發(fā)了一款游戲 ——《星際旅行》。 Space Travel 游戲 后來貝爾實驗室撤出了 Multics 項目。為了能夠繼續(xù)玩游戲,湯普森只好找到一臺老式 PDP-7 機器,重寫了游戲代碼。 但他發(fā)現(xiàn)游戲在新機器下玩起來太卡,于是又吸取了其他程序員在開發(fā) Multics 文件系統(tǒng)時的經(jīng)驗,在他們工作的基礎(chǔ)上設(shè)計了自己的文件系統(tǒng)。 后經(jīng)擴展,形成了一個完備的操作系統(tǒng),在公司內(nèi)部廣泛傳播,并于 1970 年被命名為 Unix。 Ken Thompson 最難破譯的密碼 回到現(xiàn)在,Leah 對無法破解 Ken 的密碼感到沮喪,她在 Unix Heritage Society 的郵件列表中表示: “我一直沒有辦法用散列ZghOT0eRm4U9s破解 Ken 的密碼,我列舉了所有8個小寫字母+特殊符號鍵空間。任何幫助都行,歡(求)迎(求)大家給我指點!” (字里行間透露出一絲心酸和不甘,超模君抱抱。) 姐是真的破譯不下去了 leah發(fā)郵件后不久,就被一個自稱 Nigel Williams 的論壇哥們看到了,抱著自古江湖兒女,你有困難我定拔刀相助的想法,令所有人驚訝的是, 這哥們僅花了4天半的時間,運用 AMD Radeon Vega64 以大約930MH/sd的速度運行Hashcat(一個密碼破解程序),并利用了強大的顯卡運行計算能力之后就破解了ken的密碼。 隨后他興奮地一路屁顛屁顛跑去給leach發(fā)郵件聲稱他已破譯這個密碼了。 Ken的密碼加密后的字符串是:ZghOT0eRm4U9s 解密后得到的明文是:p/q2-q4! Nigel Williams的論壇原文 要知道ken這個密碼可是在1980年設(shè)置的,現(xiàn)在都0202年了,用這么現(xiàn)代的計算機才能破解這樣一個古老的密碼,這確實很Ken桑。 隨著 Unix 之父 Ken Thompson 的舊密碼被破解,這個消息瞬間在技術(shù)論壇中炸開了鍋。 有意思的是,湯普森的密碼“p/q2-q4!”其實是國際象棋中一種常見的開局走法的符號。 乍一看“p/q2-q4!”像是一個數(shù)學公式,而實際上是一種古老的符號,代表國際象棋中棋子的走位,意思是 “皇后前面的兵 (Pawn) 向前移動 2 個方格”。q 代表 Queen,p 代表 Pawn,這種走棋記法屬于國際象棋的代數(shù)記譜法。 p/q2-q4!——皇后前面的兵從第2行走到第4行 是國際象棋注釋符號,表示“好棋” 好了藏不住了,這里超模君要公布一下這位1980 年度第 3 屆全球計算機國際象棋錦標賽的冠軍——Ken Thompson?。?/strong> Ken是一名實實在在的國際象棋迷,還曾經(jīng)在空余的時間另外開發(fā)一個專用于下國際象棋的計算機程序 “Belle”。 眼看著自己39年前的密碼被人破解 當事人 Ken Thompson 通過郵件得知這件事后 對 Williams 表示了深切且由衷的贊賞 并回復道:“恭(ma)喜(de)!” 參考資料: https:///2019/10/unix-bsd-password-cracked.html https:///information-technology/2019/10/forum-cracks-the-vintage-passwords-of-ken-thompson-and-other-unix-pioneers/ 作者簡介:超模君,數(shù)學教育與生活自媒體博主,新晉理工科奶爸。出版過《芥子須彌 · 大科學家的小故事》;《數(shù)學之旅·閃耀人類的54個數(shù)學家》。后續(xù)數(shù)學文化創(chuàng)意多多,歡迎關(guān)注認識! |
|