← [ BACK_TO_NOTES ]

对称密码学(Symmetric Cryptography)

对称密码学使用共享 secret key 构造分组密码、流密码、MAC 和 AEAD 等原语;现代系统通常用 KDF 派生用途隔离 key,再用 AEAD 保护大量数据,算法安全与 nonce、mode、key-management 同等重要。

#evergreen #concept #crypto

[!info] related notes

对称密码学(Symmetric Cryptography)

一句话定义

对称密码学的共同点是:

通信双方依赖同一个 secret key,或从同一 root secret 派生出相关用途 key。

但“对称密码学”不等于只有“加密/解密同一个 key”。

它包含多种 primitive:

  • block cipher;
  • stream cipher;
  • MAC;
  • AEAD;
  • KDF / PRF construction。

Block Cipher

典型代表:

  • AES;
  • DES / 3DES(历史)。

Block cipher 对固定大小 block 做可逆变换。

例如 AES:

128-bit plaintext block + key
→ 128-bit ciphertext block

但 block cipher 本体并不能直接安全处理任意长度消息。

还需要 mode / AEAD。

Stream Cipher

Stream cipher 生成 keystream,与 plaintext 组合得到 ciphertext。

代表思路:

  • ChaCha20 等。

Stream cipher 同样必须严格管理 nonce / counter。

keystream reuse 可能直接泄漏 plaintext 关系。

AEAD

现代消息保护优先考虑 authenticated encryption。

AEAD 同时提供:

  • confidentiality;
  • integrity/authenticity;
  • AAD authentication。

例如:

  • AES-GCM;
  • ChaCha20-Poly1305。

因此:

“用了 AES”远远不如“用了正确 nonce 管理的 AES-GCM”信息完整。

详见 AEAD。

MAC

如果只需要 message authentication,而不需要 confidentiality,可以使用 MAC。

HMAC 是典型方案:

message + shared secret
→ authentication tag

它和 encryption 是不同 primitive。

详见 HMAC。

Key Distribution

对称密码最大的系统性挑战之一不是算法速度,而是:

双方怎样安全获得 shared secret?

常见做法:

  • 预共享 key;
  • public-key key agreement;
  • KMS;
  • password KDF;
  • device provisioning。

这也是为什么现代协议会组合公钥密码与对称密码。

Hybrid Cryptography

典型 TLS:

certificate/signature
→ authenticate peer

ECDHE
→ establish shared secret

HKDF
→ derive traffic keys

AEAD
→ protect bulk data

因此:

public-key crypto 解决身份/密钥建立,对称密码负责高效数据保护。

Key Separation

一个 shared secret 不应该随意同时承担所有用途。

推荐:

root secret
→ KDF(context A) → encryption key
→ KDF(context B) → authentication key

这样即使一个用途暴露,也更不容易破坏其他用途。

Nonce / IV

Nonce/IV 是否需要:

  • random;
  • unique;
  • unpredictable;

取决于具体 algorithm / mode。

不能形成统一口号。

例如 GCM 最关键是:

同一个 key 下 nonce 不应重复。

而某些 CBC 场景要求 IV 不可预测。

所以 nonce policy 必须跟具体 primitive 绑定。

Padding

Block cipher mode 如果不能自然处理任意长度 plaintext,可能需要 padding。

例如 CBC 常见 PKCS#7。

Padding 处理错误可能引入 oracle attack。

AEAD mode 如 GCM 不需要这种 block padding。

对称密码不等于“弱于非对称密码”

不存在这种统一排名。

对称密码:

  • key 短;
  • 性能高;
  • 适合 bulk data。

非对称密码:

  • 支持 public/private trust model;
  • 更适合 signature / key agreement;
  • 计算通常更昂贵。

现代系统通常组合,而不是二选一。

Key Management

真实安全性依赖:

  • secure random key generation;
  • storage;
  • rotation;
  • access control;
  • backup/recovery;
  • destruction;
  • versioning。

硬编码的 AES-256 key 仍然是不安全设计。

历史算法

DES:

  • 56-bit effective key;
  • 已不适合现代安全保护。

3DES/TDEA:

  • 64-bit block;
  • NIST 已不允许用于新的 encryption protection。

学习它们主要用于理解历史体系。

学习检查

  1. 对称密码学为什么不等于“只有 encryption”?
  2. block cipher 与 AEAD 的层次差异是什么?
  3. 为什么 key distribution 是对称密码系统的核心问题?
  4. AEAD 与 HMAC 分别解决什么目标?
  5. nonce/IV 为什么不能用一个统一规则概括所有算法?
  6. key separation 为什么要通过 KDF 完成?
  7. TLS 为什么会同时使用公钥密码与对称密码?
  8. “AES-256 所以一定安全”遗漏了哪些系统边界?
创建于 2026/1/5 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本