非对称加密简述
在信息技术高速发展的今天,人们习惯于通过网络传输各种数据,如果数据在网络中进行明文传输,会很容易被不法分子盗取或篡改数据,若只是对数据进行一些算法加密,就算再难的算法,也是有可能会被破译的。这就需要对数据进行密钥加密传输,常见的通过密钥加密的方式有对称加密和非对称加密(公钥加密)
对称加密
对称加密指加密和解密使用同样的密钥,通信双方共用一个密钥。
发送者用密钥对数据进行加密,接收者用同样的密钥进行解密,这样的话,数据传输的安全性提高了,但这又会引发新的问题:密钥配送问题。接收者如何获取密钥?如果还是通过网络传输,那密钥需不需要加密?再对密钥进行对称加密?那岂不是陷入了一个死循环?当然,这可以通过事先约定密钥进行解决,但本文主要进行非对称加密的简述,所以就不做拓展(我还没学emm)。
非对称加密
非对称加密指加密和解密使用不同的密钥,同时存在四个密钥。通信双方各自准备一个公钥和一个私钥,公钥由信息接收方发送给信息接收方,由于公钥是公开的,所以就算传输过程中被盗取,也影响不大。信息发送方用接收方的公钥对信息进行加密,接收方用自己的私钥进行解密,这也就不存在密钥配送问题。
流程:
1、信息接收方准备好公钥和私钥
2、私钥由接收方自己留存、公钥则发送给信息发送方
3、消息发送方使用接收方公钥对消息进行加密
4、消息接收方用自己的私钥对消息解密
但这又有另一个问题,你如何确定你收到的信息是由信息发送方发送的?如果攻击者在通信双方的信息通道中间拦截了双方公钥,并替换成了自己的公钥,那就相当于通信双方实际上都是在和攻击者进行通信,所以,为了确保通信双方的身份正确,在信息传输过程中,我们还需要使用公钥证书。
由于非对称加密需要通信双方各自准备一个私钥和一个公钥,虽然相对对称加密更安全,但计算比较复杂,计算机机处理相对更慢,所以通常会将对称加密与非对称加密进行结合使用,信息数据量大,则进行对称加密,数据处理更快,对称密钥公网传输不安全,就对对称密钥进行非对称加密传输。
下面举个例子(图为网图,如有侵权,可联系删除):
信息发送流程:
1、发送方Alice对原始信息进行哈希算法加密,得到一个信息摘要
2、用Alice的私钥对信息摘要进行加密,得到数字签名
3、将原始信息+数字签名+Alice的证书(包含Alice的公钥)进行打包,进行对称加密,得到加密后的信息和对称加密密钥
4、将对称加密密钥用接收方Bob的公钥进行加密,得到一个密钥信封
5、将加密信息和密钥信封传输给接收方
信息接收流程:
6、接收方Bob用自己的私钥对加密信封进行解密,得到对称加密密钥
7、用对称加密密钥对加密信息进行界面,得到原始信息+数字签名+Alice的证书(包含Alice的公钥)
8、用Alice的公钥对数字签名进行解密,得到信息摘要1(Alice的证书保证了此公钥未被替换,确实为Alice的公钥)
9、将得到的原始信息进行同样的哈希算法加密,得到信息摘要2
10、核对信息摘要1与信息摘要2是否一致,保证信息传输过程中没有被进行篡改