RSA演算法及其數學原理
1 金鑰和公鑰生成過程
- 隨機找出兩個不同的質數(越大越好)p,q。
- n=p*q,根據尤拉函式,有
- 隨機找出一個數e,使
- 計算e對於模反元素d,即找出d,使
- (e,n)為公鑰,(d,n)為金鑰
2 加密和解密過程
假設待加密資料為m(必須小於n,如果大於,採用分段加密方式解決)。
加密資料:
解密密文:
3 數學基礎
3.1 同餘定理
如果兩個整數a和b,(a-b)能被m整除,則a和b被m除的餘數相同,記做
如果有,則
同餘定理性質:
性質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,則
3.3 費馬小定理
假如p是質數,且gcd(a,p)=1,即a,p互質,那麼
3.4 尤拉定理和尤拉函式
如果兩個正整數a和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的整數),則
比如 φ(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互質的數。
上面的式子還可以寫成下面的形式:
可以看出,上面的第二種情況是 k=1 時的特例。
- 第四種情況
如果n可以分解成兩個互質的整數之積,
n = p1 × p2
則
φ(n) = φ(p1p2) = φ(p1)φ(p2)
即積的尤拉函式等於各個因子的尤拉函式之積。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。
4 加密原理數學證明
證明加密的數學原理正確,需要證明:
當密文采用計算方法:,則資料可以通過密文和金鑰解出:
其中n=p*q,p,q為不相同的兩個隨機質數,m為需要加密的資料,m滿足m<n
由,根據同餘定理知
代入得
根據同餘定理:
因為kn帶有n因子,所以只能
整除n
所以需要證明
因為(d為e對於模反元素)
所以需要證明:
a 如果m與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;而一個質數,另一個不為它的倍數,這兩個數為互質數)
由尤拉定理得:
根據冪同餘定理:
即:
根據模反元素的定義
所以:
根據同餘定理:
兩邊同時除於m
左邊為整數,m和q互質,則t必然包含因子m,即
所以
所以
得證