HTTPS的加密流程


一、前言

http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输。

二、HTTPS的混合加密

我们知道加密方式有三种
对称加密
非对称加密
混合加密
HTTPS采用的就是对称加密和非对称加密的混合加密方法。

混合加密解决了信息的机密性,防止数据被窃听
摘要算法实现了数据的完成性,防止了数据被篡改
数字证书提供了身份验证,防止了被冒充风险

摘要算法

客户端在向服务器端发送明文的时候,会通过摘要算法计算出明文的摘要,通过摘要与明文对比从而验证数据的完整性

混合加密和数字证书

可能有人会疑问数字证书是什么?其实数字证书是第三方权威机构给颁发的一种认证证书,伪造数字证书是一件极其难的事情,所以我们认为证书是可信的,那么其公钥就是可信的。

https在建立链接时是非对称加密,建立链接后是对称加密

非对称加密要用到两个密钥,一个叫做公钥,另一个叫做私钥。(公钥和私钥是成对出现的,公钥用于加锁,私钥用于解锁)通过公钥对明文加密,变成密文;然后通过私钥对密文解密,变成明文;也可以反着用:通过私钥对明文加密,变成密文,通过公钥对密文解密,变成明文。(通过数论相关知识证明)
公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢很多
我们引入非对称加密,来对自己的对称密钥进行加密:


由于对称加密成本是比较低的,即机器资源消耗量是比较少的,速度也比较快,因此我们传输数据时会先利用非对称加密方式将对称密钥进行加密,然后使用对称密钥再对数据进行加密

加密流程

1、首先呢,客户端先向服务端发送加密通信(https)请求
2、服务器收到请求后,向客户端发出响应:

确认SSL/TSL版本号,如果客户端不支持,那么就关闭通信确认的加密算法列表

3、服务器再向客户端发送数字证书,这里敲重点了。服务器会把自己的公钥注册到CA(第三方证书机构),然后CA拿自己的私钥对服务器的公钥进行处理并颁发数字证书。
4、服务器将公钥发送给客户端
5、服务器发送Hello Done,表示发送完毕
6、客户端收到服务端一系列响应后,确认数字证书和公钥,没有问题后向服务端发送:
7、服务端收到客户端数据后,使用私钥对加密后的预主密钥进行解密,没有其他人知道预主密钥,因为它加密了,除非服务器私钥泄漏。然后服务端通过第一、二、预主密钥计算出会话密钥。客户端也计算出了会话密钥。
8、服务端向客户端发送:加密通信算法改变通知,以后通过会话密钥通信
服务端握手结束
到此为止,SSL/TSL握手结束,在此之后都会通过会话密钥来进行加密和解密,也就是对称加密。

猜你喜欢

转载自blog.csdn.net/qq_56454895/article/details/131612172
今日推荐