2. 对称密码基础

对称密码(Symmetric Cryptography)是密码学中最古老、最基础的加密方式。其核心特征是:加密密钥与解密密钥完全相同。通信双方必须在加密前通过安全信道协商出同一个密钥,才能实现机密性保护。本章将系统讲解对称加密原理、主流算法、密钥长度与安全性的关系,以及分组密码的工作模式。

2.1 对称加密原理

对称加密系统由五个基本要素组成:明文(Plaintext)、加密算法(Encryption Algorithm)、密钥(Key)、密文(Ciphertext)、解密算法(Decryption Algorithm)。加密过程可表示为:

C = E(K, P)      // 加密:使用密钥 K 加密明文 P 得到密文 C
P = D(K, C)      // 解密:使用相同密钥 K 解密密文 C 恢复明文 P

对称加密的安全性完全依赖于密钥的保密性。算法本身可以公开,只要密钥不被泄露,即使攻击者知道加密算法和密文,也无法恢复明文。

核心安全假设: 对称密码的安全性建立在“密钥空间足够大 + 算法无已知有效攻击”两个前提之上。密钥一旦泄露,整个加密体系即刻失效。

2.2 常见对称加密算法

目前业界最广泛使用的对称加密算法是 AES(Advanced Encryption Standard),其前身是 DES(Data Encryption Standard)。下表对比了这两种算法的核心参数:

算法 密钥长度 分组大小 轮数 设计年份 当前状态
DES 56 位 64 位 16 1977 已淘汰(可被暴力破解)
3DES 112 或 168 位 64 位 48 1998 逐步淘汰(性能差、分组小)
AES-128 128 位 128 位 10 2001 广泛使用(安全)
AES-192 192 位 128 位 12 2001 广泛使用(安全)
AES-256 256 位 128 位 14 2001 广泛使用(最高安全级)
实践建议: 新系统应默认使用 AES-256。AES 在硬件和软件上均有极高效率,且已被 NIST、ISO、IETF 等国际标准组织采纳为全球标准。

2.3 密钥长度与安全性

密钥长度直接决定暴力破解(Brute-Force Attack)的难度。每增加 1 位密钥,密钥空间扩大 2 倍,破解时间呈指数级增长。下表给出了不同密钥长度在当前计算能力下的安全评估:

密钥长度 密钥空间 暴力破解时间(假设 10⁹ 次/秒) 安全等级
56 位(DES) 2⁵⁶ ≈ 7.2 × 10¹⁶ 约 2.3 年 ❌ 不安全
64 位 2⁶⁴ ≈ 1.8 × 10¹⁹ 约 585 年 ⚠️ 短期安全
80 位 2⁸⁰ ≈ 1.2 × 10²⁴ 约 3.8 × 10⁷ 年 ✅ 安全
128 位(AES-128) 2¹²⁸ ≈ 3.4 × 10³⁸ 约 1.0 × 10²² 年 ✅ 安全
256 位(AES-256) 2²⁵⁶ ≈ 1.1 × 10⁷⁷ 远超宇宙年龄 ✅ 量子安全(对称)
重要提醒: 密钥长度不是唯一安全指标。算法设计缺陷、侧信道攻击(如时序攻击、功耗分析)、随机数生成器弱点,都可能使长密钥形同虚设。密钥管理(生成、分发、存储、轮换)与算法选择同等重要。

2.4 分组密码模式

分组密码(Block Cipher)每次只能加密固定长度的数据块(如 AES 为 128 位)。为了加密任意长度的数据,需要定义工作模式(Mode of Operation)。不同的模式在安全性、性能、并行性、错误传播等方面差异显著。

下图展示了五种主流分组密码模式的核心流程对比:

分组密码工作模式对比 ECB(电子密码本模式) 明文块 → 独立加密 → 密文块 ❌ 相同明文块产生相同密文块 不推荐用于多块数据加密 CBC(密码分组链接模式) 前一块密文 ⊕ 当前明文 → 加密 ✅ 需要随机 IV ❌ 错误传播:1 位错影响后续所有块 CFB(密文反馈模式) 将分组密码转为流密码 ✅ 适合实时数据流 ❌ 加密不能并行 OFB(输出反馈模式) 密钥流独立于明文/密文 ✅ 无错误传播 ❌ 密钥流可预计算(需防重用) CTR(计数器模式) 计数器 + 密钥 → 密钥流 ⊕ 明文 ✅ 可并行加密/解密 ✅ 无错误传播 ❌ 计数器不能重复 模式选择建议 • 通用数据加密:推荐 AES-256-GCM(CTR + 认证标签,同时提供机密性和完整性) • 文件/磁盘加密:推荐 AES-256-XTS(针对存储优化的 tweak 模式) • 传统兼容场景:AES-256-CBC + HMAC 仍可接受,但需注意 IV 随机性和填充预言攻击 • 禁止:ECB 模式用于多块数据(如照片、数据库记录)

2.5 模式对比总结

下表从六个关键维度对五种模式进行横向对比,帮助你在实际协议设计中做出正确选择:

模式 需要 IV 加密并行 解密并行 错误传播 流密码特性 典型应用
ECB ❌ ✅ ✅ 无(块独立) ❌ 单块密钥加密(如密钥包装)
CBC ✅(随机) ❌ ✅ 1 位错 → 当前块 + 下一块损坏 ❌ 文件加密、TLS 1.2 及之前
CFB ✅(随机) ❌ ✅ 1 位错 → 影响后续块直到移位寄存器清空 ✅ 实时流数据
OFB ✅(随机) ❌ ❌ 无错误传播 ✅ 噪声信道、卫星通信
CTR ✅(nonce + counter) ✅ ✅ 无错误传播 ✅ 现代首选(GCM、CCM 的基础)
现代协议设计黄金法则: 优先选择 认证加密模式(AEAD),如 AES-256-GCM 或 ChaCha20-Poly1305。它们将机密性、完整性、真实性合并在一个原子操作中,避免“加密 + 独立 MAC”组合可能引入的时序侧信道和实现错误。

2.6 对称密码在密钥交换协议中的角色

在《密码算法安全通信密钥交换协议》课程中,对称密码承担以下关键职责:

  • 会话加密: 密钥交换完成后,使用协商出的对称密钥(Session Key)加密后续通信数据。
  • 身份验证令牌保护: 对握手过程中的临时凭证、随机数、证书进行对称加密。
  • 密钥派生输入: 对称密码常作为 PRF(伪随机函数)的组成部分,用于从共享秘密派生多个子密钥。
  • 前向安全性保障: 结合临时 Diffie-Hellman 密钥交换,每次会话使用独立的对称密钥,即使长期私钥泄露,历史会话仍受保护。