deepwzh的技术笔记
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • 计算机网络
  • Oauth2
  • 网络工具
  • 学习资料
  • RFC 标准
  • 计算机网络
  • Arp
  • 序列化技术
  • DNS

    • DNS
    • Zone 文件
  • HTTP

    • HTTP
    • OpenAPI
  • Https

    • Https
    • SSL/TLS
    • TLS 指纹
    • Client Hello
  • TCP

    • TCP
    • TCP 选项
    • TCP syn flood 攻击
    • 相关内核参数
    • RST 的集中情况
    • TCP Keepalive
  • 首页

    • 首页
    • test
  • 代理

    • 代理
    • 反向代理

Https

概述

HTTPS(HyperText Transfer Protocol Secure)是 HTTP 的安全版本,用于在客户端和服务器之间安全传输数据。

它通过 SSL/TLS 协议对通信进行加密,确保数据的机密性和完整性。

SSL/TLS

SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是用于在网络上加密通信的协议。SSL 是早期版本,TLS 是其继任者,目前广泛使用的是 TLS。

版本演变

  • SSL 1.0:未公开发布。
  • SSL 2.0:1995 年发布,存在严重安全漏洞。
  • SSL 3.0:1996 年发布,逐步被 TLS 取代。
  • TLS 1.0:1999 年发布,基于 SSL 3.0。
  • TLS 1.1:2006 年发布,修复了一些安全漏洞。
  • TLS 1.2:2008 年发布,增加了更强的加密算法。
  • TLS 1.3:2018 年发布,简化握手过程,提升安全性。可以支持 0-RTT

握手过程

TLS 的握手流程如下所示

  • TCP 三次握手

  • TLS 第一次握手

    • 客户端发起 ClientHello, 携带加密算法,客户端随机数,版本号,SessionID, SNI 等
  • TLS 第二次握手

    • 服务端发起 ServerHello, 携带加密算法,服务端随机数,版本号,SessionID, SNI 等
    • 服务端发送证书
    • 服务端发送 ServerHelloDone
  • TLS 第三次握手

    • 客户端生成 pre-master key, 用证书中的公钥加密发给服务端
    • 客户端根据 pre-master-key, 客户端随机数,服务端随机数生成对称加密秘钥,此后会用这个秘钥通信
    • 客户端发送 ChangeCipherSpec,表示之后要用这个新生成的秘钥通信
  • TLS 第四次握手

    • 服务端根据 pre-master-key, 客户端随机数,服务端随机数生成对称加密秘钥,此后会用这个秘钥通信

TLS 抓包示例

Client Hello

Server Hello + Certificate + Server Key Exchange + Server Hello Done

New Session Ticket + Change Cipher Spec + Encrypted Handshake Message

TLS 指纹(JA3 指纹)

Client Hello

TLS(传输层安全协议)从 1.0 到 1.3 版本经过了多次升级和改进,提升了安全性、性能和效率。以下是主要的改进:

  1. 安全性提升:

    • 弃用不安全的加密算法和协议:在 TLS 1.1 和 TLS 1.2 中逐渐弃用了 MD5 和 SHA-1 等不再安全的哈希算法,TLS 1.3 完全移除了这些不安全算法。
    • 移除不安全的特性:TLS 1.3 移除了静态 RSA 和 Diffie-Hellman 密钥交换模式,采用更安全的前向保密算法。
  2. 握手协议改进:

    • 简化握手过程:TLS 1.3 减少了握手过程中所需的往返次数,通常只需要一次往返时间(1-RTT),而 TLS 1.2 握手通常需要两次(2-RTT)。这大大减少了延迟。
    • 只支持基于 AEAD 的加密模式:这增强了加密的安全性和协议的灵活性。
  3. 会话恢复:

    • 使用会话票据:TLS 1.3 更广泛地使用会话票据机制来实现会话恢复,无需在服务器端保留大量状态信息。
  4. 性能提升:

    • 0-RTT 早期数据:TLS 1.3 引入了 0-RTT(Zero Round Trip Time)模式,允许客户端在握手的同时发送数据,从而减少初次连接的延迟。但需小心使用以防再发送(replay attack)攻击。
  5. 协议设计:

    • 更简洁,更容易分析:TLS 1.3 的协议设计简化,使其更加一致和安全,减少了潜在的攻击面和实现的复杂度。

这些改进共同努力,使得 TLS 1.3 比之前的版本更安全、更高效,并且更适合现代互联网需求。

参考资料

图解 SSL/TLS 协议 - 阮一峰的网络日志 (ruanyifeng.com)

子文档

  • [Client Hello](./Client Hello.md)
  • SSL_TLS
  • TLS指纹
Next
SSL/TLS