HTTPS 加密原理
SSL/TLS 握手过程、对称与非对称加密、数字证书及中间人攻击防护
问题
解释 HTTPS 的加密原理,包括 SSL/TLS 握手过程、对称/非对称加密的作用、数字证书的验证机制,以及如何防止中间人攻击。
解答
对称加密与非对称加密
对称加密:
- 加密和解密使用同一把密钥
- 速度快,适合大量数据传输
- 问题:如何安全地传递密钥?
非对称加密:
- 公钥加密,私钥解密(或反过来)
- 速度慢,但解决了密钥传递问题
- 公钥可以公开,私钥必须保密
HTTPS 结合两者优点:用非对称加密交换密钥,用对称加密传输数据。
SSL/TLS 握手过程
客户端 服务器
| |
| 1. ClientHello |
| (支持的TLS版本、加密套件、随机数A) |
| --------------------------------------> |
| |
| 2. ServerHello |
| (选定的TLS版本、加密套件、随机数B) |
| <-------------------------------------- |
| |
| 3. Certificate |
| (服务器数字证书) |
| <-------------------------------------- |
| |
| 4. 客户端验证证书 |
| 生成预主密钥(Pre-Master Secret) |
| 用服务器公钥加密后发送 |
| --------------------------------------> |
| |
| 5. 双方用随机数A + 随机数B + 预主密钥 |
| 生成相同的会话密钥 |
| |
| 6. 后续通信使用会话密钥对称加密 |
| <=====================================> |
数字证书验证
数字证书包含:
- 服务器公钥
- 域名信息
- 证书有效期
- CA(证书颁发机构)的数字签名
验证流程:
1. 服务器发送证书
2. 客户端检查证书是否过期
3. 客户端检查证书域名是否匹配
4. 客户端用 CA 公钥验证证书签名
- CA 公钥预装在浏览器/操作系统中
- 签名验证通过 = 证书未被篡改
5. 验证通过,提取服务器公钥
证书链验证:
根证书 (Root CA)
↓ 签发
中间证书 (Intermediate CA)
↓ 签发
服务器证书 (End Entity)
客户端从下往上逐级验证,直到找到受信任的根证书
中间人攻击与防护
中间人攻击原理:
正常情况:
客户端 <=========> 服务器
中间人攻击:
客户端 <===> 攻击者 <===> 服务器
(伪装成服务器)
攻击者尝试:
- 拦截客户端请求
- 向客户端发送伪造证书
- 与服务器建立另一个连接
- 解密、查看、篡改数据后转发
HTTPS 如何防护:
// 伪代码:证书验证逻辑
function verifyCertificate(cert) {
// 1. 检查证书是否过期
if (cert.notAfter < Date.now()) {
return { valid: false, reason: '证书已过期' };
}
// 2. 检查域名是否匹配
if (!cert.domains.includes(requestedDomain)) {
return { valid: false, reason: '域名不匹配' };
}
// 3. 验证证书签名(核心防护)
// 攻击者没有 CA 私钥,无法伪造有效签名
const isSignatureValid = verifySignature(
cert.tbsCertificate, // 待签名的证书内容
cert.signature, // 证书签名
caPublicKey // CA 公钥(预装在系统中)
);
if (!isSignatureValid) {
return { valid: false, reason: '证书签名无效' };
}
// 4. 检查证书是否被吊销(CRL/OCSP)
if (isRevoked(cert)) {
return { valid: false, reason: '证书已被吊销' };
}
return { valid: true };
}
攻击者无法成功的原因:
- 没有 CA 私钥 → 无法伪造受信任的证书
- 自签名证书 → 浏览器会显示安全警告
- 域名不匹配 → 验证失败
完整的 HTTPS 安全机制
┌─────────────────────────────────────────────────────┐
│ HTTPS 安全保障 │
├─────────────────────────────────────────────────────┤
│ 机密性:对称加密保护数据内容 │
│ 完整性:MAC/HMAC 检测数据篡改 │
│ 身份认证:数字证书验证服务器身份 │
│ 防重放:随机数 + 序列号防止重放攻击 │
└─────────────────────────────────────────────────────┘
关键点
- 混合加密:非对称加密交换密钥,对称加密传输数据,兼顾安全与性能
- 三个随机数:客户端随机数 + 服务器随机数 + 预主密钥,共同生成会话密钥
- 证书链验证:从服务器证书逐级向上验证,直到受信任的根 CA
- 中间人防护:攻击者没有 CA 私钥,无法伪造有效证书签名
- 前向保密:使用 ECDHE 等算法,即使私钥泄露,历史通信仍安全
目录