rsa加密算法的安全性分析
1. 數(shù)據(jù)。
數(shù)據(jù)在計(jì)算機(jī)中,其實(shí)就是字節(jié)串。
將被加密的數(shù)據(jù),分割成一定長度的數(shù)據(jù)塊,每一塊就是一個bit串。
將這個比特串,看成一個二進(jìn)制整數(shù)——以d表示
2. 密鑰
RSA算法是非對稱算法,因此使用兩個密鑰:
一個是公鑰,用于加密——以e表示,
一個是私鑰,用于解密——以p表示。
另外,還需要用到一個整數(shù)N,他是算法中進(jìn)行模數(shù)運(yùn)算時的底數(shù)。
一般來說,為了保證安全性,密鑰長度應(yīng)在1024-bit以上。
總之,e、p、N,這三項(xiàng)數(shù)據(jù),決定一次具體的加解密活動。
同被加密數(shù)據(jù)d一樣,e、p、N,這三個東東,也都是整數(shù)。
e、N,是對外公開的。而p則不對外公開。
3. 加解密
a)加密
c = d^e mod N /* d的e次方模上N,得到c,即加密后的數(shù)據(jù)*/
b)解密
d = c^p mod N /* c的p次方模上N,得到d,即原始數(shù)據(jù)*/
4. 安全性
RSA算法的安全在于,e、p、N,是隨機(jī)生成的。
知道e和N,想尋找p,在計(jì)算上是不可行的。
問題是,我們使用的軟件工具,生成這些隨機(jī)材料時,真的是“隨機(jī)”的嗎?
如果算法的提供者留下什么后門,或者提前做了什么準(zhǔn)備工作,人家看到e和n,或許就能有辦法得到p呢。
2、RSA加密算法的描述RSA算法是一個基于初等數(shù)論定理的公鑰密碼體制加密算法,它的實(shí)現(xiàn)過程為:選取2個大素?cái)?shù)p與q,然后算出n=pq,φ(n)=n-p-q+1,再選取一個正整數(shù)e,使之滿足(e,φ(n))=1,1《E《Φ(N);再求出正整數(shù)D,使之滿足1《D,而密鑰是。明文消息m滿足0≤m
例 取2個質(zhì)數(shù)p=11,q=13,p和q的乘積為n=p&TImes;q=143,算出φ(n)=n-p-q+1=120;再選取一個與φ(n)互質(zhì)的數(shù),例如e=7,則公開密鑰=n,e=143,7.
對于這個e值,用歐幾里德擴(kuò)展算法可以算出其逆:d=103.因?yàn)閑&TImes;d=7&TImes;103=721,滿足e&TImes;d mod z =1;即721 mod 120=1成立。則秘密密鑰=n,d=143,103,
設(shè)發(fā)送方需要發(fā)送機(jī)密信息(明文)m=85,發(fā)送方已經(jīng)從公開媒體得到了接收方的公開密鑰n,e=143,7,于是發(fā)送方算出加密后的密文c= me mod n=857 mod 143=123并發(fā)送給接收方。
接收方在收到密文c=123后,利用只有他自己知道的秘密密鑰計(jì)算m= cd mod n =123103 mod 143=85,所以,接收方可以得到發(fā)送方發(fā)給他的真正信息m=85,實(shí)現(xiàn)了解密。
用RSA體制加密時,先將明文數(shù)字化再進(jìn)行加密,在實(shí)際應(yīng)用中m值的長度一般要遠(yuǎn)大于n的長度,因此實(shí)際加密消息m時,首先將它分成比n小的數(shù)據(jù)分組(采用二進(jìn)制數(shù),選取小于n的2的最大次冪),再每組單獨(dú)加密和解密。比如說,選用的p和q為100位的素?cái)?shù),那么n將有200位,每個數(shù)據(jù)分組應(yīng)小于200位長,但為保證安全性,每個數(shù)據(jù)的長度應(yīng)盡量接近n的長度。