版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

RSA算法

百度百科
原創(chuàng)
全球最大中文百科全書
收藏

簡介

RSA算法是一種非對稱加密算法,與對稱加密算法不同的是,RSA算法有兩個不同的密鑰,一個是公鑰,一個是私鑰。10

RSA公開密鑰密碼體制是一種使用不同的加密密鑰與解密密鑰,“由已知加密密鑰推導(dǎo)出解密密鑰在計算上是不可行的”密碼體制2。

在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然解密密鑰SK是由公開密鑰PK決定的,但卻不能根據(jù)PK計算出SK2。

正是基于這種理論,1978年出現(xiàn)了著名的RSA算法,它通常是先生成一對RSA密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網(wǎng)絡(luò)服務(wù)器中注冊。為提高保密強(qiáng)度,RSA密鑰至少為500位長。這就使加密的計算量很大。為減少計算量,在傳送信息時,常采用傳統(tǒng)加密方法與公開密鑰加密方法相結(jié)合的方式,即信息采用改進(jìn)的DES或IDEA對話密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息后,用不同的密鑰解密并可核對信息摘要2。

RSA是被研究得最廣泛的公鑰算法,從提出后經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。1983年麻省理工學(xué)院在美國為RSA算法申請了專利3。

RSA允許選擇公鑰的大小。512位的密鑰被視為不安全的;768位的密鑰不用擔(dān)心受到除了國家安全管理(NSA)外的其他事物的危害;RSA在一些主要產(chǎn)品內(nèi)部都有嵌入,像 Windows、網(wǎng)景 Navigator、 Quicken和 Lotus Notes3。

由于RSA算法1024位密鑰面臨嚴(yán)重的安全威脅,為保障電子認(rèn)證服務(wù)安全應(yīng)用,2016年12月5日,上海市密碼管理局在其官方網(wǎng)站上發(fā)布公告,稱從2017年1月1日起停止提供RSA算法1024位密鑰對服務(wù),并配合電子認(rèn)證服務(wù)機(jī)構(gòu)和應(yīng)用單位做好應(yīng)對措施,確保平穩(wěn)過渡。

算法原理

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

算法描述

RSA算法的具體描述如下:5

(1)任意選取兩個不同的大素數(shù)p和q計算乘積5;

(2)任意選取一個大整數(shù)e,滿足 ,整數(shù)e用做加密鑰(注意:e的選取是很容易的,例如,所有大于p和q的素數(shù)都可用)5;

(3)確定的解密鑰d,滿足 ,即 是一個任意的整數(shù);所以,若知道e和,則很容易計算出d5;

(4)公開整數(shù)n和e,秘密保存d5;

(5)將明文m(m<n是一個整數(shù))加密成密文c,加密算法為5

(6)將密文c解密為明文m,解密算法為5

然而只根據(jù)n和e(注意:不是p和q)要計算出d是不可能的。因此,任何人都可對明文進(jìn)行加密,但只有授權(quán)用戶(知道d)才可對密文解密5。

安全性

RSA的安全性依賴于大數(shù)分解,但是否等同于大數(shù)分解一直未能得到理論上的證明,也并沒有從理論上證明破譯。RSA的難度與大數(shù)分解難度等價。因為沒有證明破解RSA就一定需要做大數(shù)分解。假設(shè)存在一種無須分解大數(shù)的算法,那它肯定可以修改成為大數(shù)分解算法,即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學(xué)界多數(shù)人士傾向于因子分解不是NPC問題6。

目前,RSA的一些變種算法已被證明等價于大數(shù)分解。不管怎樣,分解n是最顯然的攻擊方法。現(xiàn)在,人們已能分解140多個十進(jìn)制位的大素數(shù)。因此,模數(shù)n必須選大些,視具體適用情況而定6。

RSA算法的保密強(qiáng)度隨其密鑰的長度增加而增強(qiáng)。但是,密鑰越長,其加解密所耗用的時間也越長。因此,要根據(jù)所保護(hù)信息的敏感程度與攻擊者破解所要花費(fèi)的代價值不值得以及系統(tǒng)所要求的反應(yīng)時間來綜合考慮,尤其對于商業(yè)信息領(lǐng)域更是如此6。

運(yùn)算速度

由于進(jìn)行的都是大數(shù)計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟件還是硬件實現(xiàn)。速度一直是RSA的缺陷。一般來說只用于少量數(shù)據(jù)加密。RSA的速度比對應(yīng)同樣安全級別的對稱密碼算法要慢1000倍左右7。

算法攻擊

迄今為止,對RSA的攻擊已經(jīng)很多,但都沒有對它構(gòu)成真正的威脅。在這里,討論一些典型的攻擊方法8。

選擇密碼攻擊

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

小指數(shù)攻擊

當(dāng)公鑰e取較小的值,雖然會使加密變得易于實現(xiàn),速度有所提高,但這樣做也是不安全的。最簡單的辦法就是e和d都取較大的值8。

因為密鑰的產(chǎn)生受素數(shù)產(chǎn)生技術(shù)的限制,所以也有它的局限性8。

(1)密鑰的產(chǎn)生受素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密8;

(2)分組長度太大,為保證安全性,n至少也要600比特以上,使運(yùn)算代價很高,尤其是速度較慢,比對稱密碼算法慢幾個數(shù)量級;隨著大整數(shù)素因數(shù)分解算法的改進(jìn)和計算機(jī)計算能力的提高,對n的長度在不斷增加,不利于實現(xiàn)數(shù)據(jù)格式的標(biāo)準(zhǔn)化8。

內(nèi)容資源由項目單位提供