课程笔记:HTTPS原理——非对称加密算法
课程名称:计算机网络应用 核心摘要:本讲围绕 HTTPS 通讯安全的基石——非对称加密算法展开。讲解公钥/私钥双密钥对的工作机制,对比对称与非对称加密的优劣,推演"仅用非对称加密"的缺陷,最终引出"非对称加密协商对称密钥"的组合方案,并指出报文篡改与身份伪装两大隐患,预告由数字签名与数字证书解决。
一、 核心概念与原理
- 非对称加密(Asymmetric Encryption):现代计算机通讯安全的基石,尤其针对 HTTPS 协议。
- 双密钥对(Key Pair):与对称加密只有一个密钥不同,非对称加密使用一对密钥:
- 公钥(Public Key):公开对外,任何人可获取。
- 私钥(Private Key):仅由服务端保存,永远不对外暴露。
- 加解密规则(两种情况):
- 公钥加密 → 只能用 私钥 解密。
- 私钥加密 → 只能用 公钥 解密。
- 服务端角色:同时保存公钥与私钥;客户端通过请求获取公钥。
二、 技术细节与协议分析
2.1 非对称加密工作流程(客户端 ↔ 服务端)
| 步骤 | 方向 | 加密方式 | 解密方式 | 黑客能否破解 | | | --- | --- | --- | --- | | 1. 请求公钥 | Client → Server | — | — | 公钥任何人可获取 | | 2. 返回公钥 | Server → Client | — | — | 公钥公开,无秘密 | | 3. 客户端发密文 | Client → Server | 公钥加密 | 服务端用 私钥解密 | ❌ 解不开(无私钥) | | 4. 服务端发密文 | Server → Client | 私钥加密 | 客户端用 公钥解密 | ✅ 可解开(公钥公开) |
关键点:客户端→服务端方向安全;服务端→客户端方向若被中间人抓包,因公钥公开,密文可被解密。
2.2 对称加密 vs 非对称加密 对比
| 对比项 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个(共用) | 2 个(公钥 + 私钥,一对) |
| 算法复杂度 | 较低 | 更复杂 |
| 加密强度 | 一般 | 更好(安全性更高) |
| 加解密速度 | 快 | 慢(性能远低于对称加密) |
| 典型算法 | AES | RSA、DSA、ECDSA |
2.3 常用非对称加密算法
- RSA
- DSA
- ECDSA(椭圆曲线数字签名算法)
算法底层数学原理(如大整数分解、椭圆曲线)本讲不展开。
2.4 TLS 握手中的密码套件(抓包实证)
在 TLS 握手阶段,客户端发送 Client Hello 消息时,会同时携带:
- 对称加密算法列表:如
AES128、AES256 - 非对称加密算法列表:如
RSA、DSA、ECDSA
密钥长度标识:
| 标识 | 含义 |
|---|---|
RSA128 / RSA256 | RSA 算法,密钥长度 128 / 256 位 |
ECDSA128 / ECDSA256 | ECDSA 算法,密钥长度 128 / 256 位 |
128、256 表示 密钥长度(位),长度越长安全性越高。
三、 实践应用与配置命令
3.1 仅用非对称加密的推演(存在缺陷)
1. Client → Server : 请求公钥
2. Server → Client : 返回公钥
3. Client → Server : 公钥加密的密文 (Server 用私钥解密 ✅)
4. Server → Client : 私钥加密的密文 (Client 用公钥解密)
缺陷:第 4 步若被黑客中间人抓包,因公钥公开,黑客可用公钥解密获得明文。
3.2 对称 + 非对称 组合方案(解决窃听问题)
核心思想:用非对称加密协商出对称加密的密钥,后续通讯使用对称加密。
# 推演流程
1. Client → Server : 请求公钥
2. Server → Client : 返回公钥
3. Client 本地生成随机数(作为对称加密的密钥)
4. Client → Server : 公钥加密随机数 # 只能由私钥解密,黑客无法获取
5. Server 用私钥解密 → 得到随机数
6. 双方都持有该随机数,作为对称加密的密钥
7. 此后所有正式通讯密文均由对称加密算法加密,密钥 = 随机数
设计权衡:
- 非对称加密 安全性高但性能低 → 仅用于协商密钥(一次性)。
- 对称加密 性能高 → 用于后续大量数据通讯。
- 随机数由客户端本地生成,且经公钥加密传输,过程保密。
四、 重点与难点提示
考点 / 易错点
- 公钥加密只能私钥解密,私钥加密只能公钥解密——方向不可混淆。
- 私钥永远不对外暴露,只有服务端持有。
- 非对称加密 安全性高于 对称加密,但 速度慢于 对称加密。
- 组合方案中,随机数 = 对称加密的密钥,由客户端生成。
- 随机数传输必须用 公钥加密(而非对称加密),确保只有服务端能解密。
- TLS Client Hello 中同时携带对称与非对称算法列表,并非只发 AES。
面试题
- 为什么 HTTPS 不直接全程使用非对称加密? → 性能瓶颈:非对称加密加解密慢,无法承担大量业务数据。
- 为什么 HTTPS 不只用对称加密? → 密钥分发难题:双方需先安全共享密钥,明文传输会被窃听。
- HTTPS 如何兼顾安全与性能? → 非对称加密协商对称密钥(一次),对称加密承载业务通讯(长期)。
- 列举常见非对称加密算法及密钥长度含义。 → RSA / DSA / ECDSA;128、256 指密钥位数。
仍未解决的两大隐患
| 隐患 | 描述 | 对应解决方案(后续课程) |
|---|---|---|
| 报文遭篡改 | 黑客在通讯伊始切入,伪装为 Server 与客户端协商密钥,可任意修改数据 | 数字签名(一旦篡改立即被发现) |
| 身份被伪装 | 无安全认证机制,无法证明"我是我",黑客可冒充服务器 | 数字证书(CA 签发,可识别假证书) |
五、 课后疑问/遗留问题
- 数字签名 的具体原理与校验流程如何实现?篡改后如何被"立刻发现"?
- 数字证书 体系(CA 证书链、签发与验证)如何证明"我是我"?客户端如何识别伪造证书?
- 完整的 HTTPS = 对称加密 + 非对称加密 + 数字签名 + 数字证书 四者如何协同工作?
- RSA 基于大整数分解、ECDSA 基于椭圆曲线——底层数学原理细节留待后续展开。