主题
概念卡片:HTTPS 与加密机制
一句话机制:HTTPS = HTTP + SSL/TLS。它用混合加密保机密性(非对称加密交换「会话密钥」,之后全程对称加密传数据)、摘要算法 + 数字签名保完整性、数字证书验身份,把明文 HTTP 补成安全协议。
HTTP 的三大风险 → HTTPS 的三大解法
| HTTP 风险 | HTTPS 解法 | 手段 |
|---|---|---|
| 窃听(明文) | 机密性 | 混合加密 |
| 篡改 | 完整性 | 摘要算法(哈希指纹) |
| 冒充 | 身份认证 | 数字证书(服务器公钥放证书) |
对称 vs 非对称加密
| 对称加密 | 非对称加密 | |
|---|---|---|
| 密钥 | 一个(加密解密同钥) | 一对(公钥 + 私钥) |
| 速度 | 快 | 慢(耗性能) |
| 典型算法 | DES、3DES、AES、Blowfish | RSA、DSA、ECC |
| 用途 | 加密大数据(会话密钥) | 密钥交换、数字签名 |
混合加密:通信建立前用非对称加密交换「会话密钥」,之后全程用对称加密传明文数据——兼顾安全与速度。
数字签名与数字证书
- 数字签名 = 对内容哈希值做「私钥加密」。公钥解密成功 → 证明消息来自持有私钥方(验身份)。
- 数字证书 = 持有者「公钥 + 身份信息」由 CA(证书权威机构)用自己的私钥签名打包。客户端用内置的 CA 公钥验证书 → 拿到可信服务器公钥。
- 证书信任链:证书一般由中间证书签发,逐级验证直到根证书;根证书隔离越严格越好。
TLS 四次握手(以 RSA 密钥交换为例)
| 步 | 方向 | 内容 |
|---|---|---|
| ClientHello | C → S | 支持的 TLS 版本 + Client Random + 密码套件列表 |
| ServerHello | S → C | 确认版本 + Server Random + 密码套件 + 数字证书 |
| 客户端回应 | C → S | 取服务器公钥加密的 pre-master key + 加密通信改变通知 + 握手结束通知 |
| 服务器回应 | S → C | 加密通信改变通知 + 握手结束通知 |
双方用三个随机数(Client Random + Server Random + pre-master key)各自生成「会话密钥」,之后进入对称加密通信。 基于 RSA 的握手存在「前向安全」问题(私钥泄漏 → 历史密文全破解),现在多用 ECDHE 算法。
TLS 记录协议(保证应用数据完整性)
消息被分割成片段 → 压缩 → 加 MAC(消息认证码,哈希生成,防篡改 + 防重放) → 对称加密 → 加报头。握手协议负责协商密钥,记录协议负责保护数据。
不变量(必须成立的约束)
- 对称加密速度快但密钥交换不安全,非对称加密安全但慢 → 必须混合。
- 数字签名用「私钥加密、公钥解密」(验身份),不是「公钥加密、私钥解密」(保传输安全)。
- 中间人攻击的前提是客户端接受了伪造证书(用户点继续 / 系统被导入伪造根证书),HTTPS 协议本身无漏洞。
常见误解
- 以为「HTTPS 用非对称加密传所有数据」→ 非对称只用于握手交换会话密钥,数据全程对称加密。
- 以为「HTTPS 绝对安全」→ 抓包工具/中间人靠的是客户端信任了伪造根证书,本质是利用客户端漏洞。
- 以为「公钥加密私钥解密」是签名 → 那是保传输安全;签名是「私钥加密、公钥解密」。
关联
- HTTP:概念卡片:HTTP协议与报文
- 总览:计算机网络技术栈总览