DES加密算法。
分组密码与DES
一、对称加密两类
| 类型 | 方式 | 示例 | 说明 |
|---|---|---|---|
| 流密码 | 按位/字节异或密钥流 | RC4, ZUC | 类似“一次一密”的可实现版本 |
| 分组密码 | 对固定长度块加密 | DES, AES | 现代主流加密结构 |
二、分组密码基本思想
- 定义:把 n 位明文映射为 n 位密文的可逆变换
- 核心目标:模拟理想随机代换(安全)
- 实现方法:用多轮代换+置换(S/P)逼近理想代换。
三、Shannon 的两大原则
| 原则 | 作用 | 对应操作 |
|---|---|---|
| 混淆 (Confusion) | 增加密钥与密文关系复杂度 | S盒(非线性代换) |
| 扩散 (Diffusion) | 分散明文统计特征 | P盒(置换) |
四、Feistel 结构(现代分组密码核心)
DES、Blowfish、SM4 都基于此。
加密:
解密:
✅ 结论:
解密 = 加密结构 + 子密钥逆序使用
优点:
- 结构可逆;
- 安全性可扩展(多轮叠加)。
五、简化DES(S-DES)
- 教学模型:8位明文 + 10位密钥,2轮 Feistel;
- 结构:IP → fK₁ → SW → fK₂ → IP⁻¹;
- 说明了:“轮函数 + 密钥调度 + 左右交换” 的核心思想。
六、DES(Data Encryption Standard)
| 项目 | 内容 |
|---|---|
| 块长 | 64 位 |
| 密钥 | 56 位有效(64 位含奇偶校验) |
| 结构 | 16 轮 Feistel |
| 每轮密钥 | 48 位 |
| 核心函数 F | 扩展 E → XOR Ki → S盒 → P置换 |
DES 关键要素
S盒 (S-Box):
- 唯一非线性部分;
- 输入6位→输出4位;
- 行由第1、6位确定,列由中间4位确定。
密钥调度:
- 主密钥 → PC-1 → 左右各28位 (C,D);
- 每轮循环左移 → PC-2 压缩 → 48位子密钥 Ki。
加解密对称:
- 加密:K₁→K₂→…→K₁₆
- 解密:K₁₆→K₁₅→…→K₁
七、DES 安全性
| 概念 | 说明 |
|---|---|
| 雪崩效应 | 明文或密钥变动1位 → 密文约一半位改变 |
| 密钥长度短 | 56位可被穷举破解 |
| 攻击类型 | 差分分析、线性分析 |
| 后续替代 | 3DES、AES |
DES 仍是理解现代分组密码结构的基石。
八、分组密码设计准则(记忆要点)
- 混淆 + 扩散(Shannon 原则)
- 足够轮数(提升非线性)
- 雪崩效应 (SAC):输入1位变 → 输出约一半位变
- 位独立准则 (BIC):输出比特变化相互独立
- 复杂密钥调度:防止密钥相关攻击
九、典型应用场景
- 匿名路由(洋葱路由):逐层加密保证路径匿名性
- 可撤销加密(版权保护):撤销单用户密钥不影响其他人
Feistel 结构 + S盒非线性 + 多轮混淆扩散 = 现代分组密码的灵魂。
后 DES 时代的分组加密算法
一、从 DES 到更强的分组密码
背景
- DES 密钥仅 56 位,暴力破解已可行。
- 两条发展路线:
1️⃣ 多次迭代 DES(如双重 DES、三重 DES);
2️⃣ 设计全新的分组密码(IDEA、AES、SM4)。
二、双重 DES(2DES)
结构
密钥长度:112 位(理论上)。
攻击:中间相遇攻击 (MITM)
- 对所有 (K1) 计算 (E{K_1}(P)),存表。
- 对所有 (K2) 计算 (D{K_2}(C)),与表比对。
- 匹配成功则候选密钥。
复杂度
- 时间:约 (2^{57}) 次 DES 运算;
- 空间:约 (2^{56}) 条记录;
- 仅需两对 (P, C) 即可验证。
✅ 结果:双重 DES 安全性 ≈ 单次 DES。
三、三重 DES(3DES)
结构(EDE 模式,兼容 DES)
解密同理:
可选两密钥或三密钥版本:
- 2-key 3DES:(K_1=K_3),密钥长度 112 位。
- 3-key 3DES:独立三密钥,长度 168 位。
安全性
| 版本 | 密钥长度 | 状态 | 说明 |
|---|---|---|---|
| 2-key 3DES | 112 位 | 安全 | 主流金融标准 |
| 3-key 3DES | 168 位 | 更强 | 用于 PGP、S/MIME |
- 抗差分、线性分析能力 ≫ DES。
- 暴力破解约需 (2^{112}) 级操作量。
- 现无实用攻击。
优缺点
✅ 优点:
- 与 DES 兼容,安全性提升百倍以上。
❌ 缺点: - 运算慢(3 次 DES)。
- 分组长度仍 64 位。
→ 被 AES 逐步取代。
四、IDEA(International Data Encryption Algorithm)
基本特征
| 项目 | 内容 |
|---|---|
| 分组长度 | 64 位 |
| 密钥长度 | 128 位 |
| 结构 | 混合算术结构(非 Feistel) |
| 轮数 | 8 轮 |
| 安全性 | 抗差分、线性攻击 |
混淆与扩散机制
基于三种运算:
- 异或(⊕)
- 模 (2^{16}) 加法(⊞)
- 模 (2^{16}+1) 乘法(⊙)
→ 代数结构多样,增强非线性。
优点
- 抗差分分析;
- 软硬件实现高效;
- 软件速度约为 DES 的两倍;
- 被用于 PGP(Pretty Good Privacy)。
五、AES(Advanced Encryption Standard)
历史与选型
- 由 NIST 于 1997 年启动评选,2001 年选定 Rijndael 算法。
- 目标:比 3DES 更快、至少同样安全。
基本参数
| 项目 | 内容 |
|---|---|
| 分组长度 | 128 位 |
| 密钥长度 | 128 / 192 / 256 位 |
| 轮数 | 10 / 12 / 14 |
| 结构类型 | S-P 网络(非 Feistel) |
核心四步轮函数(每轮)
1️⃣ SubBytes(字节代换):S盒非线性变换(混淆)。
2️⃣ ShiftRows(行移位):行循环移位(扩散)。
3️⃣ MixColumns(列混合):GF(2⁸) 多项式运算(扩散)。
4️⃣ AddRoundKey(轮密钥加):与子密钥异或(加密控制)。
首轮和末轮略有调整(末轮无列混合)。
密钥扩展
- 通过字循环与 S盒生成每轮 128 位子密钥;
- 支持灵活的密钥长度(Nk = 4/6/8)。
AES 优点
✅ 高速(软件/硬件)
✅ 抗差分、线性、能量攻击
✅ 内存需求低,适合嵌入式
✅ 开放无专利、跨平台
❌ 理论上仍可能受侧信道攻击(需防御设计)
AES 已成为全球主流对称加密标准。
六、SM4(中国商用分组加密标准)
基本特征
| 项目 | 内容 |
|---|---|
| 分组长度 | 128 位 |
| 密钥长度 | 128 位 |
| 结构 | 非平衡 Feistel 网络 |
| 轮数 | 32 轮 |
| 发布 | 2006(WAPI 标准),2016 成为国家标准 GB/T 32907-2016 |
算法特点
- 加解密算法结构相同(轮密钥顺序相反)。
- 采用 S盒 + 线性移位 + 异或混合。
- 密钥扩展 32 轮,使用常数 FK、CK。
- 安全性与 AES 相当。
应用
- WAPI 无线局域网
- 政府、金融、商用加密标准体系(SM 系列)
七、总结对比
| 算法 | 分组 | 密钥 | 结构 | 状态 |
|---|---|---|---|---|
| DES | 64b | 56b | Feistel | 已淘汰 |
| 3DES | 64b | 112b/168b | Feistel | 过渡标准 |
| IDEA | 64b | 128b | 混合结构 | 较安全,专利 |
| AES | 128b | 128/192/256b | SP 网络 | 国际主流 |
| SM4 | 128b | 128b | 非平衡 Feistel | 中国标准 |
八、记忆重点
- 双重 DES 可被中间相遇攻击,安全性 ≈ DES。
- 三重 DES (EDE) 是过渡方案,两密钥版最常用。
- IDEA 使用混合算术(⊕、⊞、⊙),抗差分强。
- AES = SPN 结构(SubBytes、ShiftRows、MixColumns、AddRoundKey)。
- SM4 = 国密分组加密,128 位分组、32 轮非平衡 Feistel。
- AES、SM4 都已取代 3DES 成为现行主流标准。

