RSA加密原理详解

RSA加密的核心其实是欧拉定理,通过这个定理得到了这种非对称加密算法

一、算法介绍

找到两个素数 p p p q q q,并计算 n = p q n=pq n=pq
找到 ( d , φ ( n ) ) (d,\varphi(n)) (d,φ(n)),即 d d d φ ( n ) \varphi(n) φ(n)互质,其中 0 < d < φ ( b ) 0<d<\varphi(b) 0<d<φ(b) φ ( n ) \varphi(n) φ(n)为欧拉函数,是指 < n <n <n且与 n n n互质的正整数的个数
因为 n = p q n=pq n=pq,所以 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p1)(q1),也就是说 d d d ( p − 1 ) ( q − 1 ) (p-1)(q-1) (p1)(q1)互质
再找到 0 < e < φ ( n ) 0<e<\varphi(n) 0<e<φ(n)使得 d e ≡ 1 ( m o d   φ ( n ) ) de\equiv1(mod\space\varphi(n)) de1(mod φ(n)),即 d e de de除以 φ ( n ) \varphi(n) φ(n)余数为1
那么形成秘钥对 ( n , d ) (n,d) (n,d) ( n , e ) (n,e) (n,e),分别是私钥和公钥
使用秘钥对 ( n , x ) (n,x) (n,x)加密的方法为 f ( a , n , x ) = a x ( m o d   n ) f(a,n,x)=a^x(mod\space n) f(a,n,x)=ax(mod n),解密为同一函数
那么就可以用公钥加密私钥解密或用私钥加密公钥解密,即
B = f ( A , n , d ) B=f(A,n,d) B=f(A,n,d) A = f ( B , n , e ) A=f(B,n,e) A=f(B,n,e)
但细心的人会发现,知道 n n n就知道了 φ ( n ) \varphi(n) φ(n),结合 d d d就可以算出 e e e,这样知道公钥就知道私钥
其实,RSA加密的核心就在于 p p p q q q的选择,这两个质数一定要选择的很大,相乘容易,分解难
所以破解往往长达数月( n n n的长度为512和七百多的RSA已经被成功破解)
所以现在 n n n的长度至少为1024,有很多是2048

二、欧拉定理

n n n x x x为正整数, ( x , n ) = 1 (x,n)=1 (x,n)=1,则有 x φ ( n ) ≡ 1 ( m o d   n ) x^{\varphi(n)}\equiv1(mod\space n) xφ(n)1(mod n),这就是欧拉定理,下面简单的证明一下
构造 m o d n mod n modn的既约剩余系(不懂的同学们看第三块)
设为 a 1 , a 2 , . . . , a φ ( n ) a_1,a_2,...,a_{\varphi(n)} a1,a2,...,aφ(n),并找一个与 n n n互质的数 x x x,根据既约剩余系的积不变性(见第三块),有
既约剩余系 x a 1 , x a 2 , . . . , x a φ ( n ) xa_1,xa_2,...,xa_{\varphi(n)} xa1,xa2,...,xaφ(n)的积与上述既约剩余系的积 m o d   n mod\space n mod n同余
a 1 , a 2 , . . . , a φ ( n ) a_1,a_2,...,a_{\varphi(n)} a1,a2,...,aφ(n)的积为 k k k,那么第二个既约剩余系的乘积为 k x φ ( n ) kx^{\varphi(n)} kxφ(n)
则有 k ≡ k x φ ( n ) ( m o d   n ) k\equiv kx^{\varphi(n)}(mod\space n) kkxφ(n)(mod n),而因为 a i a_i ai n n n互质,所以 k k k n n n互质,所以两边同时除去 k k k
x φ ( n ) ≡ 1 ( m o d   n ) x^{\varphi(n)}\equiv 1(mod\space n) xφ(n)1(mod n),得证!

三、既约剩余系

设有正整数 n n n,找到 r r r的集合,其中 1 ≤ r ≤ n 1\le r\le n 1rn ( r , n ) = 1 (r,n)=1 (r,n)=1
设这个集合为 r 1 , r 2 , . . . , r k {r_1,r_2,...,r_k} r1,r2,...,rk,那么根据欧拉函数的定义, k = φ ( n ) k=\varphi(n) k=φ(n)
对于一个 φ ( n ) φ(n) φ(n)元正整数集合,如果对其每一个元素 m o d   n mod\space n mod n后得到的集合与上述集合相等
那么称这个集合为 m o d   n mod\space n mod n的既约剩余系
而根据上述定义,所有 m o d   n mod\space n mod n的既约剩余系 m o d   n mod\space n mod n的性质类似
显然,任何两个 m o d   n mod\space n mod n的既约剩余系的和与积 m o d   n mod\space n mod n同余(因为每个元素对应 m o d   n mod\space n mod n同余)
所以既约剩余系有和不变性积不变性

四、总结

RSA加密算法是通过欧拉定理得到的,该算法的安全性来源于大数分解质因数的困难,在选取 p p p q q q的时候要尽可能的大一些
RSA因为涉及到大数运算,甚至包括幂运算,所以速度比对称加密算法慢得多,一般用于加密对称加密的较短秘钥

你可能感兴趣的:(RSA加密原理详解)