最近学习区块链知识,涉及到一些加密的知识,重新复习了一下部分知识,通过简明的图梳理并整理了要这么设计的原因。

对称加密

image.png

流程

对称加密顾名思义:加密和解密用的是同一个秘钥。消息发送方小王用秘钥对要发送的内容进行加密后通过网络传输。接收方小李收到后也通过同一个秘钥进行解密,得到明文。

优缺点

对称加密的优点是非常简单明了,并且性能高效(相对于非对称加密)。它存在的缺点主要是如果有人拿到了秘钥,就能破解密文。这个问题尤其是在第一次传输的时候尤其严重:如何传输秘钥本身

非对称加密

消息发送

image.png
非对称加密和对称唯一加密区别的点是:加密和解密的秘钥不是同一个。公钥加密的内容只有使用私钥能够解密,消息接收方小李生成的公钥对全网是公开的,私钥只有自己拥有。
小王对自己要发送的内容使用公钥进行加密,加密后的内容即使被其他人获得了,但它只要没有私钥,就无法获取真正的内容。
公钥传输没有对称加密密钥的传输问题,不怕被其他人获取。

消息返回

image.png

当需要返回消息时,小李用自己手里的私钥进行加密和并结合明文的摘要信息生成数字签名,数字签名用于证明消息是小李返回的。小王通过自己获取的公钥对内容解密就能获得真正的内容。
因为私钥只有小李拥有,能够使用私钥签名的必定是小李。其他人是无法伪造的

消息伪造

image.png

对于攻击者来说,想拿到消息接收&回复方的小李的私钥是非常困难的。但是有可能把小王手里,通过公开方式获取的公钥A替换成攻击者的公钥B。后续公钥B只需要模拟小李的操作,用自己的私钥进行签名,就能向小王发送虚假信息或者截获小王用公钥B加密的消息内容。
如果想避免这个风险,就需要引用数字证书。

数字证书

image.png

既然单靠小李的数字签名不能确保消息一定是自己发出的,一个简单的思路引入可信用的第三方传输公钥就可以极大降低这个风险。
首先小李在返回消息的时候还是和原来一样生成数字签名和加密,同时用明文的摘要+权威机构(CA)的私钥B生成数字证书,里面同时包含了公钥A。小王在收到内容后,首先通过权威机构的公钥B对数字证书解密,获得公钥A和一份摘要信息。然后用刚拿到的公钥A去解密数字签名,获得另一份摘要信息,同时和上一份摘要信息进行对比,内容相同则表示内容没有被人篡改过。

优缺点

非对称加密在安全性上是有提高的,不用担心第一次通信时公钥的分发问题。但缺点就是流程变得非常复杂,也因为加密解密等过程更复杂,性能上有损耗。

HTTPS

HTTPS是我们常用的协议,也是对称加密和非对称加密的典型应用场景。熟悉的同学可能已经发现,上图里面的小王就是HTTPS访问里面的浏览器,小李就是服务端。
由于非对称加密性能较低,HTTPS首先是通过非对称加密传输对称加密的秘钥,后续的加密过程只需要通过对称加密就能快速的加密解密。