分组密码:加密模式、可鉴别加密模式、加密认证模式
(本文由deepseek生成,仅供参考)
分组密码(如AES、DES)只能处理固定长度的数据块(如128位)。在实际应用中,我们需要处理任意长度的消息,这就需要工作模式来定义如何重复应用密码算法以安全地处理大量数据。
第一类:基础加密模式(仅提供机密性)
这类模式只关注如何将明文加密为密文,不提供完整性保护或认证。
1. ECB - 电子密码本模式
工作原理:将明文分割成独立的数据块,每个块用相同的密钥单独加密。
示意图:
明文块1 → 加密 → 密文块1 明文块2 → 加密 → 密文块2 ...
优点:简单、可并行计算。
致命缺点:
相同的明文块总是产生相同的密文块,无法隐藏数据模式。
容易受到重放攻击和块重排攻击。
现状:绝对不应用于加密任何有意义的数据,仅在某些特定场景下使用。
2. CBC - 密码分组链接模式
工作原理:每个明文块在加密前先与前一个密文块进行异或操作。第一个块使用初始化向量(IV)。
示意图:
IV →⊕→ 明文块1 → 加密 → 密文块1 →┐↘⊕→ 明文块2 → 加密 → 密文块2 →┘
优点:隐藏了明文模式,相同的明文块会产生不同的密文块。
缺点:
加密过程是串行的,无法并行化。
需要填充机制来处理非整块数据。
容易受到填充Oracle攻击。
应用:曾广泛用于TLS、IPsec等协议(现正被更安全的模式取代)。
3. CFB - 密码反馈模式
工作原理:将分组密码转换为自同步的流密码。前一个密文块被加密后与当前明文块异或。
示意图:
IV → 加密 →→⊕→ 明文块1 → 密文块1 →┐↘加密 →→⊕→ 明文块2 → 密文块2 →┘
优点:不需要填充,可以实时操作。
缺点:加密是串行的,错误会传播。
4. OFB - 输出反馈模式
工作原理:将分组密码转换为同步流密码。加密算法的输出被反馈为下一阶段的输入。
示意图:
IV → 加密 → 密钥流1 →⊕→ 明文块1 → 密文块1↘加密 → 密钥流2 →⊕→ 明文块2 → 密文块2
优点:错误不会传播,预处理密钥流可能。
缺点:必须确保IV不重复使用。
5. CTR - 计数器模式
工作原理:使用一个递增的计数器值作为加密输入,产生的密钥流与明文异或。
示意图:
计数器1 → 加密 → 密钥流1 →⊕→ 明文块1 → 密文块1 计数器2 → 加密 → 密钥流2 →⊕→ 明文块2 → 密文块2 ...
优点:
可并行加密和解密
不需要填充
可以随机访问任意数据块
缺点:必须确保计数器值不重复使用。
应用:作为许多现代加密方案的基础,包括GCM模式。
第二类:可鉴别加密模式(提供机密性+完整性)
这类模式在基础加密之上增加了完整性验证,但通常不提供完整的认证保证。
特点:
能够检测数据是否被篡改
但可能不提供对发送方的强认证
通常是向完整认证加密模式过渡的中间形态
注:在实际标准中,这一类别往往被更完善的AEAD模式所涵盖。
第三类:加密认证模式(AEAD - 认证加密与关联数据)
这是现代密码学的黄金标准,同时提供机密性、完整性和认证性。
核心特征:
机密性:防止未授权访问内容
完整性:确保数据未被篡改
认证性:验证数据来源
关联数据:支持对未加密的元数据(如头部)进行认证
主要AEAD模式:
1. GCM - 伽罗瓦/计数器模式
加密:基于CTR模式
认证:使用GHASH在伽罗瓦域进行计算
优点:高性能、可并行、有硬件加速支持
应用:TLS 1.2/1.3、IPsec、SSH
2. CCM - 计数器与CBC-MAC模式
加密:基于CTR模式
认证:使用CBC-MAC
特点:先认证后加密,需要预先知道消息长度
应用:WPA2、蓝牙LE、IEEE 802.11
3. EAX模式
加密:基于CTR模式
认证:使用CMAC
优点:对Nonce重复使用有更好的容错性
应用:高安全要求场景
4. OCB - 偏移码本模式
特点:在单个处理过程中同时完成加密和认证
优点:效率极高
历史:曾受专利限制,现已过期
5. ChaCha20-Poly1305
加密:ChaCha20流密码
认证:Poly1305 MAC
优点:软件实现性能优异,抗侧信道攻击
应用:TLS 1.2/1.3、WireGuard VPN
工作模式演进关系
text
基础加密模式 (仅机密性)↓ ECB → CBC → CFB/OFB → CTR (逐步改进)↓ 可鉴别加密模式 (机密性 + 基本完整性)↓ 加密认证模式/AEAD (机密性 + 完整性 + 认证性 + 关联数据)GCM, CCM, EAX, OCB, ChaCha20-Poly1305
分类总结与对比
类别 | 主要功能 | 代表性模式 | 安全性 | 现代应用推荐 |
---|---|---|---|---|
基础加密模式 | 仅机密性 | ECB, CBC, CFB, OFB, CTR | 低到中等 | 避免使用(除CTR作为组件) |
可鉴别加密模式 | 机密性+完整性 | (过渡形态) | 中等 | 被AEAD取代 |
加密认证模式(AEAD) | 机密性+完整性+认证性 | GCM, CCM, ChaCha20-Poly1305 | 高 | 强烈推荐 |
如何选择工作模式?
绝对不应该使用的模式:
ECB:任何需要安全性的场景
裸CBC/CFB/OFB:没有额外认证机制的场景
传统系统维护时的选择:
如果必须使用基础模式,选择 CTR 或 CBC,但必须与HMAC以ETM方式组合
现代系统开发的选择:
默认首选:AES-GCM(有硬件加速时)
移动/软件环境:ChaCha20-Poly1305
资源受限设备:AES-CCM
高性能需求:AES-OCB(专利已过期)
特殊场景:
只需要认证:使用 HMAC-SHA256 或 AES-CMAC
磁盘加密:通常使用 XTS模式(专为磁盘加密设计)
关键实践建议
永远不要单独使用基础加密模式 - 必须配合MAC提供完整性保护
优先选择AEAD模式 - 它们专门设计来避免组合错误
正确管理Nonce/IV - 确保永不重复使用
验证认证标签 - 在解密任何数据之前先验证完整性
结论:分组密码工作模式的发展体现了密码学从"单纯加密"到"全面安全"的演进。在现代密码学实践中,AEAD模式已成为新系统的标准选择,它们提供了简单、高效且安全的"一站式"解决方案,避免了手动组合加密和认证时可能出现的各种安全陷阱。