前置知识: 网络安全

密码学应用

00:00
1 min Advanced 2026/6/14

密码学应用:PKI体系、数字证书、TLS协议、密钥管理与密码工程

1. PKI 体系

1.1 组成

组件功能
CA证书颁发机构
RA注册机构
证书存储已颁发证书
CRL/OCSP证书吊销查询
终端实体证书使用者

1.2 证书链验证

根CA → 中间CA → 终端证书
  ↑ 验证签名    ↑ 验证签名

1.3 证书生命周期

申请 → 审核 → 签发 → 使用 → 续签/吊销

2. TLS 协议

2.1 TLS 1.3 握手

Client → Server: ClientHello + Key Share
Server → Client: ServerHello + Key Share + Certificate + Finished
Client → Server: Finished

1-RTT 完成支持 0-RTT 恢复

2.2 密码套件

TLS_AES_256_GCM_SHA384
│     │      │    │
│     │      │    └─ PRF/哈希
│     │      └────── AEAD加密
│     └───────────── 密钥交换
└─────────────────── 协议版本

3. 密钥管理

3.1 密钥生命周期

生成 → 分发 → 存储 → 使用 → 轮换 → 销毁

3.2 HSM

硬件安全模块(HSM)提供安全的密钥存储密码运算。

3.3 KMS

密钥管理服务(KMS)提供云端密钥管理

  • 密钥自动
  • 访问审计
  • 集成加密/解密API

4. 密码工程实践

4.1 安全随机数

# 安全随机数生成
import secrets
key = secrets.token_bytes(32)  # 256位密钥
nonce = secrets.token_bytes(12)  # 96位nonce

4.2 AEAD 加密

from cryptography.hazmat.primitives.ciphers.aead import AESGCM

key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
nonce = os.urandom(12)
ct = aesgcm.encrypt(nonce, plaintext, associated_data)
pt = aesgcm.decrypt(nonce, ct, associated_data)

4.3 密码学禁忌

  • 不要自己实现密码算法
  • 不要使用ECB模式
  • 不要重复使用nonce
  • 不要使用MD5/SHA1
  • 不要硬编码密钥

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式