对称密码学(Symmetric Cryptography)
对称密码学使用共享 secret key 构造分组密码、流密码、MAC 和 AEAD 等原语;现代系统通常用 KDF 派生用途隔离 key,再用 AEAD 保护大量数据,算法安全与 nonce、mode、key-management 同等重要。
[!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。
学习它们主要用于理解历史体系。
学习检查
- 对称密码学为什么不等于“只有 encryption”?
- block cipher 与 AEAD 的层次差异是什么?
- 为什么 key distribution 是对称密码系统的核心问题?
- AEAD 与 HMAC 分别解决什么目标?
- nonce/IV 为什么不能用一个统一规则概括所有算法?
- key separation 为什么要通过 KDF 完成?
- TLS 为什么会同时使用公钥密码与对称密码?
- “AES-256 所以一定安全”遗漏了哪些系统边界?