南非共和國(Republic of South Africa)
1977年,也就是Diffie-Hellman的論文發表壹年後,麻省理工學院的三名研究人員基於這壹思想開發了壹種實用的方法。這就是RSA,它是以三個開發者的首字母命名的——羅恩·裏維斯特、阿迪·薩莫爾和倫納德·阿德爾曼,RSA可能是應用最廣泛的公鑰密碼系統。1983在美國為RSA申請了專利,它被正式采用為標準。雖然它的出口至今仍受限制,但它已被廣泛用於實現美國以外的地方發展。
與其他此類系統壹樣,RSA使用大素數來構造密鑰對。每個密鑰對* * *享有兩個素數的乘積,即模數,但每個密鑰對也有特定的指數。RSA實驗室對RSA密碼系統的原理解釋如下:
“用兩個大素數P和Q,計算它們的乘積n = pq;n是模數。選壹個比n小的數E,它與(p-1)(q-1)是素數,即除了1,E和(p-1)沒有其他公因數。求另壹個數d使得(ed-1)能被(p-1)(q-1)整除。值e和d分別稱為公共指數和私有指數。公鑰就是這個對數(n,e);私鑰就是這個對數(n,d)。”
知道了公鑰就能得到得到私鑰的方法,但是要靠把模因子分解成它的素數。這很難,通過選擇壹個足夠長的鍵,基本上可以做到。需要考慮的是模塊的長度;目前RSA實驗室建議普通公司使用的密鑰大小應該是1024位,對於極其重要的資料,則加倍大小,即2048位。對於日常使用來說,768位的密鑰長度就足夠了,因為使用當前的技術無法輕易破解。保護數據的成本總是需要結合數據的價值以及破壞保護的成本是否過高來考慮。RSA實驗室提到了最近關於RSA密鑰長度安全的研究,該研究基於1995中可用的因式分解技術。這項研究表明,用八個月的努力和不到壹百萬美元,分解512位的密鑰是可能的。事實上,在1999中,作為傳統RSA安全挑戰的壹部分,分解壹個特定的RSA 512數字(稱為RSA-155)需要七個月的時間。
請記住:對於所提供的安全範圍,這裏給出的所有數字都是平均值,有時更快地識別特定的私鑰也很重要。同樣,所提供的安全性假設是基於素數的因式分解,這是非常困難的。如果發現壹種新的數學技術可以讓因式分解變得簡單,這種假設就會改變,然後RSA和類似算法提供的安全性可能會立刻變得壹文不值。
另外請註意,增加密鑰長度會影響加密/解密的速度,所以有壹個權衡。模數翻倍會使使用公鑰的運算時間增加4倍左右,而使用私鑰加密/解密所需的時間會增加8倍。此外,當模數加倍時,生成密鑰的時間將平均增加到16倍。如果計算能力繼續快速提升,而事實上非對稱密碼通常用於短文本,這在實際應用中不是問題。
其他非對稱密碼系統
以其開發者命名的ElGamal系統基於離散對數問題,具有加密和簽名變體,而數字簽名算法(DSA)部分基於ElGamal。該系統看起來像RSA壹樣安全,但它通常較慢,加密期間擴展消息所需的時間是RSA的兩倍。這些限制不影響該算法在簽名中的使用。
其他系統包括1978年首次發表的Merkle-Hellman背包密碼系統,1984年首次發表的Chor-裏維斯特密碼系統及其1988年的修訂版。此外,澳洲和新西蘭也發展了LUC公開密碼匙系統。McEliece公鑰加密算法基於代數編碼理論,使用壹類稱為Goppa碼的糾錯碼。這些代碼提供了快速解碼,但使用的密鑰大小約為半萬億,並且消息文本在加密過程中也大大擴展了。
20世紀80年代中期提出了壹種更先進的公鑰密碼系統,稱為橢圓曲線密碼系統,現在已經引起了人們的興趣。這些系統基於代數幾何中的數值理論和數學構造,並且通常定義在有限域上。雖然這些方案使用短的密鑰長度,但是它們似乎可以提供與現有系統類似的安全性,並且壹些方案在移動計算或基於智能卡的系統中可能特別有用。RSA實驗室提出,密鑰長度為160比特的橢圓曲線密碼系統可以提供與密鑰長度為1024比特的RSA幾乎相同的安全性。但問題是,橢圓曲線密碼體制對於壹些尚未充分發展的特殊攻擊可能是脆弱的。