RSA算法数学原理及其在HTTPS中的应用

本文在阅读不少他人的优秀博文以及查阅HTTPS协议和RSA等相关资料的基础上整理而成,包含了RSA算法的详细原理及其在HTTPS中的应用。RSA作为HTTPS协议中最为核心的加密/解密算法,其原理却很简单,很容易理解。当你读完本文之后,你也会惊叹于RSA算法发明者的奇思妙想。

首先,RSA的密钥越长,就越难破解。目前被破解的最长RSA密钥是768位二进制。也就是说,长度超过768位的密钥,还无法破解(至少没有人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥及其安全。下面就让我们来认识RSA算法。

##一、互质关系
如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。关于互质关系,有如下结论:

  • 1、任意两个质数构成互质关系,如13和61;
  • 2、一个数是质数,另一个数只要不是前者的倍数,则两者构成互质关系;
  • 3、如果两个数之中,较大的那个数是质数,则两者构成互质关系,如97和57;
  • 4、1和任意一个自然数都是互质关系,比如1和99;
  • 5、p是大于1的整数,则p和p-1构成互质关系,如57和56;
  • 6、p是大于1的奇数,则p和p-2构成互质关系,如17和15。
    ##二、中国余数定理
    原本RSA算法和中国余数定理没有什么直接的联系,但即将介绍的欧拉函数的证明需要用到中国余数定理,固在这里先行介绍一下。
    中国余数定理:给出 m m m个两两互质的整数,且它们的乘积为 P P P。假设有一个未知数 M M M,如果我们已知 M M M分别除以这 m m m个数所得的余数,那么在0到 P − 1 P-1 P1的范围内,我们可以唯一地确定这个 M M M。这个值可以看作是 M M M的一个特解。其它所有满足条件的 M M M,则正好是那些除以 P P P之后余数等于这个特解的数。

从某种角度来说,中国余数定理几乎是显然的。让我们以两个比较小且互质的整数3和4来理解中国余数定理背后的直觉。其中 x   m o d   y x \bmod y xmody表示 x x x除以 y y y的余数。

中国余数定理的理解

从表中可以看到, i   m o d   3 i \bmod 3 imod3的值以3位周期在循环,而 i   m o d   4 i\bmod 4 imod4则以4为周期在循环。由于3和4是互质的,它们的最小公倍数为12,因而 ( i   m o d   3 ,   i   m o d   4 ) (i\bmod 3,\space i\bmod 4) (imod3, imod4)的循环周期是12,不会更短。因此,当 i i i从0增加到11时, ( i   m o d   3 ,   i   m o d   4 ) (i\bmod 3,\space i\bmod 4) (imod3, imod4)的值始终没有重复出现。同时, ( i   m o d   3 ,   i   m o d   4 ) (i\bmod 3,\space i\bmod 4) (imod3, imod4)也只有12种不同的取值,即当 i i i从0增加到11时, ( i   m o d   3 ,   i   m o d   4 ) (i\bmod 3,\space i\bmod 4) (imod3, imod4) i i i之间存在一一映射。这就是中国余数定理的内容。

##三、欧拉函数
请思考以下问题:任意给定正整数 n n n,请问在小于等于 n n n的正整数中,有多少个与 n n n构成互质关系?

计算这个值的方法就叫做欧拉函数,以 φ ( n ) \varphi(n) φ(n)表示。在1~8中,与8形成互质关系的是1,3,5,7,所以 φ ( 8 ) = 4 \varphi(8)=4 φ(8)=4

φ ( n ) \varphi(n) φ(n)的计算方法并不复杂,但为了得到最后的公式,我们需要分以下五种情形讨论:

  • 第一种情况:

    n = 1 n=1 n=1,则 φ ( 1 ) \varphi(1) φ(1)=1,因为1与任何数(包括自身)构成互质关系。

  • 第二种情况:

    n n n是质数,则 φ ( n ) = n − 1 \varphi(n)=n-1 φ(n)=n1。因质数与小于它的每一个数都构成互质关系。

  • 第三种情况

    如果 n n n是质数的某个次方,即 n = p k n=p^k n=pk p p p为质数, k k k为大于等于1的整数),则 φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ(pk)=pkpk1。这是因为只有当一个数的因子不包含质数 p p p,才能与 n n n互质。而因子包含质数 p p p的数一共有 p k − 1 p^{k-1} pk1个( 1 × p , 2 × p , … , p k − 1 × p 1\times p,2\times p,\ldots,p^{k-1}\times p 1×p2×ppk1×p),把它们去除,剩下的就是与 n n n互质的数。
    上面的式子还可以写成 φ ( p k ) = p k ( 1 − 1 p ) \varphi(p^k)=p^k(1-\frac{1}{p}) φ(pk)=pk(1p1)。可以看出,第二种情况是第三种情况中 k = 1 k=1 k=1的特例。

  • 第四种情况

    如果 n n n可以分解成两个互质的整数之积,即 n = p 1 ⋅ p 2 n=p_1\cdot p_2 n=p1p2,则 φ ( n ) = φ ( p 1 ⋅ p 2 ) = φ ( p 1 ) ⋅ φ ( p 2 ) \varphi(n)=\varphi(p_1 \cdot p_2)=\varphi(p_1)\cdot\varphi(p_2) φ(n)=φ(p1p2)=φ(p1)φ(p2),比如 φ ( 56 ) = φ ( 8 × 7 ) = φ ( 8 ) ⋅ φ ( 7 ) = 4 × 6 = 24 \varphi(56)=\varphi(8\times7)=\varphi(8)\cdot\varphi(7)=4\times6=24 φ(56)=φ(8×7)=φ(8)φ(7)=4×6=24

    其实这条结论用“中国余数定理“就很好理解了。简单说下思路:如果 a a a p 1 p_1 p1互质( a < p 1 a<p_1 a<p1), b b b p 2 p_2 p2互质( b < p 2 b<p_2 b<p2), c c c p 1 p 2 p_1p_2 p1p2互质( c < p 1 p 2 c<p_1p_2 c<p1p2),则 c c c与数对 ( a , b ) (a,b) (a,b)是一一对应关系。由于 a a a φ ( p 1 ) \varphi(p_1) φ(p1)种可能, b b b的值有 φ ( p 2 ) \varphi(p_2) φ(p2)种可能,则数对 ( a , b ) (a,b) (a,b) φ ( p 1 ) φ ( p 2 ) \varphi(p_1)\varphi(p_2) φ(p1)φ(p2)种可能。而 c c c的值有 φ ( p 1 ) φ ( p 2 ) \varphi(p_1)\varphi(p_2) φ(p1)φ(p2)种可能,所以 φ ( n ) = φ ( p 1 ⋅ p 2 ) = φ ( p 1 ) ⋅ φ ( p 2 ) \varphi(n)=\varphi(p_1 \cdot p_2)=\varphi(p_1)\cdot\varphi(p_2) φ(n)=φ(p1p2)=φ(p1)φ(p2)

    补充说明:我们还可以证明一种更加特殊的情况:如果 n n n可以分解为两个质数之积,即 n = p 1 × p 2 n=p_1\times p_2 n=p1×p2 p 1 p_1 p1

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值