目录
一、了解加密和解密
1、对称加密(只有一个密钥 key ):
- 明文 + key = 密文
- 密文 + key = 明文
加密和解密使用的是同一个密钥(速度快)
2、非对称加密(有两个密钥,一个 pub,一个 pri)
pub -> 公钥
pri -> 私钥
对于这两个密钥来说,谁做公钥,谁做私钥都行(能给别人的就叫公钥,自己留着的就要私钥)
- 明文 + pub = 密文
- 密文 + pri = 明文
或者
- 明文 + pri = 密文
- 密文 + pub = 明文
无所谓,都是一样的
HTTPS的基本工作流程
加密对象:针对 HTTP 中的 Header 和 body 进行加密
1、使用对称密钥
![](https://img-blog.csdnimg.cn/95c4259e679644e980100f48475ac504.png)
2、非对称加密
![](https://img-blog.csdnimg.cn/b9c31c036ce54766aaf88e64cd06fd90.png)
但是这样子就真的安全了吗???
并不是!!!
既然不安全,怎么个不安全呢?
3、中间人攻击
![](https://img-blog.csdnimg.cn/d66d58544c674b01b2d73422275a3d09.png)
既然非对称加密也不安全,那到底怎么才能安全呢?
4、通过证书来确认
中间人攻击的破解关键在于对服务器发送来的pub是否能够信任,通过证书就能做到这一点
证书包含以下内容:
- 服务器的URL
- 证书的过期时间
- 颁布证书的机构是啥
- 服务器自己的公钥 pub(不需要传输服务器的公钥了,证书上有)
都是明文的
还有一项加密后的签名:
先对证书的所有属性,计算一个校验和,再由证书颁布机构,使用自己的私钥对这个签名进行加密
![](https://img-blog.csdnimg.cn/76cf21b21ccb46e2815069dc95a154cd.png)
这时候有人可能会说,那把权威机构给黑了,不就拿到 pri2 了嘛,还是那句话,安全并不是决定的,当破解数据的价值超过了数据本身的价值,那就是安全的。要黑权威机构,这花费的力气不是还更大嘛。
通过证书的引入,可以确保客户端拿到的的确是服务器发送过来的公钥,而不是黑客的。这个时候再通过用服务器发送来的公钥加密客户端自己生成的对称密钥 key 就能够实现安全的传输数据了