现阶段世界上最重要的算法RSA的数学原理摘要

目前世界上最重要的算法RSA的数学原理摘要

1至6是从阮一峰的博文(见参考链接)中抽出来的,算是自己理解这个算法的一个记录吧。


1、欧拉函数φ(n):小余等于n的正整数中,与n互质的数的个数


2、欧拉定理:如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:a^φ(n) ≡ 1(mod n)
导出费马小定理: 假设正整数a与质数p互质,因为p为质数,φ(p)=p-1,则欧拉定理可以写成a^(p-1) ≡ 1(mod p)


3、模反元素:如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
欧拉定理可以用来证明模反元素必然存在:a^φ(n) = a*a^[φ(n)-1] ≡ 1(mod n),可以看到,a^[φ(n)-1],就是a的模反元素。


4、推论:随机质数p、q,p*q = n,  φ(n) = (p-1)*(q-1),  随机选择一个整数e,  1 < e < φ(n),且e与φ(n)互质,计算e对于φ(n)的模反元素d,使得 ed ≡ 1 (mod φ(n))。这种条件下,如果正整数m<n且m^e≡c(mod n),一定有c^d≡m(mod n)。   【这条推论才是实际RSA应用的基础,证明见参考链接二】


5、加解密应用:

1)使用公钥(n,e)加密明文m(m<n):从m^e≡c(mod n)计算出c.

2)使用私钥(n,d)解密密文c:从c^d≡m(mod n)计算出m.


6、可靠性分析:

在只公开公钥(n,e)的情况下,计算d需要知道φ(n),继而需要知道p、q,而由p、q知道n很容易,但是n分解成p、q很难,所以p、q足够大时暂时还未被破解。


千言万语汇成一句话:p q , n = p*q , ed = 1 (mod φ(n)) , m^e ≡ c (mod n) => c^d ≡ m (mod n)


7、实际应用中的补足(Padding)和算法性能优化:

补足待补充;

优化:实际应用中,e比较小,求得的d比较大。解密时计算c^d比较慢。根据中国剩余定理,c^d mod n = c^d mod (p*q)  =  (c^dp mod p) *( c^dq mod q), dp = d mod (p-1) ,dq = d mod (q-1)


参考链接:

1、http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
2、http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
3、http://en.wikipedia.org/wiki/RSA_(cryptosystem)
4、http://blog.sciencenet.cn/home.php?mod=space&uid=287179&do=blog&id=391134