公鑰密碼算法簡介
公鑰密碼算法在加密和解密中使用一對不同的密鑰,其中一個密鑰公開,稱為公鑰,寧一個密鑰保密,稱為私鑰,且由公鑰求解私鑰計算是不可行的的。顧名思義,公鑰是公開的。
RSA公鑰密碼體制
簡介
是迄今為止理論上最為成熟完善的公鑰密碼體制。也是目前廣泛應用的公鑰密碼體制。RSA的基礎是數論的歐拉定理,他的安全性依賴於大整數因子分解的困難。
數學知識補充
互質
如兩個正整數,除了1之外就沒有其他公因子,就稱這兩個正整數是互質的。而且並沒有要求這兩個正整數都是質數,如15和4就是互質的。
歐拉函數
是求小於x並且和x互質的數的個數。其通式為φ(x) = x(1-1/p1)(1-1/p2)...(1-1/pₙ),其中p1,p2..pn為x的所有質因數,x為不為零的整數。
比如x=16時φ(16) = 16 * (1-1/2) = 8
我們也可以列舉與16互質,且小於16的數: 1,3,5,7,9,11,13,15,個數為8個
而在RSA求密鑰對中就需要用到歐拉函數的一個性質,即如果p是素數的話,φ(p)=p-1。
模反元素
如果兩個正整數a和b互質,那么一定可以找到整數n,使得ab-1被n整除,或者說ab被n整除的余數是1。一般在已知其中一個整數假如是a和整數n的情況下,求另一個整數b的運算就是模反運算。
其解法包括朴素算法,輾轉相除法,歐幾里得算法。
RSA生成公鑰私鑰對
-
選取兩個不同的大素數p和q
-
計算n=p*q,並計算n的歐拉函數φ(n)=(p-1)(q-1),也就是求小於n且與n互質的數。
-
隨機選取正式e<Z,1<e<φ(n)作為公鑰之一,且要滿足e與φ(n)互質。
-
采用模反算法計算私鑰d,使ed=1(modφ(n)),也就是d=e⁻¹(modφ(n)),也就是(ed-1)能被φ(n)整除
-
得到公鑰(e,n)和私鑰d
加密過程
RSA的加密函數很簡單,對於明文m,公鑰(e,n),E(m)=mᵉ(modn)
解密過程
RSA的解密過程也很簡單移動,對於密文c,私鑰d,D(c)=cᵈ(modn)
使用流程