当前位置: 首页 > news >正文

计算机网络 各版本TLS握手的详细过程

一、SSL 2.0 (1995年,已废弃)

流程

  1. ClientHello
    • 客户端发送支持的加密套件列表(弱算法如RC4、MD5)。
  2. ServerHello
    • 服务器选择加密套件并发送证书(无服务器密钥交换)。
  3. 密钥交换
    • 客户端用服务器公钥加密预主密钥(PreMasterSecret)发送。
  4. 完成
    • 双方生成主密钥,未验证握手完整性。

缺陷

  • 无扩展支持,易受中间人攻击(MITM)。
  • 2011年正式禁用。

二、SSL 3.0 (1996年,已废弃)

改进

  • 引入 Finished消息(验证握手完整性)。
  • 支持更多加密算法(如SHA-1)。

握手流程

ClientServerClientHello (随机数A + 加密套件)ServerHello (随机数B + 选定套件) + CertificateServerKeyExchange (如需DH参数)ServerHelloDoneClientKeyExchange (PreMasterSecret加密传输)ChangeCipherSpec (切换加密)Finished (HMAC校验)ChangeCipherSpecFinishedClientServer

缺陷

  • POODLE攻击(2014年)导致全面弃用。

三、TLS 1.0 (1999年)

关键改进

  • 版本号显式声明(TLS 1.0)。
  • 使用HMAC替代MAC,增强完整性。
  • 支持动态密钥交换(DHE、ECDHE)。

完整握手流程

  1. ClientHello
    • 客户端随机数、会话ID、加密套件列表。
  2. ServerHello
    • 服务器随机数、选定套件、会话ID。
  3. Certificate
    • 服务器发送证书链。
  4. ServerKeyExchange(可选)
    • 发送DH/ECDH参数(非RSA时)。
  5. CertificateRequest(可选)
    • 请求客户端证书(双向认证)。
  6. ServerHelloDone
  7. ClientKeyExchange
    • 客户端发送PreMasterSecret(RSA加密)或DH公钥。
  8. CertificateVerify(可选)
    • 客户端证书签名验证。
  9. ChangeCipherSpec
    • 通知切换加密模式。
  10. Finished
    • 加密的HMAC校验值,验证握手完整性。
  11. 服务器响应 ChangeCipherSpec + Finished

四、TLS 1.1 (2006年)

安全增强

  • 引入显式初始化向量(IV)防御CBC攻击。
  • 改进对填充错误的处理。

流程变化

与TLS 1.0基本相同,仅增强安全机制。


五、TLS 1.2 (2008年)

核心改进

  1. 密码灵活性
    • 支持AEAD模式(如AES-GCM)。
    • 可配置PRF(伪随机函数),默认SHA-256。
  2. 扩展支持
    • 支持SNI(Server Name Indication)、ALPN等扩展。

握手流程变化

  • Finished消息使用改进的PRF计算。
  • 支持椭圆曲线加密(ECDSA/ECDHE)。

六、TLS 1.3 (2018年)

革命性简化

  • 握手仅需1-RTT(0-RTT可选)。
  • 移除不安全特性(RSA密钥交换、压缩、SHA-1等)。
标准握手(1-RTT)
ClientServerClientHello (密钥共享: client_share)ServerHello (密钥共享: server_share)Certificate + CertificateVerifyFinishedFinishedClientServer

步骤详解

  1. ClientHello
    • 密钥共享:发送DH公钥(如x25519)。
    • 支持的密码套件(仅AEAD)。
  2. ServerHello
    • 选择参数并返回DH公钥。
    • 双方通过ECDHE计算共享密钥。
  3. 服务器认证
    • Certificate+ CertificateVerify(签名证明私钥所有权)。
  4. Finished
    • 双方发送加密的Finished消息确认密钥。
0-RTT模式(有限场景)
  • 客户端在ClientHello中附带加密的早期数据(如session token)。
  • 风险:重放攻击(需业务层防御)。

被移除的特性

  • 静态RSA密钥交换
  • 压缩
  • 显式ChangeCipherSpec消息

各版本核心对比

特性TLS 1.0/1.1TLS 1.2TLS 1.3
握手延迟2-RTT2-RTT1-RTT (0-RTT可选)
前向保密可选(DHE)可选(DHE)强制(仅ECDHE)
密钥交换RSA/DHRSA/DH/ECDH仅ECDH
加密模式CBC常见CBC/AEAD仅AEAD (AES-GCM等)
签名算法RSA/DSARSA/ECDSAEdDSA/ECDSA
安全增强基础防护SHA-256支持移除所有已知漏洞机制

实践建议

  1. 禁用旧版本
    • 禁用TLS 1.0/1.1(PCI DSS等合规要求)。
  2. 优先TLS 1.3
    • 性能与安全性最佳平衡。
  3. 谨慎使用0-RTT
    • 仅限幂等操作(如GET请求)。
  4. 证书管理
    • 使用ECDSA证书减少开销(TLS 1.3优化)。

可通过Wireshark抓包或openssl s_client -connect命令验证握手过程。例如:

openssl s_client -connect example.com:443 -tls1_3

http://www.dtcms.com/a/346840.html

相关文章:

  • CSS学习步骤及详解
  • 美食菜谱数据集(13943条)收集 | 智能体知识库 | AI大模型训练
  • JUC之虚拟线程
  • ArcGIS Pro 安装路径避坑指南:从崩溃根源到规范实操(附问题修复方案)
  • 运行npm run命令报错“error:0308010C:digital envelope routines::unsupported”
  • 使用 AD 帐户从 ASP.NET 8 容器登录 SQL Server 的 Kerberos Sidecar
  • 【深入理解 Linux 网络】收包原理与内核实现(下)应用层读取与 epoll 实现
  • 5G物联网的现实与未来:CTO视角下的成本、风险与破局点
  • 嵌入式学习日记(33)TCP
  • OpenFeign相关记录
  • 【嵌入式】【搜集】RTOS相关技术信息整理
  • Ubuntu2204server系统安装postgresql14并配置密码远程连接
  • 【python与生活】如何自动总结视频并输出一段总结视频?
  • FastAPI + SQLAlchemy 数据库对象转字典
  • 【力扣 Hot100】每日一题
  • C++之list类的代码及其逻辑详解 (中)
  • Java线程的几种状态 以及synchronized和Lock造成的线程状态差异,一篇让你搞明白
  • Linux服务器Systemctl命令详细使用指南
  • GitLab CI:安全扫描双雄 SAST vs. Dependency Scanning 该如何抉择?
  • 智慧园区人车混行误检率↓78%!陌讯动态决策算法实战解析
  • html链接的target属性
  • Win11 下卸载 Oracle11g
  • 《文字的本体论突围:从工具论到符号学革命的范式转换》
  • B.30.01.1-Java并发编程及电商场景应用
  • 算法 ---哈希表
  • 从0到1:数据库进阶之路,解锁SQL与架构的奥秘
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(6):51-60语法
  • 为什么存入数据库的中文会变成乱码
  • 从罗永浩访谈李想中学习现代家庭教育智慧
  • C++编程语言:标准库:第36章——字符串类(Bjarne Stroustrup)