RSA加密算法是第一个能同时用于消息传输和数字签名的算法,是目前被研究和使用最广泛的加密算法。
多素数RSA加密算法
基本原理
1.密钥生成阶段
Step 1. 随机选择多个数值不同的强素数 p 1 , p 2 , ⋯ p n p_1,p_2,\cdots p_n p1,p2,⋯pn;
Step 2.计算模数 N = p 1 × p 2 ⋯ × p n N = p_1\times p_2\cdots \times p_n N=p1×p2⋯×pn;
Step 3. 计算模数 N N N的欧拉函数 φ ( N ) = ( p 1 − 1 ) × ( p 2 − 1 ) ⋯ × ( p n − 1 ) \varphi(N)=(p_1-1)\times (p_2-1)\cdots \times (p_n-1) φ(N)=(p1−1)×(p2−1)⋯×(pn−1);
Step 4. 随机选取一个正整数 e e e作为公钥,公钥满足尽可能大, 1 < e < φ ( N ) 1 < e < \varphi(N) 1<e<φ(N)且 g c d ( e , φ ( N ) ) = 1 gcd(e,\varphi(N))=1 gcd(e,φ(N))=1;
Step 5. 根据 e d ≡ 1 ( m o d φ ( N ) ) ed\equiv 1(mod\ \varphi(N)) ed≡1(mod φ(N)),求得 e e e关于 φ ( N ) \varphi(N) φ(N)的模逆元素,即,私钥 d d d。
在密钥生成过程结束后,可获得公钥 ( e , N ) (e,N) (e,N)和私钥 ( d , N ) (d,N) (d,N)。将公钥发送给所有需要进行通讯的对象,保密 p 1 , p 2 , ⋯ p n p_1,p_2,\cdots p_n p1,p2,⋯pn和 φ ( N ) \varphi(N) φ(N)。私钥由持有者保管好,防止泄露造成攻击。
2.明文消息 M M M加密阶段
C = M e m o d N C = M^e\ mod\ N C=Me mod N
3.密文消息 C C C解密阶段
M = C d m o d N M = C^d\ mod\ N M=Cd mod N
效率分析
运用多素数RSA加密算法进行解密时需要进行 s s s次指数长度为 n / s n/s n/s bit位的指数运算。传统RSA加密算法再使用BR算法计算时时间复杂度为 O ( l o g ( d ) l o g 2 ( n ) ) O(log(d)log^2(n)) O(log(d)log2(n)), 当 d d d很大与 n n n同数量级时,复杂度可以认为是 O ( l o g 3 ( n ) ) O(log^3(n)) O(log3(n))。在效率提高的倍数为: α = l o g 3 ( n ) / l o g 3 ( n / s ) \alpha=log^3(n)/log^3(n/s) α=log3(n)/lo