一、SSL/TLS 核心概念
作用
- 在传输层(TCP)之上提供安全通信,实现:
- 加密(防窃听)
- 身份认证(防伪装)
- 数据完整性(防篡改)
- 在传输层(TCP)之上提供安全通信,实现:
版本演进
- SSL 1.0 → SSL 2.0 → SSL 3.0 → TLS 1.0 → TLS 1.1 → TLS 1.2 → TLS 1.3
- 现代主要使用 TLS 1.2/1.3。
二、核心加密技术
技术类型 | 作用 | 常见算法 |
---|---|---|
对称加密 | 加密实际传输的数据 | AES, ChaCha20, DES (已淘汰) |
非对称加密 | 安全交换对称密钥 | RSA, ECDH, DH |
数字证书 | 验证服务器身份 | X.509 证书 + CA 签名 |
散列函数 | 确保数据完整性 | SHA-256, SHA-384 |
三、TLS 握手流程(以 TLS 1.2 为例)
Mermaid 序列图
四、关键步骤详解
ClientHello
- 客户端发送支持的 TLS 版本、随机数 (
ClientRandom
)、密码套件列表(如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
)。
- 客户端发送支持的 TLS 版本、随机数 (
ServerHello + Certificate
- 服务器选择密码套件,发送随机数 (
ServerRandom
) 和数字证书(包含公钥)。
- 服务器选择密码套件,发送随机数 (
密钥交换
- RSA 模式:客户端生成预主密钥(
PreMasterSecret
),用服务器公钥加密后发送。 - ECDH/DH 模式:双方交换临时公钥,通过算法生成共享密钥。
- RSA 模式:客户端生成预主密钥(
生成会话密钥
MasterSecret = PRF(PreMasterSecret, "master secret", ClientRandom + ServerRandom)
- 会话密钥(加密密钥、MAC 密钥)从
MasterSecret
派生。
- 会话密钥(加密密钥、MAC 密钥)从
Finished 消息
- 双方发送加密的
Finished
消息,验证握手过程未被篡改。
- 双方发送加密的
五、TLS 1.3 优化
简化握手
- 合并消息,1-RTT(一次往返)完成握手。
- 0-RTT 模式(有重放攻击风险)。
增强安全性
- 移除不安全算法(RSA 密钥交换、SHA-1、RC4 等)。
- 所有握手消息加密(ServerHello 后启用)。
六、常见密码套件解析
示例:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- ECDHE:密钥交换算法(前向安全)
- RSA:证书签名算法
- AES_128_GCM:对称加密算法(128 位 AES-GCM)
- SHA256:完整性校验算法
七、数字证书验证流程
八、总结
- 核心目标:通过非对称加密安全交换对称密钥。
- 关键安全特性:前向保密(PFS)、身份认证、防重放攻击。
- 最佳实践:启用 TLS 1.3,使用强密码套件(如 AES-GCM),定期更新证书。