RSA算法(RSA加密算法)

RSA算法

RSA加密算法一般指本詞條

RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。

基本介紹

  • 中文名:RSA加密算法
  • 外文名:RSA algorithm
  • 提出者:Ron Rivest、Adi Shamir、Leonard Adleman
  • 提出時間:1977年
  • 適用領域計算機,網路安全
  • 套用學科:密碼學、計算機學
簡介,算法原理,算法描述,安全性,運算速度,算法攻擊,RSA的選擇密碼攻擊,RSA的小指數攻擊,

簡介

RSA公開密鑰密碼體制是一種使用不同的加密密鑰與解密密鑰,“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。
在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然解密密鑰SK是由公開密鑰PK決定的,但卻不能根據PK計算出SK。
正是基於這種理論,1978年出現了著名的RSA算法,它通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網路伺服器中註冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常採用傳統加密方法與公開密鑰加密方法相結合的方式,即信息採用改進的DES或IDEA對話密鑰加密,然後使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息後,用不同的密鑰解密並可核對信息摘要。
RSA是被研究得最廣泛的公鑰算法,從提出到現在已近三十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。1983年麻省理工學院在美國為RSA算法申請了專利。
RSA允許你選擇公鑰的大小。512位的密鑰被視為不安全的;768位的密鑰不用擔心受到除了國家安全管理(NSA)外的其他事物的危害;1024位的密鑰幾乎是安全的。RSA在一些主要產品內部都有嵌入,像 Windows、網景 Navigator、 Quicken和 Lotus Notes。
RSA算法

算法原理

RSA公開密鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。

算法描述

RSA算法簽乘的具體描述如下:
(1)任意選取兩個不同的大素數p和q計算乘積
(2)任意選取一個大整數e,滿足
,整數e用做加密鑰(注意:e的選取是很容易的,例如,所有大於p和q的素數都可用);
(3)確定的解密鑰d,滿足
,即
是一個腿體境任意的整數;所以,若知道e和
,則很容易計算出d;
(4)公開整數n和e,秘密保存d;
(5)將明文m(m<n是一個整數)加密成密文c,加密算法為
(6)將密文c解密為明文m,解密算法為
然而只根據n和e(注意:不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密。

安全性

RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理論上的證明,也並沒有從理論上證明破譯。RSA的難度與大數分解難度等價。因為沒有證明破解RSA就一定需要做大數分解。假設存在一種無須分解大數的算法,那它肯定可以修改成為大數分解算法,即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人海尋束士傾向於因子分解不是NPC問題。
目前,RSA的一些變種算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解140多個十進制位的大素數。因此,模數n必須選大些,視具體適用情況而定。
RSA算法的保密強度隨其密鑰的長度增加而增強。但是,密鑰越長,其加解密所耗用的時間也越長。因此,要根據所保護信息的敏感程度與攻擊者破解所要花費的代價值不值得以及系統所要求的反應時間來綜合考慮,尤其對於商業信息領域更是如此。

運算速度

由於進行的都是大數計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據加密。RSA的速度比對應同樣安全級別的對稱密碼算法要慢1000倍左右。

算法攻擊

迄今為止,悼喇局對RSA的攻擊已經很多,但都沒有對它構成真正的威脅。在這裡,我們討論一些典型的攻擊方法。

RSA的選擇密碼攻擊

RSA在選擇密碼攻擊面前顯得很脆弱。一般攻擊者是將某一信息進行下偽裝,讓擁有私鑰的實體簽名;然後,經過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了去騙迎墊輸入的乘法結構。前面已經提到,這個固有的問題來自於公鑰密碼系統的最基本的特徵,即每個人都能使用公鑰加密信息。從算法上無法解決這一問題,改進措施糊體妹有兩條:是採用好的公鑰協定保證工作過程中實體不對其他實體任意產生的信息解密,不對自己一無所知的信息簽名;二是決不對陌生人送來的隨機文檔簽名,或簽名時首先汗匙提格對文檔作Hash處理,或同時使用不同的簽名算法。

RSA的小指數攻擊

當公鑰e取較小的值,雖然會使加密變得易於實現,速度有所提高,但這樣做也是不安全的。最簡單的辦法就是e和d都取較大的值。
因為密鑰的產生受素數產生技術的限制,所以也有它的局限性。
(1)密鑰的產生受素數產生技術的限制,因而難以做到一次一密;
(2)分組長度太大,為保證安全性,n至少也要600比特以上,使運算代價很高,尤其是速度較慢,比對稱密碼算法慢幾個數量級;隨著大整數素因數分解算法的改進和計算機計算能力的提高,對n的長度在不斷增加,不利於實現數據格式的標準化。
目前,RSA的一些變種算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解140多個十進制位的大素數。因此,模數n必須選大些,視具體適用情況而定。
RSA算法的保密強度隨其密鑰的長度增加而增強。但是,密鑰越長,其加解密所耗用的時間也越長。因此,要根據所保護信息的敏感程度與攻擊者破解所要花費的代價值不值得以及系統所要求的反應時間來綜合考慮,尤其對於商業信息領域更是如此。

運算速度

由於進行的都是大數計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據加密。RSA的速度比對應同樣安全級別的對稱密碼算法要慢1000倍左右。

算法攻擊

迄今為止,對RSA的攻擊已經很多,但都沒有對它構成真正的威脅。在這裡,我們討論一些典型的攻擊方法。

RSA的選擇密碼攻擊

RSA在選擇密碼攻擊面前顯得很脆弱。一般攻擊者是將某一信息進行下偽裝,讓擁有私鑰的實體簽名;然後,經過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了輸入的乘法結構。前面已經提到,這個固有的問題來自於公鑰密碼系統的最基本的特徵,即每個人都能使用公鑰加密信息。從算法上無法解決這一問題,改進措施有兩條:是採用好的公鑰協定保證工作過程中實體不對其他實體任意產生的信息解密,不對自己一無所知的信息簽名;二是決不對陌生人送來的隨機文檔簽名,或簽名時首先對文檔作Hash處理,或同時使用不同的簽名算法。

RSA的小指數攻擊

當公鑰e取較小的值,雖然會使加密變得易於實現,速度有所提高,但這樣做也是不安全的。最簡單的辦法就是e和d都取較大的值。
因為密鑰的產生受素數產生技術的限制,所以也有它的局限性。
(1)密鑰的產生受素數產生技術的限制,因而難以做到一次一密;
(2)分組長度太大,為保證安全性,n至少也要600比特以上,使運算代價很高,尤其是速度較慢,比對稱密碼算法慢幾個數量級;隨著大整數素因數分解算法的改進和計算機計算能力的提高,對n的長度在不斷增加,不利於實現數據格式的標準化。

相關詞條

熱門詞條

聯絡我們