Data Encryption Standard(DES)
DES 是 64-bit block、56-bit effective key 的 16-round Feistel block cipher;FIPS 46-3 已于 2005-05-19 撤回,今天主要作为理解 Feistel、3DES 与历史 block-cipher mode 的教学和兼容知识。
[!info] related notes
- 所属 MOC: 密码学
- 上位概念: 对称密码学
- 后继历史算法: 3DES / TDEA
- 现代替代: AES
- 工作模式: Block Cipher Modes of Operation
Data Encryption Standard(DES)
一句话定义
DES 是一个历史性的 symmetric block cipher:
- block size:64 bit;
- nominal key input:64 bit;
- effective key material:56 bit;
- round:16;
- structure:Feistel network。
它对现代安全保护已经过时。
标准状态
DES 曾是美国联邦标准 FIPS 46 系列的核心算法。
最终版本 FIPS 46-3 已于:
2005-05-19
正式撤回。
NIST 的原因非常明确:DES 已不能提供保护联邦信息所需的安全强度。
因此:
DES 今天主要用于理解历史协议、兼容旧数据和学习分组密码设计,不应作为新系统的保护算法。
为什么 64-bit Key 只有 56-bit Effective Key
DES key 通常表示为 64 bit。
但每个 byte 中有 1 bit 历史上用于 parity。
所以:
8 × 8 bit
→ 64-bit representation
其中只有:
8 × 7 bit
→ 56-bit effective key material
真正决定 brute-force key space 的是这 56 bit。
Block Size
DES 每次处理:
64-bit plaintext block
→ 64-bit ciphertext block
block size 与 key size 是不同概念。
DES 的 64-bit block 在现代大数据量场景也过小,会更早遇到 birthday-bound 类重复/碰撞风险。
Feistel Structure
DES 把一个 64-bit block 分成:
L_i
R_i
每轮大致执行:
L_(i+1) = R_i
R_(i+1) = L_i XOR F(R_i, K_i)
Feistel 结构的重要性质是:
round function F 本身不需要可逆,整体网络仍可逆。
这让 encryption/decryption 可以复用相同结构,只需反转 round-key 顺序。
Round Function
DES 的 F 大致包含:
- Expansion:32 bit → 48 bit;
- XOR round key;
- S-box substitution:48 bit → 32 bit;
- P permutation。
其中 S-box 提供关键非线性。
DES 的 S-box 设计后来被发现具有抵抗差分密码分析的结构特征,这也是 DES 历史中非常重要的一部分。
Key Schedule
56-bit effective key 经过:
- permutation;
- split;
- round-dependent left rotation;
- compression/permutation;
生成 16 个 48-bit round keys。
每轮使用不同子密钥。
Initial / Final Permutation
DES 还定义:
- Initial Permutation(IP);
- inverse Final Permutation(IP^-1)。
它们属于算法标准结构,但不是 DES 现代安全性的核心来源。
学习时不需要把整张 permutation table 背下来。
为什么 DES 失效
最核心原因是:
56-bit key space 对现代攻击者太小。
这意味着 exhaustive search 已经不再具有足够成本。
DES 的退出不是因为 Feistel 网络本身“不安全”,而是具体参数尤其 key size 不再满足安全需求。
DES 与 3DES
3DES/TDEA 试图通过多次 DES operation 扩大安全强度:
DES
→ EDE composition
→ TDEA
但它仍继承:
- 64-bit block size;
- legacy structure;
- 较差性能。
因此 TDEA 后来也进入 legacy-only 状态。
详见 3DES / TDEA。
DES 与 AES
AES 并不是“把 DES key 加长”。
两者内部结构完全不同:
DES
→ Feistel network
→ 64-bit block
→ 56-bit effective key
AES
→ substitution-permutation network
→ 128-bit block
→ 128/192/256-bit key
AES 是现代标准替代方向。
DES 与工作模式
DES 本体只定义单个 block transform。
要处理多 block message,需要 mode of operation,例如历史上常见:
- ECB;
- CBC;
- CFB;
- OFB。
Mode 与 DES 算法本体是两个层级。
详见 Block Cipher Modes of Operation。
常见误区
DES 是 64-bit 安全算法
错误。64 bit 是 key representation/block size 相关数字;effective key security 只有 56-bit key space。
DES 在 2023 年才被禁止
错误。FIPS 46-3 在 2005 年就已正式撤回。
DES 被淘汰说明 Feistel 结构不安全
错误。Feistel 是通用密码结构,DES 的具体参数才是关键问题。
CBC/CFB 是 DES 的内部算法
错误。它们是可配合 block cipher 使用的 mode of operation。
学习检查
- DES 的 block size、nominal key size、effective key size 分别是多少?
- 为什么 64-bit key representation 只有 56-bit effective key material?
- Feistel network 为什么允许 round function 本身不可逆?
- DES 真正退出历史舞台的核心原因是什么?
- DES 与 3DES 是什么关系?
- DES 与 AES 为什么不能理解成“同一算法把 key 加长”?
- DES 本体与 ECB/CBC/CFB 处于什么不同层级?