RSA算法詳解

1.RSA加密算法是最經常使用的非對稱加密算法算法

2.RSARSA以它的三個發明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,安全

3.目前學術界沒法證實RSA算法的絕對正確性,可是也沒法證實否認它的安全性,所以偏偏說明該算法有至關的可信性。函數

4.RSA原理基於大數分解的難度,其公鑰和私鑰是一對大素數對的函數,從一個公鑰和密文恢復出明文的難度,等價於分解兩個大素數之積(這是公認的數學難題)工具

5.具體的加密,解密,流程性能

RSA的公鑰、私鑰的組成,以及加密、解密的公式可見於下表:編碼

 

須要明確的概念:加密

素數:便是質數,p,q必須互爲質數(好比,5,7)spa

同餘運算:,級C(mod n)= M^e(mod n)設計

6.應用舉例數學

假設用戶A須要將明文「key」經過RSA加密後傳遞給用戶B,過程以下:

a.取兩個較大的素數p,q

這裏咱們爲了簡單起見,取p=3,q=11,(固然若是實際應用中,p,q都是幾百位以上的大素數

b.計算n=p×q 和f(n)=(p-1)×(q-1)

令p=3,q=11,得出n=p×q=3×11=33;

f(n)=(p-1)(q-1)=2×10=20;

c.肯定公鑰e 和私鑰 d

取公鑰e=3,(3與20互質)則e×d≡1 mod f(n),即3×d≡1 mod 20, 同餘運算。

私鑰 d怎樣取值呢?能夠用試算的辦法來尋找,這裏簡單起見能夠用這種方法,實際中確定是用大型計算機(加密機計算)。試算結果見下表:

經過試算咱們找到,當d=7時,e×d≡1 mod f(n)同餘等式成立。所以,可得出私鑰爲d=7。從而咱們能夠設計出一對公私密鑰,加密密鑰(公鑰)爲:KU =(e,n)=(3,33),解密密鑰(私鑰)爲:KR =(d,n)=(7,33)。

此時咱們就已經獲得了一對公私鑰(e,d)和大素數積n(n=p×q,可是p,q要絕對保密)

2)英文數字化。

將明文信息數字化,並將每塊兩個數字分組。假定明文英文字母編碼表爲按字母順序排列數值,即:

 則獲得分組後的key的明文信息爲:11,05,25。

3)明文加密

用戶加密密鑰(3,33) 將數字化明文分組信息加密成密文。由C≡M^e(mod n)得:

 C1 mod 33=11^3 mod (33)=11     =>  C1=11

C2 mod 33=5^3 mod (33)=26        =>C2=26

C3 mod 33=25^3 mod (33)=16      =>C3=16 

所以可獲得加密後的密文爲 11 26 16

4)密文解密。

 用解密密鑰(7,33)將受到的密文解密成明文,M≡C^d(mod n)

M1 mod 33 = 11^7 mod(33) =11    => M1=11

M2 mod 33 =26^7 mod(33)= 5       =>M2=5

M3 mod 33 = 16^7 mod (33) =25    =>M3=25

可看法密出的明文與原來的一致,整個RSA加解密過程結束

固然,實際運用要比這複雜得多,因爲RSA算法的公鑰私鑰的長度(模長度)要到1024位甚至2048位才能保證安全,因此,p、q、e的選取、公鑰私鑰的生成,加密解密模指數運算都有必定的計算程序,須要仰仗計算機高速完成。

在RSA密碼應用中,公鑰KU是被公開的,即e和n的數值能夠被第三方竊聽者獲得。破解RSA密碼的問題就是從已知的e和n的數值(n等於pq),想法求出d的數值,這樣就能夠獲得私鑰來破解密文。從上文中的公式:d ≡e-1 (mod((p-1)(q-1)))或de≡1 (mod((p-1)(q-1))) 咱們能夠看出。密碼破解的實質問題是:從Pq的數值,去求出(p-1)和(q-1)。換句話說,只要求出p和q的值,咱們就能求出d的值而獲得私鑰。

當p和q是一個大素數的時候,從它們的積pq去分解因子p和q,這是一個公認的數學難題。好比當pq大到1024位時,迄今爲止尚未人可以利用任何計算工具去完成分解因子的任務。所以,RSA從提出到如今已近二十年,經歷了各類攻擊的考驗,逐漸爲人們接受,廣泛認爲是目前最優秀的公鑰方案之一。

然而,雖然RSA的安全性依賴於大數的因子分解,但並無從理論上證實破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是沒法從理論上把握它的保密性能如何。

此外,RSA的缺點還有:A)產生密鑰很麻煩,受到素數產生技術的限制,於是難以作到一次一密。B)分組長度太大,爲保證安全性,n 至少也要 600 bits 以上,使運算代價很高,尤爲是速度較慢,較對稱密碼算法慢幾個數量級;且隨着大數分解技術的發展,這個長度還在增長,不利於數據格式的標準化。所以,使用RSA只能加密少許數據,大量的數據加密還要靠對稱密碼算法。

相關文章
相關標籤/搜索