“ RSA加密算法是一種非對稱加密算法,目前被廣泛應用。本文介紹RSA算法的基本原理和破解方法。”
RSA在互聯網上被廣泛應用,典型的如各個網站的證書。
很多應用數據的加密也是使用RSA。
本文介紹RSA算法的原理,並介紹其破解方法和工具。
01
—
RSA算法原理
RSA加密算法是一種非對稱加密算法,它能抵抗目前絕大多數密碼攻擊。RSA算法基於以下事實:
兩個大素數相乘十分容易,但是對其乘積進行因式分解卻極其困難,因此,RSA的安全性取決於對極大整數做因數分解的難度。
RSA加密體制中,有兩個密鑰,即一個公鑰,一個私鑰,它們組成一對密鑰,公鑰用來加密,私鑰用來解密,公鑰被公開,私鑰要藏好了,如果私鑰泄漏或者被爆破,則這對密鑰就基本沒用了。
加密的一般過程為:
02
—
公鑰和私鑰
RSA公鑰與私鑰的生成過程如下:
隨機選定兩個大素數p, q。
計算公鑰和私鑰的公共模數 n = pq。
計算模數n的歐拉函數φ(n)=lcm(p-1,q-1).(即最小公倍數) 。
選定一個正整數e,使1 < e < φ(n) , 且e與φ(n)互質。
計算e關於φ(n)的模反元素d, 滿足de ≡ 1 (mod φ(n) ). (計算方法de=xφ(n) +1)。
公鑰為(e,n),私鑰為(n,d)。
RSA成立的條件依賴於如下等式:
03
—
加密與解密
加密和解密的過程如下:
Bob先把X轉換為一個大數m < n, 再用Alice的公鑰(e,n)把m加密為另一個大數:
Alice收到Bob發來的大數c, 進行解密。 通過自己的私鑰(p,q,d)得到大數m:
再把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官方提供的實驗結果如下:
實際上,如果服務器夠多,CPU夠多,破解速度會更快。
當然,對協議分析而言,如果需要爆破,則這個數不會小,我推薦的爆破工具肯定就是CADO-NFS啦。
如果在RSA爆破過程中需要獲取幫助,可以留言找我進行了解。
掃我關注。