20年未解的MIT密碼難題,被自學成才的程式設計師破解了,比預計早15年
栗子 發自 凹非寺
量子位 報導
誕生在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 所有的程式設計師都是自學成才程式設計師
- 每一個程式設計師都是自學成才程式設計師
- 程式設計師的2015年9個計劃程式設計師
- 大學老師告訴我:20年內程式設計師會被取代,未來不需要程式設計師...程式設計師
- 我的 10 年自學程式設計之路程式設計
- 給程式設計師的2015年新年9大計劃程式設計師
- 一個程式設計師的2015年總結程式設計師
- 15位2012年最具性感的程式設計師程式設計師
- 程式設計師 2015 年工作總結程式設計師
- 2017 年 PHP 程式設計師未來路在何方?PHP程式設計師
- 大棚解讀卓越程式設計師密碼程式設計師密碼
- 一個老程式設計師未來10年的計劃目標程式設計師
- 自學程式設計難度大嗎?程式設計
- 程式設計師的 2021 年總結程式設計師
- 程式設計師生活智慧集——卓越程式設計師密碼程式設計師密碼
- 程式設計師的未來程式設計師
- 3年程式設計師寫的程式碼被應屆生懟:我能三行搞定!也配叫程式設計師?程式設計師
- 預測2015年的網頁設計趨勢網頁
- 1985年程式設計師是如何寫程式碼的程式設計師
- 我的十年程式設計路 2015年篇程式設計
- 程式設計師何苦為難程式設計師?程式設計師
- 程式設計師何必難為程式設計師程式設計師
- 碼農被3年資深程式設計師狂噴:根本不懂程式碼!程式設計師
- 細數被程式設計師吐糟的9大困難程式設計師
- 一個老程式設計師的程式設計之路,寫給年輕的程式設計師們程式設計師
- 年輕程式設計師的悲傷程式設計師
- 程式設計師將面臨的三大“難題”程式設計師
- 程式設計師的這些常見健康問題,你瞭解了麼?程式設計師
- 程式設計師高薪盛宴背後:未來有哪些程式設計師會被淘汰?程式設計師高薪
- 自學的程式設計師如何找到好工作?程式設計師
- 自學程式設計,十年磨一劍程式設計
- 程式設計師迷茫的未來程式設計師
- 程式設計師2014年展望未來八個小小技巧程式設計師
- 被程式碼逼瘋過兩次的程式設計師程式設計師
- 寫了 35 年程式碼的老程式設計師的最大遺憾程式設計師
- 2017年程式設計師必看的紀錄片程式設計師
- 程式設計師如何做出“不難看”的設計程式設計師
- 一個十幾年程式設計師給所有新老程式設計師的忠告程式設計師