引言
AES作为分组密码,需要确定工作模式(Mode of Operation)。ECB和CBC是最常见的两种模式,它们在安全性、性能和应用场景上有显著差异。正确选择模式至关重要。
ECB模式(电子密码本)
ECB将明文分成独立块,每块独立加密。相同明文块产生相同密文块,存在明显的图案泄漏风险,不推荐用于加密多块数据。
优点:简单、可并行计算、错误不扩散。
缺点:相同明文块产生相同密文,易受统计分析攻击。
CBC模式(密码块链)
CBC模式引入初始化向量(IV),每个明文块加密前与前一个密文块异或,形成链式依赖。相同明文块在不同位置产生不同密文。
优点:安全性高,无ECB的图案问题。
缺点:需要IV,加密过程不可并行,错误会传播。
对比表格
| 特性 | ECB | CBC |
|---|---|---|
| 安全性 | 低(有模式泄漏) | 高 |
| 是否需要IV | 否 | 是(随机不可预测) |
| 并行加密 | 可以 | 不可以 |
| 并行解密 | 可以 | 可以 |
| 错误传播 | 不传播 | 影响后续块 |
选择建议
- 绝大多数场景应使用CBC模式,并确保IV随机且不可预测。
- 仅当加密数据块长度固定且无关联时(如随机数、固定长度的密钥加密),可考虑ECB,但需谨慎评估。
- 更安全的替代模式:GCM(认证加密)提供加密和完整性校验。
IV使用注意事项
IV必须是随机且不可预测的,每次加密应使用不同IV。IV可公开传输,但绝不能重复使用。重复IV可能导致密文关系暴露。
总结
CBC模式是通用安全选择,ECB应避免用于多块数据加密。实际应用中,结合HMAC或使用GCM等认证模式可提供更强保护。