RSA核心思想
郝伟 2020/07/23

算法思想

RSA算法核心的思想只有两部分:

这样,Bob就可以使用公钥对要传输的数据加密再发给Alice,即便Bob加密后的数据泄露也不怕,因为别人没有密钥,无法解开。

主要特性

所以RSA算法的神奇之处有两点:

算法原理

RSA的核心思想是基于欧拉定理:aφ(n)1 (mod n)a^{φ(n)} \equiv 1 \ (\mathrm{mod} \ n),其中 a,na,n 都是大于1的自然数且两者互质,φ(n)\varphi{(n)} 是求[1, n) 区间上与 nn 互质的个数,如 φ(8)=4\varphi{(8)}=4,因为在 [1, 8) 区间上,1,3,5,7都与8互质。对欧拉定义举例说明,如取 a=3,n=8a=3,n=8,那么 3φ(8)1 (mod 8)3^{φ(8)} \equiv 1 \ (\mathrm{mod} \ 8),即 34=813^4=81818188 取余等于 11,满足公式。欧拉定理的详细说明可参见此链接:点击我

前文已经说过,RSA分为两步,分别有密钥生成算法和加解密算法,我们先从密钥生成算法说起。

密钥生成算法

密钥的本质就是数,所以公私钥分别是两个数。基于RSA算法,这两个数都是正整数。那么这两个数是如何计算来的都是基于欧拉函数,即φ(n)\varphi{(n)},下面我们就说一下详细计算过程。

  1. 取两个质数 ppqq,如 p=61,q=53p=61, q=53
  2. 计算 n=qpn = qp,如 n=6153=3233n = 61*53=3233
  3. 根据欧拉函数计算 φ(n)=φ(qp)=φ(p)φ(q)=(p1)(q1)=6052=3120\varphi{(n)}=\varphi{(qp)}=\varphi{(p)}*\varphi{(q)}=(p-1)*(q-1)=60*52=3120
  4. 计算公钥因子 ee 满足 1<e<φ(n)1<e< \varphi{(n)} 且与 φ(n)\varphi{(n)} 互质,如 e=17e = 17
  5. 计算私钥因子 dd 满足 ed=k(φ(n)1)ed=k(\varphi{(n)}-1),其中 kk 为正整数,比如可如 k=1,d=413k = 1, d=413

经过以上的计算,我们最终完成了密钥生成计算,其中公钥为 (n,e)(n,e) 密钥为 (n,d)(n,d),如公钥为 (3233,17),私钥为 (3233,413)。

加解密算法

设明文为 MM,密文为 mm,那么计算公式分别如下:

这个过程是不是很简洁,举例说明,假设 M=65M=65,那么

可见,原文65在使用公钥(3233,17)加密后,得到2790,然后再使用私钥(3233,413)解密后,又得到了原文。为什么可以相等呢,我们可以简单证明。

证明

联合①②式可得:
m=(md mod n)e mod n=med mod n=mφ(n)+1 mod nm = (m^d \ \mathrm{mod} \ n)^e \ \mathrm{mod} \ n= m^{ed} \ \mathrm{mod} \ n=m^{\varphi(n)+1} \ \mathrm{mod} \ n根据余数性质三,可得:mφ(n)+1 mod n=(m mod n)(mφ(n) mod n) mod nm^{\varphi(n)+1} \ \mathrm{mod} \ n=(m \ \mathrm{mod} \ n)*(m^{\varphi(n)} \ \mathrm{mod} \ n) \ \mathrm{mod} \ n根据欧拉定理易知,中间一项为1,所以mφ(n)+1 mod n=m mod nm^{\varphi(n)+1} \ \mathrm{mod} \ n=m \ \mathrm{mod} \ n又因为 m<nm<n,所以mφ(n)+1 mod n=mm^{\varphi(n)+1} \ \mathrm{mod} \ n=m即加密后的数据最终等于mm,证毕。