对称加密基础

什么是对称加密

对称加密(Symmetric Encryption)是指加密和解密使用同一个密钥的加密方式。这是最古老也最高效的加密方式。

基本流程:发送方用密钥 K 加密明文 M 得到密文 C,接收方用同一个密钥 K 解密密文 C 恢复明文 M。

流密码与分组密码

流密码(Stream Cipher)

将明文逐比特(或逐字节)加密。生成一个与明文等长的密钥流(Keystream),然后与明文异或:c = m ⊕ keystream。

优点:不需要填充、可实时加密、错误不扩散。

代表算法:RC4、ChaCha20、Salsa20、A5/1(GSM 通信加密)。

分组密码(Block Cipher)

将明文分成固定大小的块(通常 64 或 128 位),逐块加密。

优点:经过充分研究和标准化、有多种安全的工作模式。

代表算法:DES(64 位块)、AES(128 位块)。

分组密码的工作模式

工作模式决定如何处理超过一个块的消息。

ECB(Electronic Codebook)

每个块独立加密:Ci = E(K, Pi)。

严重缺陷:相同明文块产生相同密文块,暴露数据模式。经典的"ECB 企鹅"图展示了这个问题——加密后的图像仍可辨认轮廓。永远不要使用 ECB 模式。

CBC(Cipher Block Chaining)

每个明文块先与前一个密文块异或再加密:Ci = E(K, Pi ⊕ Ci-1)。第一个块与 IV(初始化向量)异或。

优点:相同明文块在不同位置产生不同密文。解密可并行,加密不可并行。

注意:IV 必须不可预测(应为随机值),否则可能遭受选择明文攻击。

CFB(Cipher Feedback)

将分组密码转换为流密码模式。加密前一个密文块,然后与明文异或。

OFB(Output Feedback)

反复加密 IV 生成密钥流:Oi = E(K, Oi-1),Ci = Pi ⊕ Oi。

优点:密钥流可预计算;比特错误不扩散。缺点:不可并行。

CTR(Counter)

加密递增计数器生成密钥流:Ci = Pi ⊕ E(K, counter + i)。

优点:加密解密都可并行、随机访问、可预计算。是最推荐的非认证模式。

GCM(Galois/Counter Mode)

CTR 模式加密 + GHASH 认证标签。提供认证加密(AEAD):同时保证机密性、完整性和认证性。

是目前 TLS 1.3、IPSec 等协议中最推荐的模式。性能极佳,可并行。

初始化向量(IV)/Nonce

IV 的作用是确保相同密钥加密相同明文时产生不同密文,防止攻击者识别模式。

  • 随机 IV(CBC):必须是密码学安全的随机数,不可预测
  • Nonce(CTR、GCM):只需唯一不重复,可以是计数器。GCM 中 Nonce 重复会导致灾难性后果(密钥流重用)

IV/Nonce 通常不需要保密,可以与密文一起传输。