rsa簡介
已知大數n=pq。p和q為素數。ϕ
\phi
ϕ(n) = (p-1)(q-1)。選擇乙個小於ϕ
\phi
ϕ(n)並互素的數字e。公鑰為。ed ≡
\equiv
≡ 1 mod ϕ
\phi
ϕ(n)。d是e關於ϕ
\phi
ϕ(n)的逆元。得出私鑰。
設明文為m,密文為c。使用公鑰加密,則有
c ≡m
ec \equiv m^e
c≡me
mod n。
傳輸到達接收方後,使用私鑰解密,有
m ≡c
dm \equiv c^d
m≡cd
mod n。 即m≡(
me)d
m \equiv (m^e)^d
m≡(me)
d mod n。
用公鑰進行有效運算
公鑰是公開的,因此可以選定特定的值來加快rsa在使用公鑰時的速度。大多數選擇e為65537=216 + 1。另外兩個常用值為3和17。這些數字的二進位制含1的位只有兩位,方便計算。但如果指數太小了,如e=3,rsa會遭受到簡單的攻擊。
假設有三個使用者都選擇e=3,他們三個的公鑰為,
,。剛好湊巧,n1,
n2,n
3n_1,n_2,n_3
n1,n2
,n3
兩兩互素,這是很有可能發生的。這時乙個使用者a,使用公鑰加密的方式給他們三個人傳送了相同的訊息m。三個密文分別是
c 1≡
m3
c_1 \equiv m^3
c1≡m3
mod n
1n_1
n1,c2≡
m3
c_2 \equiv m^3
c2≡m3
mod n
2n_2
n2,c3≡
m3
c_3 \equiv m^3
c3≡m3
mod n
3n_3
n3。這時,我們使用中國剩餘定理,就可以將m
3m^3
m3mod (n1n
2n
3n_1n_2n_3
n1n2
n3)算出。由rsa可知,m比模數小,因此m
3 n2n3 m^3 < n_1n_2n_3 m3n2 n3,那麼攻擊者只需計算m的三次方根。 用私鑰進行有效運算 私鑰,選取數值較小的d,容易遭受窮舉攻擊;選取數值較大的d,會影響計算效率。那麼如何改進計算過程,就成為了提高解密效率的關鍵。運用中國剩餘定理是個不錯的方法。 我們可以知道解密過程是 m≡c dm \equiv\ c^d m≡cd mod n。我們先定義一些中間結果。vp= cd v_p = c^d vp=cd mod p和vq= cd v_q = c^d vq=cd mod p。 定義x p= x_p = xp= q× \times ×(q-1 mod p) 和xq= x_q= xq= p× \times ×(p-1 mod q)。由crt得 m=( vpxp +vqx q) m=(v_px_p +v_qx_q) m=(vp xp+ vqx q) mod n。雖然加快了一些,但注意到vp和 vq v_p和v_q vp和vq ,還是要計算cd。 我們可以使用費馬定理加快這一步。我們知道有式子ap≡ \equiv ≡ a mod p。 在式子v pv_p vp中,我們知道有[cd]p ≡ \equiv ≡ cd mod p。有dp = d(p-1)+d,故dp ≡ \equiv ≡ d mod (p-1)。從而v pv_p vp=cdmod(p-1) mod p。同理 v qv_q vq=cdmod(q-1) mod q。並且d mod (p-1)與d mod (q-1)可以預先計算出來。與直接計算m≡c dm \equiv c^d m≡cd mod n相比,這個方法快得多。 rsa演算法安全瓶頸 rsa演算法的乘法同態特性 rsa第一次在r.l.rivest,a.shamir和l.adleman的1978年的 a method for obtaining digital signatures and public key cryptosystems 中,作為一種新的數字... 最近在學習網易公開課上可汗學院現代密碼學的課程,整理了一下自己的筆記3 rsa加密 非對稱金鑰,公開金鑰演算法 rsa加密利用了單向函式正向求解很簡單,反向求解很複雜的特性。具體是利用了 1.對兩個質數相乘容易,而將其合數分解很難的這個特點進行的加密演算法。n p1 p2,已知p1 p2求n簡單,已... 最近在學習網易公開課上可汗學院現代密碼學的課程,整理了一下自己的筆記3 rsa加密 非對稱金鑰,公開金鑰演算法 rsa加密利用了單向函式正向求解很簡單,反向求解很複雜的特性。具體是利用了 1.對兩個質數相乘容易,而將其合數分解很難的這個特點進行的加密演算法。n p1 p2,已知p1 p2求n簡單,已...密碼學演算法 RSA
密碼學之RSA加密
密碼學之RSA加密