每日一博 - 复习Https工作原理

文章目录

Pre

每日一博 - 闲聊Https工作原理


Flow


单向认证

TLS是一种安全协议,主要用于在互联网上安全传输数据。上图展示了客户端和服务端之间建立安全连接的步骤。

1. TCP 握手包

TCP 握手是建立连接的第一步:

  • TCP同步:客户端向服务器发送一个SYN(同步)包,请求建立连接。
  • TCP同步+确认同步:服务器收到SYN包后,回应一个SYN+ACK(同步+确认)包。
  • TCP确认:客户端收到服务器的SYN+ACK包后,回应一个ACK(确认)包,完成TCP连接的建立。

2. 证书校验

在建立TCP连接后,TLS握手过程开始:

  • 建立连接:客户端向服务器发送握手请求。
  • 响应请求:服务器回应握手请求,并发送其证书。
  • 证书校验:客户端接收并验证服务器的证书,确保其有效性和可信性。
  • 服务端响应请求结束:服务器等待客户端的下一步操作。

3. 密钥交换

  • 客户端生成并发送会话密钥:客户端生成一个会话密钥,并使用服务器的公钥加密这个会话密钥,然后发送给服务器。
  • 服务器解密会话密钥:服务器使用其私钥解密会话密钥,双方共享这个会话密钥。
  • Change Cipher Spec:客户端和服务器通知对方所有后续的通信将使用会话密钥进行加密。
  • 握手结束:握手过程结束,准备进行数据传输。

4. 数据传输

  • 加密数据:使用会话密钥加密数据。
  • 传输数据:加密的数据通过安全通道传输。
  • 解密数据:接收方使用会话密钥解密数据。

非对称加密与对称加密

  • 非对称加密:在密钥交换阶段,客户端使用服务器的公钥加密会话密钥,服务器使用其私钥解密。非对称加密虽然安全性高,但计算开销大。
  • 对称加密:在数据传输阶段,双方使用共享的会话密钥进行加密和解密。对称加密的计算效率高。

关键要点

  • 会话密钥:用于加密实际的数据传输。
  • 证书公钥/私钥:用于验证服务器的身份和加密会话密钥。

双向认证

双向认证(Mutual Authentication),也称为双向TLS认证,是指客户端和服务器在建立连接时,双方都需要验证对方的身份。这种方式比单向认证更为安全,适用于对安全性要求较高的应用场景。

以下是双向认证过程的详细解释:

双向认证步骤

1. TCP 握手

  • TCP同步(SYN):客户端向服务器发送SYN(同步)包,请求建立连接。
  • TCP同步+确认(SYN+ACK):服务器收到SYN包后,回应一个SYN+ACK包。
  • TCP确认(ACK):客户端收到服务器的SYN+ACK包后,回应一个ACK包,完成TCP连接的建立。

2. TLS 握手开始

  • ClientHello:客户端发送一个ClientHello消息,包含支持的加密算法、TLS版本等信息。

3. 服务器认证

  • ServerHello:服务器回应一个ServerHello消息,包含选择的加密算法、TLS版本等信息。
  • 服务器证书(Server Certificate):服务器发送其证书,用于客户端验证服务器的身份。
  • ServerKeyExchange(如果需要):服务器发送密钥交换相关的信息。
  • CertificateRequest:服务器请求客户端的证书,用于验证客户端身份。
  • ServerHelloDone:服务器通知客户端ServerHello阶段完成。

4. 客户端认证

  • 客户端证书(Client Certificate):客户端发送其证书,供服务器验证客户端的身份。
  • ClientKeyExchange:客户端生成一个会话密钥,使用服务器的公钥加密后发送给服务器。
  • CertificateVerify:客户端发送一个签名,证明其拥有对应私钥。
  • ChangeCipherSpec:客户端通知服务器后续的消息将使用协商的会话密钥加密。
  • Client Finished:客户端发送一个完成消息,表明握手阶段结束。

5. 服务器完成认证

  • ChangeCipherSpec:服务器通知客户端后续的消息将使用协商的会话密钥加密。
  • Server Finished:服务器发送一个完成消息,表明握手阶段结束。

6. 加密通信

  • 双方使用协商好的会话密钥进行加密通信,确保数据传输的保密性和完整性。

图示说明

json 复制代码
客户端                            服务器
   |                                 |
   |------------(SYN)--------------> |
   | <---------(SYN+ACK)-----------  |
   | ------------(ACK)-------------->|
   |                                 |
   | ------- ClientHello --------->  |
   |                                 |
   | <------ ServerHello ----------- |
   | <------ Server Certificate -----|
   | <----- Certificate Request ---- |
   | <------ ServerHelloDone ------- |
   |                                 |
   | ------ Client Certificate ----> |
   | ------ ClientKeyExchange ------>|
   | ----- CertificateVerify ------> |
   | ------ ChangeCipherSpec ------> |
   | ------ Client Finished -------> |
   |                                 |
   | <------ ChangeCipherSpec -------|
   | <------ Server Finished ------- |
   |                                 |
   |  <======== 加密通信 =========>  |

关键点

  • ClientHello 和 ServerHello:用于协商加密算法和TLS版本。
  • 证书交换:客户端和服务器互相交换证书,验证对方身份。
  • 密钥交换:使用公钥加密生成的会话密钥,确保后续通信的安全性。
  • ChangeCipherSpec:通知对方后续通信将使用协商的会话密钥加密。

通过双向认证,客户端和服务器双方都能确保对方的身份,从而大大提高了通信的安全性。

相关推荐
上海云盾-高防顾问4 小时前
中小企业低成本渗透测试实操指南
网络协议·web安全·网络安全
桃花键神12 小时前
Undetectable接入亮数据代理IP深度测评:高效、稳定、适配性极强的海外多账号运营利器
网络协议·tcp/ip·php
野生技术架构师15 小时前
原来可以搭建一个HTTP服务
网络·网络协议·http
北京耐用通信18 小时前
耐达讯自动化CANopen转Profibus网关:为风力发电场打造高可靠协议转换解决方案
人工智能·物联网·网络协议·自动化·信息与通信
北京耐用通信18 小时前
耐达讯自动化CANopen转Profibus 网关:实现光伏逆变器无缝接入工业以太网的技术解析
网络·人工智能·物联网·网络协议·自动化·信息与通信
..过云雨18 小时前
应用层自定义协议与序列化一站式指南
网络协议·tcp/ip·json·信息与通信
TOPGUS19 小时前
谷歌Chrome浏览器即将对HTTP网站设卡:突出展示“始终使用安全连接”功能
前端·网络·chrome·http·搜索引擎·seo·数字营销
Wadli19 小时前
项目5 |HTTP服务框架
网络·网络协议·http
CCPC不拿奖不改名19 小时前
网络与API:HTTP基础+面试习题
网络·python·网络协议·学习·http·面试·职场和发展
乾元19 小时前
无线定位与链路质量预测——从“知道你在哪”,到“提前知道你会不会掉线”的网络服务化实践
运维·开发语言·人工智能·网络协议·重构·信息与通信