RSA加密算法详解

2,920 阅读3分钟

什么是RSA算法?

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

大数的质因素分解决定 RSA算法 的可靠性,让合理时间内破解加密数据成为不可能。

要了解 RSA加密算法 首先要了解素数

什么是非对称加密?

非对称加密需要两个密钥,一个公开密钥一个私有密钥。

使用公钥加密的数据只能用私钥解开,所以公钥可以公开给他人,而私钥要保护起来。

其实公钥就像 ,私钥就像 钥匙 ,把 给别人锁住数据,然后传递回来用 钥匙 解开取出数据。这样就算中途被他人截获了没有 钥匙 也没法查看数据内容。

欧拉函数

欧拉函数是说,对正整数 nn ,欧拉函数 ϕ(n)\phi(n) 是小于或等于 nn 的正整数中与 nn 互质的数的数目。

比如 ϕ(8)=4\phi(8) = 4 因为 881,3,5,71,3,5,7 互质。

有一种情况 ϕ(n)\phi(n) 很好计算就是当 nn 等于素数时,因为素数和小于它的所有正整数互质,所以当 nn 等于素数时 ϕ(n)=n1\phi(n) = n-1 ,且当 a,ba,b 都是素数时

ϕ(a×b)=ϕ(a)×ϕ(b)\phi(a×b)=\phi(a)×\phi(b)

欧拉定理

欧拉定理(也称费马-欧拉定理)是一个关于同余的性质。

欧拉定理表明,若 n,an,a 为正整数,且 n,an,a 互素,则

aϕ(n)1 (mod n)a^{\phi(n)}\equiv1\ (mod\ n)

RSA加密算法

RSA加密算法是根据一个容易运算但是如果没有特殊信息逆运算非常困难的函数,

me mod ncm^e\ mod\ n \equiv c

这非常容易计算 cc ,但是给定 e,n,ce,n,c 却很困难得到 mm

那么怎么让它的逆运算也容易呢?

要有一个 ddcdm (mod n)c^d\equiv m\ (mod\ n) 成立,这公式也可以写成 me×d m (mod n)m^{e×d}\equiv\ m\ (mod\ n) ,这样只要知道 dd 就可以得到 mm 了。

那么怎么计算 dd ,这时候就要用到欧拉定理

mϕ(n)1 (mod n)m^{\phi(n)}\equiv1\ (mod\ n)

也可以写成

mk×ϕ(n)+1m (mod n)m^{k×\phi(n)+1}\equiv m\ (mod\ n)

就是将原等式的任何数 kk 次方,然后再乘以 mm

me×dm (mod n)m^{e×d}\equiv m\ (mod\ n)mk×ϕ(n)+1m (mod n)m^{k×\phi(n)+1}\equiv m\ (mod\ n)

就可以算出 dd 等于

k×ϕ(n)+1e\frac{k×\phi(n)+1}e

这时ee就相当于公钥, dd 就相当于私钥。

那么RSA加密算法过程为:

1)第一步是首先找出两个大质数 p1,p2p1,p2 ,大质数可以使用两步生成。(具体可以看费马小定理

  1. 随机生成一个大数
  2. 测试是不是素数

然后将 p1,p2p1,p2 相乘得到 nn ,根据欧拉定理可知 ϕ(n)=(p11)×(p21)\phi(n)=(p1-1)×(p2-1)

2)第二步找到一个奇数 ee ,而且与 ϕ(n)\phi(n) 互质。

3)根据上面公式计算出一个正整数 dd ,(有人证明如果 d<13×n14d<\frac{1}3×n^{\frac{1}4} 可以根据 n,en,e 很有效的推出 dd ,所以 dd 必须足够大)

4)将 eenn 发送给他人加密数据( mm ),得到 cme (mod n)c\equiv m^e\ (mod\ n) (消息 mm 是小于 nn 的正整数,如果 mm 太大可以分段)。

5)取回加密数据 cccd mod nc^d\ mod\ n 就等于消息 mm

安全性

根据上面步骤可以看出要破解加密必须要得到 dd ,而得到 dd 就要找到 p1,p2p1,p2 ,这就要对 nn 进行质因素分解,然而根据现在计算机的速度对一个大数在一个合理时间内质因素分解非常困难。