首页/安全/加密与证书速查/AES 的 CFB 与 OFB 流式模式
加密算法基础95 条

AES 的 CFB 与 OFB 流式模式

两种把分组密码当流密码用的历史模式:CFB 反馈密文、OFB 反馈加密输出;见于早期协议与个别文件格式,新协议中使用减少。

加密与证书速查安全更新于 2026-10-13

CFB 与 OFB 流式模式

CFB 与 OFB 是两种把分组密码当流密码用的历史模式:前者反馈密文,后者反馈加密输出。它们出现在早期协议与个别文件格式中,新协议中使用已明显减少。两者都没有完整性保护,且与计数器模式同属流式用法:在同一密钥下重复使用初始值会造成密钥流复用,危害比分组模式中初始值使用不当更严重。

基本信息

标准分组密码工作模式标准
CFB密文反馈,按段处理,段内错误影响后续段
OFB输出反馈,错误不扩散,但初始值重用后果严重
完整性两者均无

典型使用场景

  • 兼容旧系统:读取早期协议或文件格式的加密数据
  • 迁移评估:判断现有代码是否使用流式模式
  • 排错:解密结果异常时核对段长与初始值
  • 理解差异:观察流式用法的错误传播特点
  • 禁用清单:新设计不再选用这两种模式

命令行示例

命令行示例
openssl enc -aes-256-cfb -pbkdf2 -salt -in plain.txt -out cfb.enc
openssl enc -aes-256-ofb -pbkdf2 -salt -in plain.txt -out ofb.enc
openssl enc -d -aes-256-cfb -pbkdf2 -in cfb.enc -out plain.out   # 解密

两种模式对照

维度CFBOFB
反馈对象密文加密输出
段长可配置,影响效率与传播不涉及段内切分
错误传播段内错误影响后续错误不扩散
初始值重用后果严重后果严重
CFB 与 OFB 与计数器模式同属流式用法:同一密钥下重复使用初始值会导致密钥流复用,后果比分组模式中初始值使用不当更严重。

落地建议

  • 新设计改用认证加密模式
  • 读取旧数据时确认段长与初始值来源
  • 加密与认证分离的自研实现要单独审查
  • 把这两种模式加入禁用清单
OFB 的错误不扩散容易被误认为更安全,但它同样没有完整性保护,密文被篡改后解密不会报错,只会得到错误明文。
这两种模式都属于「把分组密码当流密码用」的构造:不需要填充,可以逐段输出,但也因此少了分组模式里由填充与链接带来的结构性约束,初始值管理成为唯一的重复防护。

易错点

  • CFB 的段长影响错误传播与效率,迁移系统时要核对原实现的段长
  • OFB 出错不扩散容易被误认为更安全,实际同样没有完整性保护
  • 同一密钥下重复使用初始值,造成密钥流复用
  • 把流式模式用于需要完整性校验的场景,缺少认证
  • 从旧格式迁移时只换算法不改构造,认证缺失问题仍然存在
  • 误以为不需要填充就意味着可以随意重排密文,实际会直接破坏数据

数据来源与参考

  • NIST SP 800-38A(CFB/OFB 模式)
  • OpenSSL 官方文档 openssl-enc(1)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌