TLS 握手
TLS 握手 是什么?
TLS 握手Transport Layer Security 协议建立连接时的初始交换,用于验证服务器(可选地验证客户端)并派生用于加密会话后续数据的对称密钥。
TLS 握手在发送任何应用数据之前协商协议版本、密码套件、服务器身份与会话密钥。在 TLS 1.2(RFC 5246)中,握手需要两次往返,使用 ClientHello、ServerHello、Certificate、ServerKeyExchange,以及一对 Finished 消息来确认协商出的握手记录。TLS 1.3(RFC 8446,2018)将其压缩为一次往返,在 ServerHello 之后对所有内容进行加密,移除了陈旧的密码原语(RC4、无 AEAD 的 CBC 模式、静态 RSA 密钥交换、压缩),并支持 0-RTT 重连——速度快但易受重放攻击,因此只应承载幂等请求。
两个现代版本都强制使用临时 (EC)DHE 以实现前向保密,并通过沿信任链验证的 X.509 证书认证服务器。握手的记录哈希与 Finished MAC 正是历史上挫败降级与重协商攻击的关键:POODLE(2014)将受害者强制降级到 SSL 3.0 的 CBC 填充,FREAK 与 Logjam(2015)迫使其使用出口级 RSA/DH,BEAST 则利用了 TLS 1.0 的 CBC IV。如今 TLS 1.3 在服务器随机数中设置的降级保护哨兵值可以标识篡改行为。其他在运维上需要关注的故障模式包括弱密码套件或已弃用的密码套件、过期或错误签发的证书、缺失 OCSP stapling,以及共享基础设施上的 SNI / 证书不匹配。
sequenceDiagram participant C as 客户端 participant S as 服务器 C->>S: ClientHello 含版本、密码套件、密钥共享 S->>C: ServerHello 含选定套件、密钥共享 S->>C: Certificate + CertificateVerify S->>C: Finished Note over C,S: 双方通过 (EC)DHE 派生对称密钥 C->>S: Finished C->>S: 加密的应用数据
● 示例
- 01
浏览器与 https://example.com 在一次往返中完成 TLS 1.3 握手,协商 x25519 与 AES-GCM。
- 02
较旧的客户端在同一服务器上回退到 TLS 1.2 并选择 ECDHE-RSA-AES256-GCM-SHA384。
● 常见问题
TLS 握手 是什么?
Transport Layer Security 协议建立连接时的初始交换,用于验证服务器(可选地验证客户端)并派生用于加密会话后续数据的对称密钥。 它属于网络安全的 网络安全 分类。
TLS 握手 是什么意思?
Transport Layer Security 协议建立连接时的初始交换,用于验证服务器(可选地验证客户端)并派生用于加密会话后续数据的对称密钥。
如何防御 TLS 握手?
针对 TLS 握手 的防御通常结合技术控制与运营实践,详见上方完整定义。
TLS 握手 还有哪些其他名称?
常见的别称包括: TLS 握手协议。