← [ BACK_TO_NOTES ]

Block Cipher Modes of Operation

比较 ECB、CBC、CFB、OFB、CTR 如何把固定长度 block cipher 扩展为消息级 confidentiality,并从 IV/nonce、并行性、padding、错误传播与认证边界解释为什么现代新系统通常优先选择 AEAD。

#synthesis #evergreen #crypto

[!info] related notes

Block Cipher Modes of Operation

一句话关系

Block cipher 只处理固定大小 block。

Mode of operation 决定:

怎样把一个 block cipher 组合成能处理多 block / 任意长度消息的 confidentiality scheme。

NIST SP 800-38A 定义了五个经典 confidentiality modes:

  • ECB;
  • CBC;
  • CFB;
  • OFB;
  • CTR。

这些模式本身主要解决 confidentiality,不自动提供完整的 message authentication。

为什么需要 Mode

以 AES 为例:

AES primitive
→ 只定义 128-bit block transform

真实消息可能:

  • 1 byte;
  • 4 KB;
  • 4 GB。

Mode 负责定义:

  • block chaining;
  • IV / nonce;
  • padding;
  • parallelization;
  • error propagation;
  • repeated-message behavior。

因此:

AES
≠ AES mode
≠ AEAD protocol

ECB

关系:

P_i → E_K → C_i

每块完全独立。

特点:

  • 无 IV;
  • encryption/decryption 可并行;
  • 相同 plaintext block → 相同 ciphertext block;
  • 会泄露结构与重复模式。

因此不适合一般多块消息加密。

详见 ECB。

CBC

关系:

P_i xor C_(i-1)
→ E_K
→ C_i

首块使用 IV。

特点:

  • 需要 unpredictable IV;
  • encryption 顺序依赖;
  • decryption 可利用已知 ciphertext blocks 并行;
  • block cipher 场景通常需要 padding;
  • 不提供 authentication;
  • 错误处理不当可能形成 padding oracle。

详见 CBC。

CFB

CFB 使用 block cipher encryption primitive 产生 keystream-like output,再与 plaintext segment XOR。

特点:

  • 可按 segment 处理;
  • 不需要 block padding;
  • 需要正确 IV;
  • encryption 存在 feedback dependency;
  • 具有 self-synchronizing 特征;
  • 不提供 authentication。

详见 CFB。

OFB

OFB 把 block cipher 输出反馈回下一轮,生成 keystream。

plaintext/ciphertext 本身不进入 feedback state。

特点:

  • 不需要 padding;
  • transmission bit error 通常只影响对应 plaintext bit;
  • nonce/IV reuse 会导致 keystream reuse 问题;
  • 不提供 authentication。

OFB 更像 synchronous stream mode。

CTR

CTR 对不断变化的 counter block 做 block-cipher encryption,生成 keystream:

counter_i
→ E_K
→ keystream_i
xor plaintext_i
→ ciphertext_i

特点:

  • encryption/decryption 都高度可并行;
  • 不需要 padding;
  • 支持 random access;
  • 同一个 key 下 counter/nonce 输入绝不能重复;
  • 不提供 authentication。

CTR 是很多现代构造的重要基础思想之一。

比较表

ModeIV/NoncePadding加密并行解密并行Pattern LeakageAuthentication
ECB无通常需要是是严重否
CBCunpredictable IV通常需要否可以降低否
CFBIV否通常否可部分/按实现降低否
OFBunique IV/nonce否keystream 可预计算同左降低否
CTRunique counter/nonce否是是降低否

具体 IV/nonce 要求必须以目标算法和标准为准,不要把“随机”“唯一”“不可预测”当成所有模式统一规则。

Confidentiality ≠ Authentication

ECB/CBC/CFB/OFB/CTR 在 SP 800-38A 中属于 confidentiality modes。

即使 ciphertext 看不懂,攻击者仍可能:

  • bit flip;
  • reorder;
  • truncate;
  • replay;
  • 利用 error oracle。

因此现代应用通常更希望直接使用:

AEAD

例如:

  • AES-GCM;
  • ChaCha20-Poly1305。

Encrypt-then-MAC

在 legacy protocol 中,也可以正确设计:

encryption
→ MAC over ciphertext + metadata

但这种组合需要严格处理:

  • key separation;
  • coverage;
  • verification order;
  • error behavior。

如果平台已经提供成熟 AEAD,通常不应自己重新组合 legacy mode + MAC。

Error Propagation

模式不同,ciphertext bit error 对 plaintext 的影响不同。

这在老式 noisy communication 场景曾很重要。

现代网络通常已有:

  • link integrity;
  • retransmission;
  • AEAD authentication。

所以今天选 mode 时,更核心的是:

  • nonce safety;
  • authentication;
  • protocol support;
  • implementation quality。

现代选型

新系统的一般方向:

block cipher primitive
→ standardized AEAD mode
→ protocol-managed nonce/key lifecycle

而不是:

“从 ECB/CBC/CFB 中挑一个看起来最安全的”。

这些 legacy confidentiality modes 仍然重要,因为:

  • 需要理解历史协议;
  • 需要读旧系统;
  • 帮助理解 AEAD 为什么出现;
  • 有些标准/格式仍会遇到。

学习检查

  1. 为什么 AES 本体不能直接处理任意长度消息?
  2. ECB 最大的问题为什么不是“加密算法弱”,而是 mode 泄露结构?
  3. CBC 为什么需要 IV,而且 IV 要求不能被简单概括为“保密”?
  4. CFB 为什么看起来像 stream cipher,却仍建立在 block cipher 上?
  5. CTR nonce/counter reuse 为什么会严重破坏 confidentiality?
  6. 为什么 SP 800-38A 这些经典 mode 不能单独提供现代消息认证?
  7. AEAD 相比 CBC/CTR + 自己拼 MAC 的工程优势是什么?
创建于 2026/9/30 更新于 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
关闭浮层 / 取消命令;输入框内清空文本