密码学算法——RSA
密碼學算法——RSA
- RSA算法
- RSA算法由來
- RSA算法關鍵細節
- RSA公私鑰計算細節
- RSA加密細節
- RSA解密細節
- RSA算法安全瓶頸
- RSA算法的乘法同態特性
RSA算法
RSA第一次在R.L. Rivest,A. Shamir和L. Adleman的1978年的論文《A method for obtaining digital signatures and public key cryptosystems》中,作為一種新的數字簽名和公鑰密碼學算法提出,RSA分別取三位作者姓氏首字母組成。
形象解釋可參看:如何深入淺出地講解RSA密碼?
RSA算法由來
RSA算法是非對稱加密算法中的重要組成成員之一,其主要安全壁壘在于兩個大素數乘積的因式分解難度。
RSA算法關鍵細節
RSA公私鑰計算細節
RSA算法的關鍵流程為:
1)p,q:任意的兩個素數(保密,不對外泄露)
2)n:=pq(對外已知,與e一起組成公鑰)
3)d:1~n-1之間的隨機數(僅對密鑰所有者已知,實際即為私鑰)
4)e:滿足de≡1(mod (p-1)*(q-1)) (對外已知,與n一起組成公鑰)
RSA非對稱加密算法中的公鑰為(e,n),私鑰為d。其中的素數p和q應對任何人均不可知。
RSA加密細節
通過公鑰(e,n)對消息m(m值的范圍為0~n-1)進行加密,
加密后的消息c(c值的范圍為0~n-1)為:
c=E(m):=(me)%n
RSA解密細節
通過私鑰對密文c進行解密:
D( c):=(cd)%n
具體解密實現的數學依據為:
∵ cd ≡ (me%n)d ≡ med(mod n)
∵ de ≡ 1(mod (p-1)(q-1))
∴ med(mod n) ≡ m(mod n)
∵ c值的范圍為0~n-1
∵ m值的范圍為0~n-1
∴ D( c) = m
通過私鑰d對密文c進行解密可成功獲取相應的明文m。
RSA算法安全瓶頸
RSA算法的安全性依賴于n的因式分解難度,使得根據公鑰e無法計算破解得到私鑰d,若n易于因式分解,則可知p和q,由e獲取私鑰d則很容易,整個RSA算法的安全性將無法保證。
RSA算法的乘法同態特性
RSA加密算法具有的乘法同態特性,依賴于其E加密算法數學特征:
E(x)E(y) ≡ xeye ≡ (xy)e ≡ E(xy)
這種同態特性可在零知識證明中發揮作用,即無需暴露x和y的具體值,prover證明者僅通過發送加密的信息a=E(x)、b=E(y)和c=E(xy),verifier驗證者僅需驗證確認(a*b)%n ≡ c%n成立,即可說明prover發送的是兩個數值及其相應乘積。
參考資料:
[1] 1978年論文《A Method for Obtaining Digital Signatures and Public-Key Cryptosystems》
總結
以上是生活随笔為你收集整理的密码学算法——RSA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: System.Reflection.Re
- 下一篇: 巨头们的盈利之道:药店的这个营销方法,其