20年未解的MIT密碼難題,被自學成才的程式設計師破解了,比預計早15年

post200發表於2021-09-09
栗子 發自 凹非寺 
量子位 報導 

圖片描述

誕生在1999年的MIT密碼難題,被一個自學成才的程式設計師破解了。

當年,出題人按照摩爾定律估計,完成計算要35年

結局的到來,足足提前了15年

而交卷的人類只用了i7電腦的一個CPU核

這個密碼,還將解鎖一個20年前的秘密。

怎樣的一個謎?

回到1999年4月,MIT電腦科學實驗室 (LCS) 就要滿35歲了。

它收到了一份富有儀式感的生日禮物,是個時間囊 (Time Capsule) :有人把重要的東西藏在裡面,設定一個時間,留給未來的人類開啟。

與眾不同的是,這個時間囊有一個“密碼鎖”,是由密碼學家Ron Rivest設計的。著名的RSA加密演算法便是以他的名字命名。

圖片描述

Rivest設了一個平方密碼,初始值是2。2^2=4,4^2=16,16^2=256……

平方之後還要取模 (mod) ,就是餘數。如16 ≡ 1 mod 3, 16除以3餘1。

當然,這裡不是模三,是模一個很大的數:

圖片描述

 這是兩個大質數的乘積,RSA演算法的根基

那麼,平方運算要做多少次?

圖片描述

80萬億次

就像開頭提到的那樣,用摩爾定律推算,破解這個密碼大概需要35年。這正是實驗室當時的年紀。

那如果一直沒有人解出答案,或者大家乾脆已經忘記了這一道謎題呢?

設計者就把35年定為最終期限。即便人類沒有交出答卷,時間囊依然會在2033年、實驗室70週年的慶典上開啟。

當然,1999年的科學家們不會想到,四年之後LCS實驗室就和AI實驗室合體進化,成為了後來大名鼎鼎的CSAIL

圖片描述

他們大概也不會想到,20年後會有人提前交卷。

並且,第一個交卷的程式設計師,只用了三年半來解題而已。

三年半破解謎題

2015年,謎題發射的16年後,自學成才的比利時程式設計師Bernard Fabrot (簡稱“博納”) 和它偶遇了。

謎題程式碼是用Java寫的,但博納認為用GNU多精度運算庫 (GMP) 的話,解起來會更快。

圖片描述

這個開源庫是用C語言寫成的,也為Python、R、C++、PHP等各種語言做了包裝。

博納把家裡桌上型電腦的其中一個CPU核,變成了解題專用,7天24小時不停地跑。除非家裡停電,或者要出遠門。

除了最親密的朋友之外,博納不敢把自己的秘密行動告訴任何人。

“我知道我是有機會贏的,可如果告訴了別人,他們用上更強的裝置就可能超過我了。”

三年有餘,博納完成了那80萬億次平方運算。

最後一步,是用平方運算得到的結果、和題中給出的一個數,按題目要求做運算;算出的一串數字,可以翻譯成一句祝賀

圖片描述

博納收到了溫暖的賀詞,便雞凍地向MIT宣佈自己解開了謎題。

像前文說起的那樣,20年了,電腦科學實驗室不復存在,與AI實驗室合體而成的CSAIL實驗室也已赫赫有名。

而CSAIL負責人Daniela Rus聽到這個訊息的時候,甚至不知道題目的存在。不過,稍微回溯一下歷史,雙方便對上了暗號。

博納現在還不能透露這句話是什麼。一切等到5月15日,答案會和時間囊一同昭告天下。

他會帶著榮光參加這場儀式。

事實也證明,不讓太多人知道自己的想法,是非常機智的

對手也快完成了

雖然,CSAIL負責人並不記得當年的故事,但企圖解開這個謎團的,並不止博納一人。

還有一個根正苗紅的專案組,名叫Cryptophage,由前英特爾工程師Simon Peffers帶領,只為破解MIT密碼而生。

他們用的方法和博納不一樣。那是一個新的平方演算法,跑在可程式設計的加速器FPGA上,大約比CPU快10倍。

圖片描述

團隊說只需要兩個月,預計5月11日就能跑出答案了。

結局總是出人意料。團隊滿懷欣喜地聯絡MIT,預告即將誕生的成果,卻被告知已有人捷足先登。

雖敗猶榮,他們依然受到了邀請,參加5月15日時間囊開啟的盛會。

One More Thing

在開啟之前,除了設計師沒有人知道,時間囊裡究竟藏了多少秘密。

但現在已經有些劇透了。有的禮物來自比爾·蓋茨,有的禮物來自全球資訊網的發明者Tim Berners-Lee。

而大贏家博納最期待的,還是世界上最早的PC遊戲:Zork (魔域) 的原始版本。

圖片描述

謎題本題:

—  —


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2822771/,如需轉載,請註明出處,否則將追究法律責任。

相關文章