1. 三个核心问题

整个体系其实在解决三件事:

  1. 你是谁?(身份认证)
  2. 数据能不能被偷看?(加密传输)
  3. 如何安全地交换密钥?(密钥分发)

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:用票据做集中认证