目录
-
基本概念
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。——维基百科
-
原理
-
数论中的四个概念
1.互质关系:
如果两个正整数,除了1以外没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,6和21他们的公因子有:3和1,所以6和21就不是互质;而10和21只有一个公因子1,所以它们是互质关系。这说明,不是质数也可以构成互质关系。
有以下几点可构成互质关系:
- 任意两个质数构成互质关系;
- 1和任意一个自然数是都是互质关系;
- p是大于1的整数,则p和p-1构成互质关系;
- p是大于1的奇数,则p和p-2构成互质关系;
- 如果两个数之中,较大的那个数是质数,则两者构成互质关系;
- 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系;
2.欧拉函数:
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?计算这个值的方法就叫做欧拉函数,以φ(n)表示。
- 如果n=1,则 φ(1) = 1。因为1与任何数(包括自身)都构成互质关系
- 如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。
- 如果n是质数的某一个次方,即 n = pk (p为质数,k为大于等于1的整数),则φ(pk)=pk-pk-1。
因为只有当一个数不包含质数p,才可能与n互质。而包含质数p的数一共有pk-1个,即1×p、2×p、3×p、…、p^(k-1)×p,把它们去除,剩下的就是与n互质的数。
上面的式子还可以写成下面的形式:
φ(pk)=pk-pk-1=pk(1-1p)
可以看出,此种情况是k=1时的特例。
- 如果n可以分解成两个互质的整数之积,n = p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)。即:积的欧拉函数等于各个因子的欧拉函数之积。
- 因为任意一个大于1的正整数,都可以写成一系列质数的积,n=pk11pk22…pkrr,根据第4条的结论,得到:φ(n)=φ(pk11) φ(pk22)…φ(pkrr),再根据第3条的结论,得到:φ(n)= pk11pk22…pkrr(1-1p1
) (1-1p2
)…(1-1pr
),也就等于
φ(n)= n(1-1p1) (1-1p2
)…(1-1pr
)
这就是欧拉函数的通用计算公式。
3.欧拉定理:
“欧拉定理”指的是:如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:
aφ(n)≡1(mod n)
也就是说,a的φ(n)次方被n除的余数为1。
取模运算与取余运算的区别:取余的商是靠近0的,而取模的
商是靠近负无穷的。
欧拉定理是RSA算法的核心。
4.模反元素:
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1
ab≡1(mod n)
这时,b就叫做a的“模反元素”。
如果b是a的模反元素,则b+kn都是a的模反元素。
欧拉定理可以用来证明模反元素必然存在。
aφ(n)=a×aφ(n)-1≡1(mod n)
可以看到,a的φ(n)-1次方,就是a的模反元素。
-
RSA
RSA密钥生成过程:
六步生成密钥:
- 随机选择两个不相等的质数p和q;
- 计算p和q的乘积n;
n的长度就是密钥长度。实际应用中,RSA密钥一般是二进制1024位,重要场合则为二进制2048位。
- 计算n的欧拉函数φ(n);
- 随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质;
- 计算e对于φ(n)的模反元素d;
- 将n和e封装成公钥,n和d封装成私钥。
RSA算法一共生成了六个数字:p、q、n、φ(n)、e、d。这六个数字之中,公钥用到了两个(n和e),其余四个不公开。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。
ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d
φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)
n=pq。只有将n因数分解,才能算出p和q
因此,如果n可以被因数分解,d就可求,即私钥被破解。
RSA加解密:
- 加密:明文m,me≡c(mod n),得到密文c;
- 解密:密文c,cd≡m(mod n),解密出明文m。
RSA公式论证:因篇幅原因略。
-
应用
IOS App签名;
HTTPS 加密连接;
利用OpenSSL库对Socket传输进行安全加密(RSA+AES)。