HTTPS 加密原理 是现代互联网安全上网的核心支柱,它让你的浏览器和网站之间通信变得保密、防篡改、可信。下面用通俗 + 准确的方式完整说明它的原理。
1. HTTPS 到底比 HTTP 多做了什么?
| 对比项 | HTTP | HTTPS |
|---|---|---|
| 协议 | 明文传输 | 加密传输 |
| 端口 | 80 | 443 |
| 底层协议 | TCP | TCP + TLS/SSL |
| 主要保护 | 无 | 保密性 + 完整性 + 身份认证 |
| 是否防窃听 | 否(WiFi、运营商、路由器都可见) | 是 |
| 是否防篡改 | 否 | 是(通过 MAC 或 AEAD) |
| 是否防冒充 | 否 | 是(证书 + 公钥验证) |
HTTPS = HTTP over TLS(或者以前叫 HTTP over SSL)
2. HTTPS 依赖的三大加密手段(混合加密)
HTTPS 实际上同时使用了三种加密技术,各司其职:
| 加密类型 | 代表算法 | 特点 | 在 HTTPS 中的作用 |
|---|---|---|---|
| 非对称加密 | RSA, ECDHE, X25519 | 公钥加密、私钥解密(或反之) | 安全交换密钥、验证服务器身份 |
| 对称加密 | AES-GCM, ChaCha20-Poly1305 | 同一把密钥加解密,速度非常快 | 真正加密所有应用数据(HTTP 请求/响应) |
| 摘要算法 / HMAC | SHA-256, SHA-384 | 单向散列 + 带密钥验证 | 保证数据完整性、防篡改 |
核心思想:用慢但安全的非对称加密来协商一把快且安全的对称密钥,后续全部用对称加密传输数据。
3. TLS 握手过程(最核心的部分)
现代主流是 TLS 1.3(2018年标准化,目前2025-2026年占比已非常高),它比 TLS 1.2 更快、更安全。
TLS 1.3 握手流程(1-RTT 主流情况)
- ClientHello(客户端 → 服务器,明文)
- 我支持的 TLS 版本(通常只说 TLS 1.3)
- 我支持的密码套件列表(cipher suites)
- Client Random(32字节随机数)
- Key Share(提前发送客户端的公钥份额,例如 x25519 或 secp256r1)
- 支持的扩展(SNI、支持的签名算法等)
- ServerHello + Certificate + Finished(服务器 → 客户端,明文 + 部分加密)
- 选定密码套件
- Server Random(32字节随机数)
- Key Share(服务器的公钥份额)
- 服务器证书(包含域名、公钥,由CA签名)
- 服务器用私钥签名(证明自己拥有证书私钥)
- 服务器立即计算出会话密钥,发送 Finished 消息(用新密钥加密,证明密钥正确)
- 客户端验证 & Finished
- 验证证书链(是否由可信 CA 签发、域名是否匹配、是否过期、是否被吊销)
- 用服务器公钥验证签名
- 计算相同的会话密钥
- 发送 Finished 消息(加密)
- 握手结束,之后所有数据都用对称加密(AES-GCM / ChaCha20 等)
TLS 1.3 的关键优化:
- 1-RTT(1个来回)就能开始发加密数据(TLS 1.2 要 2-RTT)
- 前向安全性(PFS)成为强制(几乎都用 ECDHE)
- 删除了不安全的特性(RSA 密钥交换、MD5/SHA-1 等)
4. 为什么能保证“安全”?逐一拆解三大目标
| 安全目标 | 怎么实现 | 攻击者能做到什么? |
|---|---|---|
| 保密性 | 对称加密(AES-GCM/ChaCha20) | 看不到明文内容 |
| 完整性 | AEAD 模式(GCM/ChaCha20-Poly1305)自带认证 | 改一个比特就会被发现 |
| 身份认证 | 服务器证书 + CA 签名 + 公钥验证签名 | 冒充服务器会被浏览器拒绝(证书不匹配) |
| 前向安全 | 每次连接用临时 Diffie-Hellman(ECDHE) | 即使私钥以后泄露,历史会话也解不了 |
5. 常见问题快速解答
- 为什么需要 CA?
防止中间人自己签发假证书。只有被操作系统/浏览器信任的根证书才能签发有效域名证书。 - 0-RTT(Session Resumption)是怎么回事?
TLS 1.3 支持“0-RTT”模式:用之前保存的会话票据(Ticket)直接加密发数据。速度最快,但有重放风险(一般只用于 GET 请求)。 - TLS 1.2 还安全吗?
如果强制用 ECDHE + AES-GCM + SHA-256 其实还算安全,但已逐渐被淘汰(不支持前向安全套件、握手更慢)。 - 中间人攻击为什么很难成功?
除非中间人能: - 安装自己的根证书到用户设备(企业环境可能做到,个人基本不可能)
- 或者攻破某个大 CA(历史上发生过几次,但代价极大)
总结一句话
HTTPS 的加密原理本质是:
通过非对称加密 + 数字证书完成身份验证和密钥协商 → 得到一个每次连接都不一样的对称会话密钥 → 用它高速加密所有后续的 HTTP 数据。
这就是为什么你能在咖啡店 WiFi 上安全登录银行、购物、发私密消息的原因。
想深入哪个部分?
- TLS 1.3 vs 1.2 的详细对比
- 密码套件(cipher suite)到底是什么
- Wireshark 抓包看真实握手
- 证书链验证细节
- 前向安全性(PFS)原理
- 0-RTT 的风险与使用场景
随时告诉我~