RSA 算法图解+数学证明

目录

1. RSA交互流程

2. RSA的加密

3. RSA的解密

4. RSA求解E、D、N流程

5. RSA数学证明


1. RSA交互流程

我下面以使用最为广泛的RSA算法(三位发明者名字的缩写)为例来介绍公钥密码的原理,并通过数学公式做一个简要的证明。当然这个需要的数学定理和公式有点多,我也不太擅长高等数学┭┮﹏┭┮,哦,高等数学中也没有讲mod运算呀,它是数论的概念,也是数论里的最重要的工具

2. RSA的加密

RSA的加密过程可以通过一个公式来表示:

加密过程中用到了两个数:E, N。他们是什么呢?

从上面的加密公式可以看出,加密报文只需要知道E,N便可以完成,因此只需要知道这两个数字,任何人都可以完成加密操作,因此我们将(EN)称之为加密密钥

不同于对称加密中的复杂操作,将数据加、减、乘、除、异或,拆来拆去,挪来挪去,揉来揉去等等,复杂的简直不要不要滴。而RSA只是将明文做了E个乘方运算,然后再取余,简洁而不失优美。

3. RSA的解密

RSA解密流程同加密流程一样简洁,可以使用下面的公式表达:

也就是说我们求出密文的D次方,然后对N求余便可以实现报文的解密。而这里的(D,N)就是解密密钥。

从上面可以看出:

RSA加解密的数学形式完全相同:

  • 加密是“求E次方,然后mod N”;
  • 解密是“求D次方,然后mod N”;

可以说是相当的美妙。

这里的D,E在数学上必须满足一定关系才行,否则无法对报文进行解密。 那么应该满足D,E什么关系呢?

这里先抛开mod运算,但就指数运算做一个类似说明,后面在详细的进行证明:

因此需要滿足D·E=1。即D, E互为倒数。

如果加上mod运算,原理差不多,只不过条件是:D·E mod N = 1。 即D,E 模N互为倒数

4. RSA求解EDN流程

通过上文已经知道:RSA加密是求“E次方的mod N”, 解密则是求“D次方的mod N”。这里用到了三个数:E,D,N, 他们是如何得到的呢?

RSA密钥对的生成步骤如下:

(1)求N

(2)求Φ(Φ仅仅密钥对的生成过程中使用)

(3)求E

(4)求D

下面对每一个步骤做一个详细的讲解说明:

1)求N

首先准备两个很大的质数p,q。

p, q 太小的话,容易被暴力破解,太大的话计算量也会相应的增大,一般p,q选取512比特,N是1024比特。p,q一般都是借助于伪随机数生成器,然后判断生成的数是否为质数,如果不是则重新使用伪随机数生成器生成另外一个测试,如此往复,直到找到质数为止。(注:这里判断一个数是否为质数,不是将其进行因式分解,数学上有较为简单的判断方法)。

将准备好的两个大质数相乘,其结果就是N。即:

2)求Φ

Φ在RSA加解密的过程中都不会用到,它只出现在生成密钥对的过程中。

在数论中Φ(v)用来表示变量v的欧拉函数,它表示[1, v-1]范围内那些与v互质(最大公约数为1)的正整数的个数。

下面说两个定理:

定理①

定理②

只解释下定理①:如果一个数n为质数,那么说明n在[1,n]范围内,除了1和它本身没有另外的公约数,也就是说在[1,n-1]范围内,所有的数与n的最大公约数为1,即互质,因此欧拉函数的值(互质的个数)就是n-1,即:

3)求E

E是一个介于(1,Φ(N))之间的正整数。此外E,N互质,即E与Φ(N)的最大公约数(greatest common divisor)为1。

用公式表示就是:

要找出一个满足gcd⁡(E, ΦN=1) 的数,依然需要借助随机数生成器。我们可以利用辗转相除法来计算两个数的最大公约数。

为了保证在解密报文时,一定存在一个与E对应的D(数论中的一个定理)

4)求D

D要求与E具有一一对应关系,那么具体D,E,Φ之间有什么关系呢?

只要D, E, ΦN满足上述条件,那么通过(E,N)加密的报文,一定可以通过(D,N)来解密。

D×E modΦN=1  存在的关键在于,EN互质。这便是在(3)中求解E时,要求两者互质的原因

至此,D,E,N已经全部计算得出,重新整理下他们之间的关系:

(1)求N

随机数生成两个大质数p,q,则N=p ×q

(2)  Φ(N)

N的欧拉函数:Φ(N)=(p−1)(q−1)

(3)求E

(4)求D

图解RSA如下:

5. RSA数学证明

符号约定:明文m; 密文c。

已知条件:

其中:

涉及到的数学定理:

定理一:Euler定理

 

定理二:乘法逆元存在定理(定理专业名字忘了,且表达式做了等价转换)

 

有了以上的基础,便可以证明RSA加解密流程了:

 

下面分情况讨论:

(一般情况下,明文m是远远小于 N的,如果明文m大于N,解密时会出错)

那么,明文m应该为p或者q的倍数,但不能同时是p,q的倍数,因为m<N。

不妨假设m=tp,则m与q应该互质,则有:


等式两边同时取kΦ(p)的幂次方,则等式依然成立,即:

所以有:

将m=t∗𝑝同时乘以等式两边,则有

然后等式两边对N取模

 证明完毕。


  • 21
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叨陪鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值