RSA安全性問題


加密:C=Me(mod n)

解密:M=Cd(mod n)

 

安全性基礎:

 

窮舉法攻擊:

1.攻擊者設計一個M,C=Me(mod n)

2.d的個數至多有n-1個,嘗試使用每個d破解,如果M’=Cd‘(mod n)=M,d’是解

3.設p,q分別為100位(十進制),則n-1約200位(十進制)   n=10200

4.假定每秒可以做一億次搜索(108),每年可以搜索108*60*60*24*365=3*1015

搜索10200個密鑰的時間為100200/(3*1015)=3*1015=10184

計算上不可行。

 

分析RSA鎖結構

d=e-1mod (Φ(n))  即 de=1 mod (Φ(n))

問題為:已知e,Φ(n)未知,求d

 

如果Φ(n)知道,則求d就很容易了

問題變為:已知n,求Φ(n)

 

求法1:直接求,當n很大,計算Φ(n)很困難,不可行

求法2:利用n=pq,(p,q是素數),Φ(n)=(p-1)(q-1)計算很容易

 

問題變為:已知n,求n=pq,(p,q是素數) 即數的素分解問題

 

素因子分解的復雜性:

目前因子分解速度最快的方法的時間復雜度是exp(sqrt(ln n lnln n))

2007年3個機構(EPFL,波恩大學,日本電話電報公司)設計的計算機集群成功分解307位十進制的數21039-1

所以說RSA的安全性依賴於分解大數的難度?數學上還未能證明只有分解大數n才能從C和e中計算出M(即RSA的安全性與大數分解等價)。所以說上面的說法只是一個假定,不過目前為止也未能證明它的錯誤。

 

即便無法有效破解RSA算法,但還有一些別的辦法是針對協議進行攻擊的。

A竊聽B的通訊,獲得c=me mod n,A的目標是解出m

1.A選一個r,計算x=re mod n (即r=xd mod n)

2.計算y=xc mod n

3.計算t=r-1 mod n

4.A讓B在y上簽名,u=yd mod n

5.A計算 tu mod n=r-1yd mod n

         =r-1xd cd mod n

         =r-1red cd mod n

         =cd mod n = m

問題出現在B對不明信息簽名。

怎么解決:從算法上無法解決,主要措施是采用好的公鑰協議

1.工作過程中實體不輕易對其他實體任意產生的信息加解密,不對一無所知的信息簽名

2.對其他實體送來的隨機文檔簽名時首先對文檔作HASH處理

 

還有其他一些問題:

1.如果p,q比較接近

2.系統采用公共模數,n一直不變

這樣的系統在數學上被證明更容易被破解。

 

尋找合適的素數:

1.尾數除法,取一數p,用2到該數的平方根之間的每一個素數去除該數,如果都不能整除,該數就是素數。

2.Fermat方法

3.Lehmann測試法

4.Miller-Rabin測試法

...


免責聲明!

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



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