RSA加密算法破解及原理


 RSA加密算法是一種非對稱加密算法,目前被廣泛應用。本文介紹RSA算法的基本原理和破解方法。



RSA在互聯網上被廣泛應用,典型的如各個網站的證書。


0?wx_fmt=png


很多應用數據的加密也是使用RSA。


本文介紹RSA算法的原理,並介紹其破解方法和工具。




01




RSA算法原理



RSA加密算法是一種非對稱加密算法,它能抵抗目前絕大多數密碼攻擊。RSA算法基於以下事實:


兩個大素數相乘十分容易,但是對其乘積進行因式分解卻極其困難,因此,RSA的安全性取決於對極大整數做因數分解的難度。


RSA加密體制中,有兩個密鑰,即一個公鑰,一個私鑰,它們組成一對密鑰,公鑰用來加密,私鑰用來解密,公鑰被公開,私鑰要藏好了,如果私鑰泄漏或者被爆破,則這對密鑰就基本沒用了。


加密的一般過程為:

0?wx_fmt=png






02


公鑰和私鑰


RSA公鑰與私鑰的生成過程如下:


  1. 隨機選定兩個大素數p, q。

  2. 計算公鑰和私鑰的公共模數 n = pq。

  3. 計算模數n的歐拉函數φ(n)=lcm(p-1,q-1).(即最小公倍數) 。


  4. 選定一個正整數e,使1 < e < φ(n) , 且e與φ(n)互質。

  5. 計算e關於φ(n)的模反元素d, 滿足de ≡ 1 (mod φ(n) ). (計算方法de=xφ(n) +1)。

  6. 公鑰為(e,n),私鑰為(n,d)。


RSA成立的條件依賴於如下等式:

  

0?wx_fmt=png



03


加密與解密


在RSA中,Bob想給Alice發一個消息X,Alice公鑰為(e,n),私鑰為(n,d)。

加密和解密的過程如下:

  1. Bob先把X轉換為一個大數m < n, 再用Alice的公鑰(e,n)把m加密為另一個大數: 


    0?wx_fmt=png

  2. Alice收到Bob發來的大數c, 進行解密。 通過自己的私鑰(p,q,d)得到大數m: 

    0?wx_fmt=png

  3. 再把m轉換為X, Alice即得到Bob的原始消息,轉換方法二人提前約定。





04


RSA暴力破解


RSA暴力破解,簡單理解,就是根據公鑰(e,n)獲取私鑰(n,d)的方法。


對一個RSA證書來說,公鑰是公開的,e及n值可以使用openssl庫進行獲取,重要的是模數n值,假設公鑰文件問pub.pem,則模數n值其獲取命令如下:


openssl rsa -in pub.pem -pubin -modulus -noout



RSA爆破就是對大數n值使用工具分解成pq的過程,得到pq,就得到了d。


RSA爆破,是根據數學原理,按數學步驟進行一步步計算,不是使用openssl這類通用的工具進行的,具體的步驟,太專業了,這里不做描述。


目前,RSA-220 即729位的數,已經有破解成功的案例。對RSA-155即512位的數,使用服務器集群很快就能得到結果。而對RSA-1024而言,已經不夠安全了,所以現在SSL證書都升級到了2048位。


在互聯網大發展的時代,最幸福的是,目前已經有很多開源的爆破工具供我們使用。



05


RSA爆破工具


RSA爆破的工具有很多,如:CADO-NFS,ggnfs,MSIEVE,yafu、sage等,還有在線破解的網站如cocalc.com。

有的工具可以在Linux,有的可以在Windows下使用。在線破解工具則是大伙玩的,實用性有限。

在爆破工具的選擇上,如果需要分解的數字不大,可以使用yafu等工具,如果需要爆破的是大數,則需要使用CADO-NFS這類Linux平台下可以並行運算的爆破工具。

CADO-NFS官方提供的實驗結果如下:

0?wx_fmt=png

實際上,如果服務器夠多,CPU夠多,破解速度會更快。

當然,對協議分析而言,如果需要爆破,則這個數不會小,我推薦的爆破工具肯定就是CADO-NFS啦。


如果在RSA爆破過程中需要獲取幫助,可以留言找我進行了解。


0?wx_fmt=jpeg

掃我關注。







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM