402 字
2 分钟
分组密码:混淆、扩散与 Feistel / SPN 结构

分组密码以固定长度的数据块为单位进行变换,是对称密码的核心构件之一。DES 和 AES 都属于分组密码,但采用了不同的内部结构。

两个设计目标#

混淆(Confusion)#

混淆让密钥、明文和密文之间的关系尽量复杂,降低攻击者从输入输出推导密钥的能力。典型组件是 S 盒:通过非线性查表引入非线性。

扩散(Diffusion)#

扩散让一个明文比特或密钥比特的变化影响更多输出位,形成雪崩效应。置换、线性变换和列混合等操作都服务于扩散。

理解方式

可以把混淆理解为“关系难以预测”,把扩散理解为“影响尽可能传播开”。安全的分组密码需要两者多轮配合。

两类经典结构#

结构核心思路代表算法
Feistel 网络分组左右拆分,轮函数只作用于一侧后再交换DES
SPN(代换—置换网络)多轮 S 盒代换与线性置换AES

Feistel 的一个优点是加密和解密可以复用相近的结构,仅需调整子密钥顺序;SPN 则通过多轮非线性代换与扩散层累积安全性。

使用时的边界#

分组密码描述的是底层原语,而不是完整安全方案。实际加密还需要安全的工作模式、随机数或 nonce,以及完整性保护。应使用 AES-GCM 等认证加密模式,而不要手动拼接加密流程。

分组密码:混淆、扩散与 Feistel / SPN 结构
https://blog.xqcherry.top/posts/cryptography/block-ciphers/
作者
xqcherry
发布于
2026-09-17
许可协议
CC BY-NC-SA 4.0