1. 三个核心问题
整个体系其实在解决三件事:
- 你是谁?(身份认证)
- 数据能不能被偷看?(加密传输)
- 如何安全地交换密钥?(密钥分发)
2. 非对称加密(公钥 / 私钥)
核心定义
使用一对密钥:公钥 + 私钥
- 公钥:可以公开
- 私钥:必须保密
- 二者不可互相推导
两种用途(关键区分)
① 加密通信
graph LR
A[发送方] -->|公钥加密| B[密文]
B --> C[接收方]
C -->|私钥解密| D[明文]
② 身份认证(SSH)
sequenceDiagram
participant A as 客户端(私钥)
participant B as 服务器(公钥)
B->>A: challenge
A->>B: signature
B->>B: 公钥验证
B->>A: 通过/拒绝
关键公式
signature = Sign(私钥, challenge)
Verify(公钥, challenge, signature) = true
本质总结
私钥负责“生成证明”,公钥负责“验证证明”
3. SSH:基于签名的认证机制
文件结构
~/.ssh/id_ed25519 # 私钥
~/.ssh/id_ed25519.pub # 公钥
~/.ssh/authorized_keys # 服务器保存公钥
免密登录本质
服务器信任“某个公钥”,允许对应私钥登录
认证流程(核心)
sequenceDiagram
participant A as 本地电脑
participant B as 服务器
A->>B: 发起连接
B->>A: challenge(随机数)
A->>A: 私钥签名
A->>B: 返回 signature
B->>B: 公钥验证
B->>A: 登录成功
为什么安全
- challenge 每次不同(防重放)
- 无法从公钥推导私钥
- 只有私钥能生成正确签名
4. 对称加密:真正的数据传输
定义
加密和解密使用同一把 key
图示
graph LR
A[发送方] -->|同一key加密| B[密文]
B --> C[接收方]
C -->|同一key解密| D[明文]
特点
- ✔ 非常快(适合大量数据)
- ❌ 密钥分发困难
常见算法
| 算法 | 说明 |
|---|---|
| AES | 主流标准 |
| DES | 已淘汰 |
5. HTTPS:非对称 + 对称的组合
核心思想
用非对称加密交换对称密钥,再用对称加密通信
握手流程
sequenceDiagram
participant C as 客户端
participant S as 服务器
C->>S: ClientHello
S->>C: 证书(含公钥)
C->>C: 验证证书
C->>S: 用公钥加密 session_key
S->>S: 私钥解密 session_key
C->>S: 对称加密通信
S->>C: 对称加密通信
关键公式
session_key = Random()
encrypted = Encrypt(公钥, session_key)
本质总结
- 非对称:交换 key
- 对称:传输数据
6. Kerberos:另一种认证体系
核心思想
不用公钥体系,而是“票据 + 对称加密”
流程
sequenceDiagram
participant C as 客户端
participant K as KDC
participant S as 服务
C->>K: 请求认证
K->>C: 返回 TGT
C->>K: 请求服务票据
K->>C: 返回 Ticket
C->>S: 带 Ticket 访问
S->>C: 验证通过
特点
- ✔ 基于对称加密
- ✔ 强依赖中心(KDC)
- ✔ 不直接传密码
7. 三大体系对比
| 系统 | 核心机制 | 加密方式 | 用途 |
|---|---|---|---|
| SSH | 签名认证 | 非对称 + 对称 | 远程登录 |
| HTTPS | 密钥交换 | 非对称 + 对称 | 安全通信 |
| Kerberos | 票据认证 | 对称 | 集中认证 |
8. 总结
- 非对称加密:解决“信任和身份问题”
- 对称加密:解决“数据安全高效传输问题”
- SSH:用私钥证明身份
- HTTPS:用公钥交换密钥
- Kerberos:用票据做集中认证