RSA加密算法

基本概念

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

RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加***,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

解密者拥有私钥,并且将由私钥计算生成的公钥发布给加密者。加密都使用公钥进行加密,并将密文发送到解密者,解密者用私钥解密将密文解码为明文。

RSA加密算法

 

安全性 

RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明**RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。 RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。 

实现过程

        1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。

        2. 根据欧拉函数,不大于N且与N互质的整数個数為(p-1)(q-1)。

        3. 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。

        4. 用以下这个公式计算d:d× e ≡ 1 (mod (p-1)(q-1))。

        5. 将p和q的记录销毁。

        以上内容中,(N,e)是公钥,(N,d)是私钥。

实现细节

**生成

首先要使用概率算法来验证随机产生的大的整数是否是质数,这样的算法比较快而且可以消除掉大多数非质数。假如有一个数通过了这个测试的话,那么要使用一个精确的测试来保证它的确是一个质数。

除此之外这样找到的p和q还要满足一定的要求,首先它们不能太靠近,此外p-1或q-1的因子不能太小,否则的话N也可以被很快地分解。

此外寻找质数的算法不能给攻击者任何信息,这些质数是怎样找到的,尤其产生随机数的软件必须非常好。要求是随机和不可预测。这两个要求并不相同。一个随机过程可能可以产生一个不相关的数的系列,但假如有人能够预测出(或部分地预测出)这个系列的话,那么它就已经不可靠了。比如有一些非常好的随机数算法,但它们都已经被发表,因此它们不能被使用,因为假如一个攻击者可以猜出p和q一半的位的话,那么他们就已经可以轻而易举地推算出另一半。

此外**d必须足够大,1990年有人证明假如p大于q而小于2q(这是一个很经常的情况)而d < N^(1/4)/3,那么d是e/N的某一个渐进分数的分母(这个算法的原理是利用N=pq来逼近phi(N):=(p-1)(q-1),而算法要求d*e除以phi(N)的余数是1,所以de=k phi(N)+1,e/phi(N)=k/d +1/phi(N),这说明了e/phi(N)与k/d近似相等,从而可以通过e/N的渐进分数来寻找d(当然更多的,我们也可以更好地估计phi(N)来获得一个更好的估计,但对通常情况(e=65537),RSA算法仍然是安全的))。

最后,RSA的原理保证了d和e必须与(p-1)(q-1)的因子互素,因此d,e都不可能为2。 [2] 

运算速度

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度是对应同样安全级别的对称密码算法的1/1000左右。

比起DES和其它对称算法来说,RSA要慢得多。实际上Bob一般使用一种对称算法来加密他的信息,然后用RSA来加密他的比较短的对称密码,然后将用RSA加密的对称密码和用对称算法加密的消息送给Alice。

这样一来对随机数的要求就更高了,尤其对产生对称密码的要求非常高,因为否则的话可以越过RSA来直接攻击对称密码。

**分配

和其它加密过程一样,对RSA来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡中间人攻击。假设Eve交给Bob一个公钥,并使Bob相信这是Alice的公钥,并且她可以截下Alice和Bob之间的信息传递,那么她可以将她自己的公钥传给Bob,Bob以为这是Alice的公钥。Eve可以将所有Bob传递给Alice的消息截下来,将这个消息用她自己的**解密,读这个消息,然后将这个消息再用Alice的公钥加密后传给Alice。理论上Alice和Bob都不会发现Eve在偷听他们的消息。今天人们一般用数字认证来防止这样的攻击。

参考文章

https://www.cnblogs.com/AloneSword/p/3326750.html 

https://baike.baidu.com/item/RSA算法/263310

https://blog.csdn.net/gao131360144/article/details/79966094