RSA 算法图解+数学证明

您所在的位置:网站首页 加密解密公式 RSA 算法图解+数学证明

RSA 算法图解+数学证明

2023-11-30 01:59| 来源: 网络整理| 查看: 265

目录

1. RSA交互流程

2. RSA的加密

3. RSA的解密

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

5. RSA数学证明

1. RSA交互流程

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

2. RSA的加密

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

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

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

不同于对称加密中的复杂操作,将数据加、减、乘、除、异或,拆来拆去,挪来挪去,揉来揉去等等,复杂的简直不要不要滴。而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求解E、D、N流程

通过上文已经知道: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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3