密码学的发展(第四篇:计算机非对称加密法)

1、概述

第三篇:计算机对称加密里,我已经整理了非对称加密的概念。而且也介绍了“模运算”。这里就对非对称加密里典型的加密法----RSA加密法进行整理。

2、RSA加密法

RSA是第一个比较完善的公开秘钥算法。RSA以它的三个发明者Ron Rivest、Adi Shamir、Leonard Adleman的名字组成,目前它已经成为流行的公开秘钥算法。

2.1、RSA加密原理

1、选择一对不同的、足够大的质数P,Q
2、计算 N = P * Q;
3、计算 M = (P-1) * (Q-1),同时对P 和 Q进行保密;
4、找一个数 E,这个数与 M 是互质数,且满足1 < E < M
5、计算D,使得 D*E = 1(mod M)
6、形成公钥KU = (E,N),私钥KR=(D,N)
7、加密时,先将明文变换成 0 至 N-1 的一个整数 O。若明文较长,则分组计算。密文 C = O E O^E OE(mod N)
8、解密时,原文S = C D C^D CD(mod N)

为什么使用两个足够大的指数P和Q?而且加密和解密使用的N、E、D为什么是通过P和Q算出来的?这是由数学家经过严格的数学证明得到的,保证了正确性。通过上面的介绍你也能看出来,非对称性加密的关键是对P和Q的保护。

在使用时,生成公钥和私钥的一方,可以公开自己的公钥,如果别人想给发送消息,就使用公钥对信息进行加密。如果我想发送给别人东西,可以使用私钥对信息进行加密,这样别人虽然破解不了密文,但是公钥是公开的,别人可以使用公钥进行解密

原理太枯燥,而且不好理解,下面就举例说明。

2.2、实例描述

假设爱丽丝需要将明文“key”通过RSA加密后传递给鲍勃,则过程如下:

1、设计公私秘钥(E,N)和(D,N)

令P = 3,Q = 11,得出 N = 3 * 11 = 33,M = 2 * 10 = 20;取 E = 3(3与20互质),则 E * D = 1 (mod M),即 3 * D = 1 (mod 20)。
D怎样取值?可以用试算的办法来寻找。试算结果见下表:
在这里插入图片描述
通过试算我们找到,当 D = 7 时,E*D = 1 (mod N) 等式成立。因此,可令D = 7。从而我们设计出一堆公私秘钥为:公钥 KU = (E,N) = (3,33),私钥 KR = (D,N) = (7,33)

2、原文数字化

将明文信息数字化。假定明文英文字母编码表字母顺讯排列数值,即:
在这里插入图片描述
则得到分组后的key的明文信息为:11,05, 25。

3、明文加密

使用公钥(3,33)将数字化明文分组信息加密成密文。根据公式 C = O E O^E OE(mod N)计算的密文为:
11 26 16
这里也可以用私钥进行加密,如果用私钥进行加密,解密时需要使用公钥。

4、密文解密

得到密文之后,因为信息时使用公钥加密,则解密必须使用私钥进行解密。这里使用私钥(7,33)对密文进行解密。根据公式 S = C D C^D CD(mod N) 计算的原文为:
11 05 25

当然这里只是一个简单的应用,实际的运用可能比这里复杂的多,由于RSA算法的公钥私钥的长度要到1024位甚至2048位才能保证安全。因此,P、Q、E的选取、公私钥的生成,加解密时指数和模运算,都需要仰仗计算机的完成。

2.3、数字签名

在现实通信中,使用RSA对原文进行了加密,保证了信息的安全,但是怎么判断是不是正确的人给我发送的信息,而不是别人伪造的呢?

这里就是咱上面提到的,使用发送方使用私钥进行加密,接收方去查找发送发的公钥,然后使用这个公钥对密文进行解密,如果能够成功解密,则确定是正确的人发送的信息。

有时我们不想让所有人都能对数字签名进行解密,那么怎么办呢?
比如爱丽丝想发信息给鲍勃,爱丽丝使用自己的秘钥把原文进行加密,然后在使用鲍勃的公钥把密文在加一次密。这样信息就保证只能鲍勃进行解密,而且还能确认爱丽丝的身份。

这样当非对称钥匙+数字签名,RSA加密就非常实用了

3、总结

虽然说RSA加密非常安全,但是加密过程复杂,其中包含了大量的大数据计算,效率低。所以RSA一般只加密一些短小的信息

但是随着互联网的发展,需要加密的数据越来越大,使用RSA加密严重影响了效率。比如一份机密邮件,内容使用RSA加密,电脑CPU全力工作,可能需要几分钟才能完成加密。

所以一般采用: 信息主体仍然采用对称加密的方式,在传递钥匙的过程中,对钥匙使用RSA进行加密。这样就绕过了RSA效率的问题。

感谢大家,我是假装很努力的YoungYangD(小羊)

参考资料:
《卓克的密码学课》
https://www.cnblogs.com/jiftle/p/7903762.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值