本文概述 TLS 1.3。TLS 传输一系列记录。在加密之前,握手数据由
TLSPlaintext 记录承载;旧版记录版本字段用于实现互操作性,TLS 1.3 对等端
不会使用该字段协商协议。记录在进行允许的扩展之前,内容大小限制为 2^14 字节。
握手 #
客户端发送 ClientHello,其中包含一个随机值、支持的密码套件、密钥
共享、扩展和旧版会话 ID。其 legacy_version 为 0x0303;
supported-versions 扩展用于协商 TLS 1.3。当前的标准 AEAD 套件包括
采用 SHA-256 或 SHA-384 的 AES-GCM 和 ChaCha20-Poly1305。
服务器回复 ServerHello,选择密码套件和密钥共享。如果服务器需要另一项
可接受的密钥共享,也可以改为发送 HelloRetryRequest;随后客户端发送
第二个 ClientHello,其中包含所请求的变更。双方根据密钥交换结果和握手消息记录
派生握手流量秘密值,使用 Finished 验证握手,并派生应用流量秘密值。
使用证书认证时,服务器会发送 Certificate 和 CertificateVerify。
TLS 1.3 会加密 ServerHello 之后的握手消息,并移除了已过时的 RSA 密钥
传输和静态 DH 协商。证书验证仍然至关重要:客户端需要验证通向受信任颁发者的
证书链、主机名或服务身份、有效期、密钥用途、签名算法以及相关的吊销策略。
证书颁发机构在验证 DNS 名称或其他主体身份的控制权后签发证书;该证书将
相应身份与公钥绑定。
评论
在 GitHub 上阅读或评论(发表评论需要登录)