密碼學RSA學習筆記

2021-10-03 18:57:33 字數 2352 閱讀 4278

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

n1​n2​

n3​)算出。由rsa可知,m比模數小,因此m

3

n2n3

m^3 < n_1n_2n_3

m3​n2​

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​=

\times

×(q-1 mod p) 和xq=

x_q=

xq​=

\times

×(p-1 mod q)。由crt得 m=(

vpxp

+vqx

q)

m=(v_px_p +v_qx_q)

m=(vp​

xp​+

vq​x

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演算法的乘法同態特性 rsa第一次在r.l.rivest,a.shamir和l.adleman的1978年的 a method for obtaining digital signatures and public key cryptosystems 中,作為一種新的數字...

密碼學之RSA加密

最近在學習網易公開課上可汗學院現代密碼學的課程,整理了一下自己的筆記3 rsa加密 非對稱金鑰,公開金鑰演算法 rsa加密利用了單向函式正向求解很簡單,反向求解很複雜的特性。具體是利用了 1.對兩個質數相乘容易,而將其合數分解很難的這個特點進行的加密演算法。n p1 p2,已知p1 p2求n簡單,已...

密碼學之RSA加密

最近在學習網易公開課上可汗學院現代密碼學的課程,整理了一下自己的筆記3 rsa加密 非對稱金鑰,公開金鑰演算法 rsa加密利用了單向函式正向求解很簡單,反向求解很複雜的特性。具體是利用了 1.對兩個質數相乘容易,而將其合數分解很難的這個特點進行的加密演算法。n p1 p2,已知p1 p2求n簡單,已...