TLS 1.2 握手是确保客户端和服务器之间安全通信的关键过程。它涉及多个步骤,包括身份验证、加密算法协商和会话密钥交换。
目录
TLS 1.2 握手是确保客户端和服务器之间安全通信的关键过程。它涉及多个步骤,包括身份验证、加密算法协商和会话密钥交换。
1. TCP 连接建立
2. 客户端 Hello(ClientHello)
3. 服务器 Hello(ServerHello)
4. 客户端验证证书与密钥交换
5. 会话密钥生成
6. 握手完成验证(Finished 报文)
总结:TLS 1.2 的安全特性
1. TCP 连接建立
- 流程:客户端与服务器通过三次握手建立可靠的 TCP 连接。
- 安全关联:确保通信通道的可靠性,为后续加密传输奠定基础。若 TCP 连接不稳定,后续 TLS 握手无法进行,避免了不可靠通道上的敏感信息泄露风险。
2. 客户端 Hello(ClientHello)
- 流程:客户端发送支持的最高 TLS 版本(如 TLS 1.2)、支持的加密套件列表(例如
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
)及客户端随机数(Client Random)。 - 安全机制:
- 随机数:Client Random 与会话密钥生成绑定,防止重放攻击(攻击者无法复用历史随机数生成相同密钥)。
- 加密套件协商:客户端列举支持的算法组合(如非对称加密、对称加密、哈希算法),服务器从中选择高安全性组合,避免使用弱算法(如 TLS 1.2 已废弃的 RC4 和 MD5)。
3. 服务器 Hello(ServerHello)
- 流程:服务器返回选定的 TLS 版本、加密套件、服务器随机数(Server Random)和数字证书(包含公钥)。
- 安全机制:
- 证书验证:证书由可信 CA(如 Let's Encrypt)签发,客户端验证证书链有效性(包括域名匹配、有效期、CA 签名),并通过 OCSP 或 CRL 检查证书吊销状态,防止中间人攻击。
- 随机数:Server Random 参与密钥生成,确保每次会话密钥唯一,即使攻击者截获历史数据也无法推导后续密钥
。
4. 客户端验证证书与密钥交换
- 流程:客户端验证服务器证书后,生成预主密钥(Pre-Master Secret),用服务器公钥加密后发送。
- 安全机制:
- 非对称加密保护:预主密钥通过服务器公钥加密(如 RSA 算法),仅持有私钥的服务器可解密,防止窃听。
- 前向安全性(若使用 ECDHE):若采用临时椭圆曲线 Diffie-Hellman(ECDHE),预主密钥由临时密钥生成,即使服务器私钥泄露,历史会话仍安全。
5. 会话密钥生成
- 流程:客户端与服务器分别通过 Client Random、Server Random 和 Pre-Master Secret,使用伪随机函数(PRF)生成主密钥(Master Secret),再派生出会话密钥(对称加密密钥,如 AES-128)。
- 安全机制:
- 密钥随机性:三个随机数确保会话密钥的唯一性,即使部分随机数泄露(如 Client/Server Random 为明文),仍需预主密钥才能推导完整密钥。
- 密钥派生函数:PRF 的不可逆性保障攻击者无法通过随机数反推预主密钥。
6. 握手完成验证(Finished 报文)
- 流程:双方发送加密的 Finished 消息,包含握手过程所有消息的哈希值(如 SHA-256)。
- 安全机制:
- 完整性校验:使用 HMAC 算法生成消息认证码(MAC),验证握手过程中数据未被篡改。若哈希值不匹配,连接立即终止。
- 加密传输:Finished 报文使用会话密钥加密,确保攻击者无法伪造或篡改验证信息。
总结:TLS 1.2 的安全特性
- 身份认证:通过数字证书验证服务器身份,抵御中间人攻击。
- 密钥安全:非对称加密保护预主密钥,对称加密提升性能,前向安全性可选。
- 数据完整性:HMAC 和哈希算法确保数据未被篡改。
- 算法灵活性:支持多种高安全性加密套件(如 AES-GCM、ECDHE),淘汰不安全算法。