RSA加密算法是目前最有影響力的公鑰加密算法,并且被普遍認為是目前最優秀的公鑰方案之一。RSA是第一個能同時用于加密和數宇簽名的算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標準。
RSA加密算法基于一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。在這種加密模式下,只要私鑰不公開,通信就是安全的。
RSA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。為提高保密強度,RSA密鑰一般使用1024位,這就使加密的計算量很大。為減少計算量,常采用傳統加密方法與公開密鑰加密方法相結合的方式傳送信息。即數據信息采用改進的DES或IDEA密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方收到數據信息后,用不同的密鑰解密并可核對信息摘要。
RSA的基本原則
RSA算法一直是最廣為使用的"非對稱加密算法"。這種算法非常可靠,加密的密鑰越長,它就越難被破解。根據披露的文獻,目前被破解的最長RSA密鑰是768個二進制位。也就是說,長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。
RSA的數學原理
1、互質關系:兩個數a和b沒有除1外的其他公約數,則a與b互質。
2、求歐拉函數:與正整數n互質且小于正整數n的正整數的個數。
3、歐拉定理:正整數a與n互質,則a^ψ(n) ≡1(mod n)恒成立,即:a的ψ(n)次冪除以n,余數恒為1。
RSA的特點
1、便于理解,使用廣泛。是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。
2、缺點與不足:加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
RSA的安全性
RSA的安全性依賴于大數據的分解,但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在一種無須分解大數的算法,那它肯定可以修改成為大數分解算法,RSA 的一些變種算法已被證明等價于大數分解。
對極大整數做因數分解的難度決定了RSA算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA算法愈可靠。假如有人找到一種快速因數分解的算法的話,那么用RSA加密的信息的可靠性就肯定會極度下降。
RSA的應用
到目前為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。常用在企業的云數據安全、服務器數據安全、銀行的用戶數據安全等領域。