← [ BACK_TO_NOTES ]

ECB(Electronic Codebook)

ECB 对每个 plaintext block 独立执行 block-cipher transform,不需要 IV 且易并行,但相同明文块会产生相同密文块并泄露结构,因此不适合一般多块消息的机密性保护。

#evergreen #concept #crypto #algorithm

[!info] related notes

ECB(Electronic Codebook)

一句话定义

ECB 是最直接的 block-cipher mode:

C_i = E_K(P_i)

P_i = D_K(C_i)

每个 block 独立处理。

最大问题:确定性模式泄露

只要:

P_i = P_j

在同一个 key 下就有:

C_i = C_j

因此 attacker 即使不知道 plaintext,也能看出:

  • 哪些 block 相同;
  • 数据重复结构;
  • 图像/格式轮廓;
  • 某些固定记录模式。

这不是 block cipher 本身被破解,而是:

mode 没有把不同 block 的上下文/位置混进去。

IV

ECB 没有 IV / nonce。

这也是它无法随机化相同 plaintext block 的直接原因。

并行性

由于 block 独立:

  • encryption 可以并行;
  • decryption 可以并行;
  • random access 简单。

这些是工程优点,但无法抵消一般消息 confidentiality 的模式泄露。

Padding

如果底层 block cipher 只接受完整 block,而 plaintext 长度不是 block size 整数倍,仍然需要 padding 或上层长度处理。

因此:

ECB 无 IV
≠ ECB 不需要 padding

这是两个不同问题。

Error Propagation

某个 ciphertext block 传输损坏时,通常只影响对应 plaintext block。

不会像 chaining mode 那样把错误传播到后续 block。

这种性质在历史通信系统里有价值,但现代协议通常更关心 authentication failure,而不是“错误后继续解密”。

ECB 不提供 Authentication

即使 attacker 看不懂 plaintext,仍可以:

  • 删除 block;
  • 复制 block;
  • 重排 block;
  • 替换已知 block。

ECB 本身不会检测这些修改。

所以:

confidentiality 和 integrity/authentication 是不同安全目标。

什么时候还能遇到 ECB

今天仍可能在:

  • 教材;
  • legacy system;
  • 某些底层单块 primitive;
  • 已有格式兼容;

中遇到 ECB。

但对于一般多块 message encryption,新设计不应把 ECB 当作默认选择。

ECB 与 AEAD

现代应用通常更希望:

plaintext + nonce + AAD
→ AEAD
→ ciphertext + tag

而不是:

plaintext blocks
→ ECB

AEAD 同时解决 confidentiality 和 authentication。

常见误区

AES 很强,所以 AES-ECB 也安全

错误。Primitive 安全不代表 mode 使用安全。

ECB 不用 IV,所以更简单也更可靠

简单是真的,消息结构泄露也是真的。

ECB ciphertext 看不懂,所以完整性也有保护

错误。ECB 不提供 authentication。

学习检查

  1. 为什么 ECB 中相同 plaintext block 会产生相同 ciphertext block?
  2. 这种确定性为什么会泄露结构,即使 attacker 仍无法直接解密?
  3. ECB 为什么不需要 IV,却仍可能需要 padding?
  4. ECB 的并行性来自什么?
  5. 为什么 AES-ECB 的问题不等于 AES primitive 被破解?
  6. ECB 为什么不能检测 block 删除、复制或重排?
  7. 一般新系统为什么更倾向 AEAD?
创建于 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
关闭浮层 / 取消命令;输入框内清空文本