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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式設計師何苦為難程式設計師?程式設計師
- 程式設計師將面臨的三大“難題”程式設計師
- 程式設計師高薪盛宴背後:未來有哪些程式設計師會被淘汰?程式設計師高薪
- 自學程式設計難度大嗎?程式設計
- 大學老師告訴我:20年內程式設計師會被取代,未來不需要程式設計師...程式設計師
- 《程式設計師的數學》思考題(一)程式設計師
- 【1024程式設計師節】為什麼有些程式設計師下班比你早?程式設計師
- 學成才知道,風變程式設計誠不欺我!程式設計
- 招個程式設計師,難?程式設計師
- 學完風變程式設計,我的焦慮緩解了!程式設計
- 程式設計師的哲學程式設計師
- 程式設計師的數學程式設計師
- 解決程式設計難題的實用方法指南 - praeclarum程式設計
- 10.24程式設計師節專輯——程式設計師最愛的數字,1024的祕密程式設計師
- 前端程式設計師請勿阻止密碼自動貼上功能 - cocoaphony前端程式設計師密碼
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- IT行業高薪的背後:未來9成的程式設計師會被淘汰?行業高薪程式設計師
- 自學程式設計,如何找到自己的第一份程式設計師工作?程式設計師
- 程式設計師也難逃的二八定律,成為頂級程式設計師真的有那麼難嗎?程式設計師
- 我似乎理解了程式設計的意義程式設計
- 老程式設計師被新程式設計師拍在沙灘上?程式設計師
- 密碼學課程設計 - 混合密碼的實現密碼學
- 解決問題的能力 > 10倍程式設計師程式設計師
- 女程式設計師,為什麼比男程式設計師少???程式設計師
- 以前的程式設計師,現在的程式設計師程式設計師
- 1024程式設計師節,向用程式碼改變世界的程式設計師致敬!程式設計師
- Unix之父Ken Thompson的BSD密碼終於被破解了密碼
- 自學程式設計難在哪裡?教你如何解決程式設計
- 程式設計師生活之路--來自程式設計師爸爸的一封信程式設計師
- 程式設計師被懟!HR:對不起,我們不招“精通Excel”的程式設計師程式設計師Excel
- 程式設計師只能吃青春飯?程式設計師該怎麼規劃自己的未來程式設計師
- 程式設計師的打怪升級之路,程式設計師未來職業規劃全路線程式設計師
- 程式設計師嘆息:太難了,三萬的程式設計師確實不如三千公務員?程式設計師
- 3年程式設計師寫的程式碼被應屆生懟:我能三行搞定!也配叫程式設計師?程式設計師
- LR.Net解放程式設計師雙手的自動生成程式碼程式設計師
- 大學教程式設計的老師為何不去當高收入的程式設計師?程式設計師
- 真的要做一輩子的程式設計師嗎?來自10年程式設計師的心聲程式設計師
- PHP 程式設計師的堆學習PHP程式設計師