← [ BACK_TO_NOTES ]

CFB(Cipher Feedback)

CFB 使用 block cipher 的 encryption primitive 和前一段 ciphertext/IV 生成 keystream-like 输出,与 plaintext segment 异或后反馈 ciphertext;它无需 padding、具有 self-synchronizing 特征,但只提供 confidentiality,不提供 authentication。

#evergreen #concept #crypto #algorithm

[!info] related notes

CFB(Cipher Feedback)

一句话定义

CFB 把 block cipher 用成一种 feedback-based stream-like mode。

核心思路:

previous ciphertext / IV
→ block-cipher encryption
→ keystream segment
XOR plaintext segment
→ ciphertext segment

然后 ciphertext 再反馈进下一轮状态。

CFB 不是独立 Stream Cipher

CFB 可以按 bit、byte 或 block segment 处理数据,因此表现很像 stream cipher。

但它仍然依赖底层 block cipher,例如:

  • AES;
  • 历史 DES。

所以:

CFB 是 block-cipher mode,不是 ChaCha20 这类独立 stream cipher primitive。

Segment Size

CFB 可以定义不同 segment size,例如:

  • CFB-8;
  • CFB-128;

具体名称和支持情况取决于 library/protocol。

segment size 会影响:

  • throughput;
  • feedback granularity;
  • error propagation;
  • interoperability。

不能只写“CFB 按字节工作”。

IV

第一轮没有前一段 ciphertext,因此需要 IV。

对 CFB,经典标准要求 IV 满足不可预测性要求。

IV 通常不需要保密,但必须按目标标准正确生成。

No Padding

CFB 可以处理小于 block size 的 segment。

因此它不像 CBC 那样必须通过 block padding 才能处理任意长度 plaintext。

这曾使它适合某些流式/交互式历史场景。

Feedback Dependency

Encryption 时:

current ciphertext
→ influences future state

因此存在 sequential dependency。

这使它不像 CTR 那样天然高度并行。

解密端因为 ciphertext 已知,一些实现可以提前处理相关 block-cipher operation,但 CFB 仍是 feedback-oriented mode。

Self-Synchronizing

CFB 的一个经典特点是 self-synchronization。

如果传输中出现有限错位/损坏,错误 ciphertext 随着 shift register 被逐步移出状态后,后续解密可以重新同步。

恢复距离取决于:

  • block size;
  • segment size;
  • 错误类型。

不要把它简化成“错一个 byte,后面一定固定错 N 个 byte”。

Error Propagation

某个 ciphertext segment 发生 bit error:

  • 当前 plaintext segment 对应 bit 会受影响;
  • 错误 ciphertext 进入 feedback state;
  • 后续若干 segment 也可能被扰乱;
  • 当错误移出 state 后恢复。

这与 OFB/CTR 的错误传播方式不同。

CFB 不提供 Authentication

CFB 主要提供 confidentiality。

它不能独立保证:

  • message integrity;
  • sender authenticity;
  • anti-replay。

attacker 仍可能对 ciphertext 做主动修改。

因此新协议通常更倾向直接使用 AEAD。

CFB 与 OFB / CTR

CFB

ciphertext 参与 feedback。

OFB

block-cipher output 反馈,不把 ciphertext 反馈进 state。

CTR

counter input 独立生成 keystream block。

因此:

  • CFB 更偏 self-synchronizing;
  • OFB/CTR 更偏 synchronous keystream;
  • CTR 更容易并行/random access。

整体比较见 Block Cipher Modes of Operation。

CFB 在今天的位置

CFB 仍会出现在:

  • legacy protocol;
  • 旧文件格式;
  • 旧 crypto API;
  • 教材。

新设计不应仅因为“不需要 padding”就优先选择 CFB。

现代设计通常更关心:

  • authenticated encryption;
  • nonce discipline;
  • misuse resistance;
  • mature protocol support。

常见误区

CFB 就是 Stream Cipher

不准确。它是 block cipher 的 feedback mode。

CFB 不需要 padding,所以比 CBC 一定安全

错误。padding 只是一个维度;CFB 仍缺 authentication。

自同步 = 自动恢复所有攻击

错误。它描述 transmission state recovery,不是 security authentication。

IV 公开,所以可以固定为 0

错误。公开与可预测/重复是不同安全属性。

学习检查

  1. CFB 为什么表现得像 stream cipher,却仍属于 block-cipher mode?
  2. CFB segment size 会影响哪些行为?
  3. CFB 为什么不需要 block padding?
  4. ciphertext feedback 为什么导致顺序依赖?
  5. self-synchronizing 真正描述什么?
  6. CFB 与 OFB 的 feedback source 有什么不同?
  7. CFB 为什么不能提供 message authentication?
  8. 新系统为什么通常优先考虑 AEAD 而不是 CFB?
创建于 2026/1/8 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本