1. 程式人生 > >RSA演算法及其數學原理

RSA演算法及其數學原理

1 金鑰和公鑰生成過程

  • 隨機找出兩個不同的質數(越大越好)p,q。
  • n=p*q,根據尤拉函式,有\varphi (n)=(p-1)(q-1)
  • 隨機找出一個數e,使1<e<\varphi (n)
  • 計算e對於\varphi (n)模反元素d,即找出d,使ed\equiv 1(mod\ \varphi (n))
  • (e,n)為公鑰,(d,n)為金鑰

2 加密和解密過程

假設待加密資料為m(必須小於n,如果大於,採用分段加密方式解決)。

加密資料:\large c\equiv m^{e}(mod\ n)

解密密文:\large m\equiv c^{d}(mod\ n)

3 數學基礎

3.1 同餘定理

如果兩個整數a和b,(a-b)能被m整除,則a和b被m除的餘數相同,記做

如果有\left (a-b \right )| m,則a\equiv b (mod\ b)

同餘定理性質:

性質1:a≡a(mod m),(反身性)
這個性質很顯然.因為a-a=0=m·0。
性質2:若a≡b(mod m),那麼b≡a(mod m),(對稱性)。
性質3:若a≡b(mod m),b≡c(mod m),那麼a≡c(mod m),(傳遞性)。
性質4:若a≡b(mod m),c≡d(mod m),那麼a±c≡b±d(mod m),(可加減性)。
性質5:若a≡b(mod m),c≡d(mod m),那麼ac≡bd(mod m)(可乘性)。
性質6:若a≡b(mod m),那麼an≡bn(mod m),(其中n為自然數)。
性質7:若ac≡bc(mod m),(c,m)=1,那麼a≡b(mod m),(記號(c,m)表示c與m的最大公約數)。
性質8:若a≡b(mod m),那麼a的n次方和b的n次方也對於m同餘。
性質9:若a≡b(mod m)、c≡d(mod m)、e≡f(mod m)……x≡y(mod m)

3.2 冪同餘定理(同餘定理可乘性)

根據:

同餘定理可乘性:

若a≡b(mod m),c≡d(mod m),那麼ac≡bd(mod m)

另c=a,d=b,則

\bg_black \large a*a*a...a = \equiv b*b*b...b(mod\ p) => a^{k}\equiv b^{k}(mod\ p)

3.3 費馬小定理

假如p是質數,且gcd(a,p)=1,即a,p互質,那麼 a^{p-1}\equiv 1\left ( mod\ p \right )

3.4 尤拉定理和尤拉函式

如果兩個正整數a和n互質,則:

\bg_black \LARGE a^{\varphi (n)}\equiv 1(mod\ n)

其中φ(n)稱為n的尤拉函式,代表小於等於n的正整數之中,有多少個與n構成互質關係。

φ(n) 的計算方法分為四種情況:

  • 第一種情況

如果n=1,則 φ(1) = 1 。因為1與任何數(包括自身)都構成互質關係。

  • 第二種情況

如果n是質數,則 φ(n)=n-1 。因為質數與小於它的每一個數,都構成互質關係。比如5與1、2、3、4都構成互質關係。

當n為質數時,則尤拉定理退化為費馬小定理,即費馬小定理是尤拉定理的特殊情況。

  • 第三種情況

如果n是質數的某一個次方,即 n = p^k (p為質數,k為大於等於1的整數),則

\LARGE \varphi (p^{k})=p^{k}-p^{k-1}

比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。

這是因為只有當一個數不包含質數p,才可能與n互質。而包含質數p的數一共有p^(k-1)個,即1×p、2×p、3×p、...、p^(k-1)×p,把它們去除,剩下的就是與n互質的數。

上面的式子還可以寫成下面的形式:

\LARGE \varphi (p^{k})=p^{k}-p^{k-1}=p^{k}(1-\frac{1}{p})

可以看出,上面的第二種情況是 k=1 時的特例。

  • 第四種情況

如果n可以分解成兩個互質的整數之積,

n = p1 × p2

φ(n) = φ(p1p2) = φ(p1)φ(p2)

即積的尤拉函式等於各個因子的尤拉函式之積。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。

4 加密原理數學證明

證明加密的數學原理正確,需要證明:

當密文采用計算方法:\large c\equiv m^{e}(mod\ n),則資料可以通過密文和金鑰解出:\large m\equiv c^{d}(mod\ n)

其中n=p*q,p,q為不相同的兩個隨機質數,m為需要加密的資料,m滿足m<n

\large c\equiv m^{e}(mod\ n),根據同餘定理知

\LARGE c=m^{e}+kn

代入\large m\equiv c^{d}(mod\ n)

\bg_black \LARGE m\equiv (m^{e}+kn)^{d}(mod\ n)

根據同餘定理:

\LARGE m^{ed}-m +(kn)^{d}=hn

因為kn帶有n因子,所以只能

\bg_black \LARGE m^{ed}-m整除n

所以需要證明

\LARGE m^{ed}\equiv m(mod\ n)

因為(d為e對於\varphi (n)模反元素)

\LARGE ed\equiv 1(mod\ \varphi (n))

所以需要證明:

\LARGE m^{y\varphi (n)+1}\equiv m(mod\ n)

a 如果m與n互質,根據尤拉定理:

\LARGE m^{\varphi(n)} \equiv 1(mod\ n)

又冪同餘定理得和同餘定理乘法定理得:

\LARGE (m^{\varphi(n)})^{y}*m \equiv 1^{y} * m (mod\ n)

\LARGE m^{y\varphi (n)+1}\equiv m(mod\ n)

得證。

b 如果m和n不是互質關係

因為m<n,m和n不是互質關係,又n=pq,p,q都為質數,

所以m必然包含p或q因子,即

m=kp或m=kq

假定m=kp,m必然與q互質(不可能同時包含因子p和因子q,否則必然不可能小於n=pq;而一個質數,另一個不為它的倍數,這兩個數為互質數)

由尤拉定理得:

\LARGE m^{q-1} \equiv 1 (mod\ q)

根據冪同餘定理:

\bg_black \LARGE (m^{q-1})^{y(p-1)}*m \equiv m (mod\ q)

即:

\LARGE m^{y\varphi(n)+1} \equiv m (mod \ q)

根據模反元素的定義

\LARGE ed=y*\varphi(n)+1

所以:

\LARGE m^{ed} \equiv m (mod \ q) 

根據同餘定理:

\LARGE m^{ed}=tq+m

兩邊同時除於m

\LARGE m^{ed-1}=\frac{tq}{m}+1

左邊為整數,m和q互質,則t必然包含因子m,即

\LARGE t=t'm

所以

\LARGE m^{ed} =t'mq+m = t'kpq+m=t'kn+m

所以

\LARGE m^{ed} \equiv m(mod\ n)

得證