第兩百四十三章 RSA算法(1/2)
君信一直都知道,佩利教授是一個非常守時的人,就像是一個機械表一樣,到什么時間該干什么事情,一分一毫都不會差,很少有空閑的時間。所以對于他能夠擠出半個小時的時間來和自己交談,并粗略的接收了自己的論文,君信還是非常的感謝的。所以在時間到了之后,也沒有按照中國的習俗挽留,而是將其送到了門口,看著他上了車之后,才回到了這間會客室里面。今天晚上,他要接待的可不是一批,還有另外的三個人。
不過君信比較慶幸的是,接下來的時間還是相對比較寬裕的,所以不用像和佩利教授交流的時候那樣,全神貫注的注視著佩利教授的一舉一動,而且也未見得會有什么作用,因為全程交談下來,話語的主動權依舊在佩利教授那里。
不到十分鐘的時間,約定好了的羅納德·李維斯特、阿迪·薩莫爾和倫納德·阿德曼三人就匆匆忙忙的來到了這里。
不等君信發問,作為三人之中帶頭的李維斯特就迫不及待的說道:“尊敬的先生,據數學系令人尊敬的奎倫教授說,你在我們三人研發的RSA公鑰里面找到了一些錯漏,這是真的嗎?”
君信能夠理解他的想法,所以也沒浪費時間,直接點頭應了下來,“沒錯,RSA碼確實有一點的缺陷,雖然現在不是很明顯,不過我在研究的時候,還是注意到了一些比較特別的情況?!?
“可以談一談你的想法嗎?”帶著眼鏡的倫納德問道。
君信點了點頭道:“正好現在有時間,我就簡單的說一下我的想法吧?!?
“請!”
“RSA公鑰由三個部分組成,一個是是密鑰長度,剩下的兩個是一對相關的數。在產生密鑰時,首先要使用概率算法來驗證隨機產生的大的整數是否質數,這樣的算法比較快而且可以消除掉大多數非質數。假如有一個數通過了這個測試的話,那么要使用一個精確的測試來保證它的確是一個質數?!?
“你的意思是,RSA算法的缺點在于它的隨機質數的產生方****納德扶了扶眼鏡,神情嚴肅的問道。
“是的,對于產生隨機大質數,其尋找質數的算法需要不能給攻擊者任何信息,所以產生隨機數的軟件必須非常好。要求是隨機和不可預測。當然,這兩個要求并不相同。一個隨機過程可能可以產生一個不相關的數的系列,但假如有人能夠預測或部分地預測出這個系列的話,那么這個隨機的程序就已經不可靠了。比如有一些非常好的隨機數算法,但它們都已經被發表,因此它們不能被使用,因為假如一個攻擊者可以猜出兩個質數一半的話,那么他們就已經可以輕而易舉地推算出另一半。”君信解釋道,不過在他看來,這些東西完全是照本宣科。
“那么,你的方法呢?”一直沒有說話的薩莫爾忽然開口問道。
君信挑了挑眉頭說道:“嚴格的來說,我并沒有什么辦法。事實上,我在做統計學計算的時候,發現了RSA公鑰算法的缺點的。我發現,不管我是怎么通過改變算法來達到改變產生隨機大質數的產生方式,總會出現這樣的問題:在700萬個實驗樣本中有2.7萬個公鑰并不是按理論隨機產生的。也就是說,或許有人可以找出產生公鑰的秘密質數。雖然我發現絕大多數公鑰都是按理論產生的,但是每一千個公鑰中會有兩個存在安全隱患。這給了攻擊者極大的便利。”
“你是怎么做到的?”李維斯特問道。
“我在接觸到了你們三人發表在計算機雜志上的相關論文,經過研究后,對你們采用的大質數的因素分解的算法產生了一定的興趣,于是在學習了一段時間計算機理論之后,嘗試著自己編寫了幾個能夠產生隨機大質數的算法,在借助了普林斯頓高等研究所的電子計算機進行數據處理后,總是發現這個問題。這些是我在做相關計算的時候羅列的一些算法和計算機出具的判斷報告!”
說著,君信將自己早就放在手邊的計算算法代碼和計算機判斷的報告遞給了離自己最近的倫納德。一邊解釋說道:“關于算法的問題,我是通過了計算機進行了驗證,目前來說并不存在問題,至少在我使用這些大質數的時候是不存在問題的,但是其結果仍然有無法改變的偏差,確實很讓我驚訝?!?
“確實存在這樣的問題,我們在研究的時候只是算法本身考慮了問題,并沒有去看算法之外的統計學上的問題,這是我們的失誤?!崩罹S斯特滿懷歉意的說道。
君信搖了搖頭說道:“就我所知,RSA公鑰固有的問題來自于公鑰密碼系統的最有用的特征--每個人都能使用公鑰。但從算法上無法解決這一問題,主要措施有兩條:一條是采用好的公鑰協議,保證工作過程中實體不對其他實體任意產生的信息解密,不對自己一無所知的信息簽名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用One-WayHashFunction對文檔作HASH處理,或同時使用不同的簽名算法?!?
“所以我并不認為統計學上的問題不可以避免,或者總能找到辦法解決不安全密碼所帶來的風險。但是現在的問題:算法之外的RSA公鑰該怎么辦?”君信搖了搖頭說道。
『加入書簽,方便閱讀』