🔐 HTTPS vs HTTP:加密连接怎么来的
HTTP 明文有三大风险,HTTPS 加了一层 SSL/TLS。TLS 握手、混合加密、为什么不全用非对称加密。
HTTP 明文传输的三大风险
👂 窃听
HTTP 是明文传输,数据在网络上裸奔,中间人能看到内容——比如密码、银行卡号。
✏️ 篡改
中间人可以修改传输的内容——改个金额、注入恶意代码,接收方无从察觉。
🎭 冒充
无法确认对方身份——你连的「银行网站」可能是攻击者伪造的钓鱼站。
HTTP
明文传输
可窃听/篡改/冒充
无加密
HTTPS = HTTP + SSL/TLS
加密传输
防窃听/篡改/冒充
SSL 已演进为 TLS
TLS 握手流程(简化版)
混合加密:非对称换钥 + 对称传输
🔑 非对称加密(握手用)
RSA / ECDHE,一公一私。
用于安全交换对称密钥 + 身份认证。
安全但慢。
⚡ 对称加密(传输用)
AES / ChaCha20,同一个密钥加解密。
用于实际传输数据,效率远高于非对称。
有硬件加速(AES-NI),几乎无性能瓶颈。
HTTPS 的巧妙分工:
握手阶段用非对称加密(ECDHE 密钥交换 + 证书验证),安全地协商出一个临时对称密钥。
传输阶段用对称加密(AES-GCM/ChaCha20),用会话密钥加密所有数据,享受硬件加速。
既用非对称的安全性(密钥分发、身份认证),又用对称的高效(批量数据加密)。
为什么不全用非对称加密
🐢 非对称太慢
非对称加密(RSA/ECDHE)涉及大数模幂或椭圆曲线点乘,计算量大。
RSA-2048 比 AES-128 慢 1000-10000 倍。
高并发 Web 服务器(每秒万级请求)全程非对称,完全不可接受。
📦 密文膨胀 + 长度限制
RSA-2048 最多加密 245 字节,且密文长度恒等于密钥长度。
大量数据要分块加密,效率低、传输开销大。
| 维度 | 非对称加密 | 对称加密 |
|---|---|---|
| 速度 | 慢 1000-10000 倍 | 快(硬件加速) |
| 密钥 | 一公一私 | 同一密钥 |
| 用途 | 密钥交换/身份认证 | 批量数据加密 |
| 算法 | RSA / ECDHE / ECC | AES / ChaCha20 |
| HTTPS 中 | 握手阶段 | 传输阶段 |
进阶:前向安全 & TLS 版本
🛡️ 前向安全(PFS)
现代 HTTPS 用 ECDHE 而非 RSA 做密钥交换。
每次会话生成临时密钥对,即使服务器私钥泄露,也无法解密历史通信。
这是 RSA 密钥交换给不了的安全特性。
⚡ TLS 1.3 vs 1.2
TLS 1.3 握手从 2-RTT 降到 1-RTT(更快),支持 0-RTT。
移除了不安全套件(RSA 密钥交换、RC4、3DES)。
主流现在是 TLS 1.2 和 1.3。
抓包 HTTPS
需要安装中间人证书(Charles/Fiddler/mitmproxy),客户端信任代理的 CA 证书即可解密。
SNI 是什么
TLS 扩展,客户端握手时发域名,让同一 IP 上的多个 HTTPS 站点能返回对应证书。
证书链验证
客户端按 CA 证书链逐级验证服务器证书真伪(根 CA → 中间 CA → 服务器证书)。
HTTPS = HTTP + SSL/TLS,解决明文传输的窃听/篡改/冒充。TLS 握手:ClientHello → ServerHello+证书 → 证书验证 → 密钥交换 → Finished,之后用对称密钥加密通信。混合加密分工:握手用非对称(ECDHE 换钥+认证)、传输用对称(AES)。不全用非对称是因为它慢 1000-10000 倍、密文膨胀有长度限制。ECDHE 提供前向安全。
HTTPS 等于 HTTP 加 SSL/TLS 加密层。HTTP 是明文传输,有三大风险:窃听、篡改、冒充;HTTPS 通过 SSL/TLS 解决这三个问题。具体是握手阶段用非对称加密验证身份、安全地交换对称密钥,传输阶段用对称加密加密数据,这样既安全又高效。HTTPS 比 HTTP 多了 TLS 握手,会有额外的延迟,但换来的是安全。
简化说五步。第一步 ClientHello,客户端发支持的 TLS 版本和加密套件列表还有随机数;第二步 ServerHello,服务端选定版本套件,返回数字证书含公钥和随机数;第三步证书验证,客户端验证证书是不是 CA 签发、没过期、域名匹配;第四步密钥交换,客户端生成一个 Pre-Master Secret 用服务器公钥加密发过去,双方用客户端随机数、服务端随机数、预主密钥算出对称会话密钥;第五步 Finished,双方用会话密钥加密一条握手完成消息验证没被篡改,然后开始加密通信。
两个核心原因。一是性能,非对称加密比对称加密慢 1000 到 10000 倍,RSA-2048 涉及大数模幂运算,AES 有硬件加速很快,高并发 Web 服务器全程非对称完全不可接受。二是密文膨胀,RSA-2048 最多只能加密 245 字节,大量数据要分块加密,效率低传输开销大。所以 HTTPS 是混合加密:握手阶段用非对称加密安全地交换对称密钥,传输阶段用对称加密加密数据。