编程语言
首页 > 编程语言> > 非对称加密算法-RSA算法

非对称加密算法-RSA算法

作者:互联网

  加密算法分为对称加密算法和非对称加密算法,其中非对称加密算法作为计算机通信安全的基石,在保证数据安全方面起着重要的作用。而相对于对称加密算法的易理解性,非对称加密算法存在一定的难度。下面通过对RSA算法的剖析,让我们更好的理解非对称加密算法的原理。

一、对称加密算法和非对称加密算法

1、对称加密算法

  对称加密算法:加密和解密都使用同样规则(密钥)的算法。

  (1)、A选择某一种规则对信息进行加密;

  (2)、B使用同一规则(逆规则)对信息进行解密;

2、非对称加密算法

  非对称加密算法:加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可。

  (1)、B根据算法生成两把密钥(公钥和私钥),其中私钥是保密的,公钥是公开的,供要与B通信的其它人使用;

  (2)、A从B处获取公钥,并用它来加密;

  (3)、B得到A加密后的信息,用私钥进行解密,完成通信;

二、RSA算法的数学基础

1、互质关系

  互质又称为互素,如果两个或两个以上的整数的最大公约数是 1,则称它们为互质。比如7和10,他们最大的公约数是1,所以他们互质。8和10最大的公约数是2,所以他们不是互质。并不是只有两个质数才能形成互质。
  根据互质关系,可以得出以下结论(后面欧拉函数会用到):

2、欧拉函数

  欧拉函数指的是对正整数n,求小于或等于n的正整数中与n互质的数的数目,记作φ(n)。比如1至10中,与10形成互质关系的有1,3,7,9,所以φ(10)=4。
  欧拉函数通用公式为(除n=1外,φ(1)=1):
\[ φ(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})......(1-\frac{1}{p_r}) \\ n={p_1}^{k_1}*{p_2}^{k_2}......{p_r}^{k_r},其中p_1、p_2......p_r为质数 \]
  比如φ(20)=8计算过程如下:
\[ φ(20)=φ(2^2\times5)=20(1-\frac{1}{2})(1-\frac{1}{5})=8 \]
  欧拉函数证明如下:

   因为1与任何数都构成互质关系,则 φ(1) = 1 。

   因为质数与小于它的每一个数,都构成互质关系,则φ(n) =n-1。如φ(5)=5-1=4。

3、欧拉定理

  欧拉定理也称费马-欧拉定理,指的是:如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立。
\[ a^{φ(n)}=1(mod\ n) \]
  即a的φ(n)次方被n除的余数为1,或者说a的φ(n)次方减1,能被n整除。如7和5互质
\[ 7^{φ(5)}-1=7^4-1=2401-1=2400,可以被5整除 \]

4、模反元素

  如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。这时,b就叫做a的模反元素。证明如下:
\[ a^{φ(n)}=a\times a^{φ(n-1)} = 1(mod\ n),其中a^{φ(n-1)}就是a的模反元素 \]

三、RSA算法过程

1、生成密钥对(公钥和私钥)

  本例中公钥为(n,e) = (55 , 17),私钥为(n,d) = (55 ,33) ,仅(n,e) =(55 , 17)是公开的,其余数字均不公开。可以想像如果只有 n 和 e,如何推导出 d,目前只能靠暴力破解,位数越长,暴力破解的时间越长。

2、加密生成密文

  对明文z采用公钥(n,e)进行加密,其中明文必须转换为数字,且必须比n小。加密的公式如下:
\[ z^e=c(mod\ n) \]
  其中z为明文,n和e为公钥,c为加密后的密文,所以c可以转换为:
\[ c=z^e \% n \]
  假如明文为15,公钥(n,e) = (55 , 17),则加密后的密文c为:
\[ c=15^{17}\%55=5 \]

3、解密生成明文

  对密文c采用公钥(n,d)进行解密,解密的公示如下:
\[ c^d=z(mod\ n) \]
  其中c为密文,n和d为私钥,z为解密后的明文,所以z可以转换为:
\[ z=c^d\%n \]
  根据上述条件,密文c为5,私钥(n,d) = (55 ,33) ,则解密后的明文z为:
\[ z=5^{33}\%55=15 \]

四、RSA算法有效性证明

1、有效性问题

  根据上述RSA算法示例,要验证RSA算法的有效性,即验证根据加密公式:
\[ z^e=c(mod\ n) \]
  可以推导出,解密公式是有效的:
\[ c^d=z(mod\ n) \]

2、证明过程

  根据加密规则,可以推导出:
\[ c= z^e - kn \]
  将上述式子代入解密公式,即求证以下式子成立:
\[ (z^e-kn)^d = z(mod\ n) \]

\[ z^{ed} = z(mod\ n) \]

五、RSA算法的安全性

  RSA算法的安全性,是基于目前的条件下,在空间和时间上,无法对它进行有效破解。

  根据上述推导,RSA算法用到a、b、n、m、e、d六个数字。其中公钥(n,e)是公开的,其余的4个数字是保密的。其中密钥d是算法的核心。

  目前对于大数的因数分解,除了暴力破解,没有更好的途径。以现有的计算资源和能力,目前能被破解的最长RSA密钥就是768位,所以只要保证RSA密钥是1024位及以上,即可保证算法的安全性。

六、总结

1、RSA算法流程

2、RSA算法安全性

  目前对于大数的因数分解,除了暴力破解,没有更好的途径。以现有的计算资源和能力,目前能被破解的最长RSA密钥就是768位,所以只要保证RSA密钥是1024位及以上,即可保证算法的安全性。

3、RSA算法应用

  在RSA算法中,公钥(n,e) 只能加密小于n的整数。对于大于n的整数,可以采用两种方法。一是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种对称性加密算法加密信息,再用RSA公钥加密对称性加密算法的密钥。

  另外,由于RSA算法性能问题,通常加解密都比较慢,所以通常和对称性加密算法一起配合使用。

标签:ka,质数,RSA,非对称,互质,加密算法,mod
来源: https://www.cnblogs.com/xtiger/p/10972373.html