浅析RSA算法

浅析RSA算法

1. RSA算法原理图解如下:

先对整个公私钥加解密有个认识。

2. RSA算法加密流程

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

密文 = 明文^E mod N

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

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

3. RSA算法解密流程

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

明文 = 密文^D mod N

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

从上面可以看出,RSA加解密的数学形式完全相同:

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

可以说是相当的美妙。(这里的E,D,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 ; 之后计算出两个质数的乘积N :N = p x q

一般使用随机数生成器来完成,并配合数学上的判据来确定一个数是否为质数。

(2)求欧拉函数Φ

在数论中用Φ(n)来表示变量n的欧拉函数,它表示[1, n-1]范围内那些与n互质(最大公约数为1)的正整数的个数。 这里涉及两个重要定理:

  • 定理1:如果n为质数,则Φ(n) = n-1
  • 定理2:如果p,q为质数, n = p x q,则Φ(n) = Φ ( p) x Φ(q) = (p-1)(q-1)

在RSA算法中,我们需要计算Φ(n) 的值:

Φ(n) = (p-1)(q-1)

(3)求E

E是一个介于 (1, Φ(n) ) 之间的正整数。此外E必须与 Φ(n) 互质。

这里E也采用随机数生成器来生成,由于需要与 Φ(n) 互质,采用数据公式来快速判断是否互质(如辗转相除法)。

为什么要保证互质呢?

目的是为了保证一定存在D与E相对应。(这个也是数论中的定理)

(4)求D

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

  • 关系1:1<D<Φ(n)
  • 关系2:D x E = 1 mod Φ(n)

只要E、D、Φ满足上述条件,那么通过(E,N)加密的报文,一定可以通过(D,N)来解密。而关系2存在的关键在于:E必须与Φ(n)互质,这便是(3)中需要满足的条件。

至此:D,E,N全部计算完毕。

5. RSA算法安全性

RSA算法的安全性来自于:大整数质因数分解的困难性。如果未来的某一天,大整数分别算法有了重大突破,那么RSA算法便不再安全。

参考资料

猜你喜欢

转载自blog.csdn.net/weixin_45264425/article/details/132800210