云计算百科
云计算领域专业知识百科平台

密码学入门笔记4:分组密码常见算法1——DES

本文为个人学习总结,如有谬误欢迎指正。密码学博大精深,后续将继续记录其他知识点!

目录

前言

一、介绍

二、加密流程⚠️

扩展置换E

S盒替换

置换P

完整计算案例

三、安全性分析

存在互补密钥

密钥长度过短 (56位):

理论攻击方法:

四、变形:2-DES 与 3-DES

2-DES (Double DES):

中间相遇攻击

攻击复杂度分析

3-DES (Triple DES):

3DES能抵抗中间相遇攻击?

总结


前言

在信息安全领域,对称密码算法扮演着核心角色。其中,分组密码因其对固定长度数据块(分组)进行独立加解密的特性而被广泛应用。而DES(Data Encryption Standard)作为历史上最具影响力的分组密码之一,其精巧的Feistel结构设计至今仍是密码学教学的经典范例。


一、介绍

  • 对称密码(加解密使用一个密钥)
    • 分组密码
  • Feistel结构(迭代16轮,加解密结构相同,只是密钥顺序相反)

参数:

明密文分组:

  • 处理的数据块(明文/密文分组)固定为64位;按比特(左右分成32bit)

密钥分组:

  • 初始密钥长度:64位

  • 有效密钥长度:56位(其中8位用于奇偶校验)。

  • 每轮实际使用的子密钥长度:48位(由56位主密钥经过一系列置换和压缩生成)

迭代次数:

  • 数据块经历16轮完全相同的处理流程,每一轮都使用不同的48位子密钥

二、加密流程⚠️

明文分组:

  • 每组64bit

初始置换 (IP):

  • 输入的64位明文首先通过一个固定的初始置换矩阵 (IP) 进行比特重排。

16轮Feistel迭代:

  • 拆分:将置换后的64位数据分成左右两半:左半部分 (L₀, 32位) 和 右半部分 (R₀, 32位)。

  • 轮函数 F 处理 (核心):

  • 扩展置换 (E): 将32位的 Rᵢ₋₁ 扩展为48位(通过重复某些比特实现)。

  • 子密钥混合 (XOR): 将扩展后的48位结果与当前轮的48位子密钥 Kᵢ 进行异或 (XOR) 运算。

  • S盒替换 (Substitution): 将48位结果分成8组6位数据,每组输入一个不同的6输入4输出S盒 (S-Box)。每个S盒执行关键的非线性替换,输出4位。此步将48位数据压缩回32位

  • 置换 (P): 将S盒输出的32位结果通过一个固定的置换矩阵 (P) 进行比特重排。输出即为轮函数 F(Rᵢ₋₁, Kᵢ) 的结果(32位)。

  • 合并与交换:

    • 新的左半部分:Lᵢ = Rᵢ₋₁

    • 新的右半部分:Rᵢ = Lᵢ₋₁ XOR F(Rᵢ₋₁, Kᵢ)

  • 重复:以上步骤重复执行16轮。

最终处理:

  • 交换合并:16轮迭代后,交换最后得到的 L₁₆ 和 R₁₆(即输出 R₁₆ || L₁₆,共64位)。

  • 逆初始置换 (IP⁻¹):将交换合并后的64位数据通过逆初始置换矩阵 (IP⁻¹) 进行比特重排。

  • 输出:得到最终的64位密文分组。

关键点:DES的解密流程与加密流程完全一致,唯一区别是子密钥的使用顺序为 K₁₆, K₁₅, …, K₁。

扩展置换E

  • 将32位数据划分为8个4位块

  • 每个4位块扩展为6位:[b1 b2 b3 b4] → [b4 b1 b2 b3 b4 b1]

  • 关键特性:首位和末位重复(实现输入比特的扩散)

扩展表

S盒替换

  • 将48位输入分为8组6位数据

  • 每组输入独立的S盒(S1-S8)

  • 每个S盒是4×16的查找表(6位输入 → 4位输出)

S盒查找规则:

  • 取6位输入:b1 b2 b3 b4 b5 b6

  • 行号 = (b1 b6)₂ (0-3)

  • 列号 = (b2 b3 b4 b5)₂ (0-15)

  • 输出 = S盒[行号][列号](4位)

  • 以S1为例:

    输入6位: 101101 行号 = (11)₂ = 3 列号 = (0110)₂ = 6 查S1[3][6] = 7 → 二进制 0111

    置换P

    • 输出位i = 输入位P[i](按表位置映射)

    • 例:输出第1位 = 输入第16位

    • 输出第2位 = 输入第7位

    • 输出第32位 = 输入第25位

    置换表

    输入32位: 0001 0010 0011 0100 0101 0110 0111 1000 置换后:   位1 ← 位16 (0)   位2 ← 位7 (1)   位3 ← 位20 (0)   …   位32 ← 位25 (1) 输出:1000 1110 0010 1101 0101 0010 1010 0101

    完整计算案例

    计算步骤:

  • E扩展:

    输入32位:1100 1010 1111 0000 0011 0101 1001 0110
    扩展48位:011000 010111 111100 000001 001101 010110 101001 101100

  • 与子密钥异或:

    扩展后:011000 010111 111100 000001 001101 010110 101001 101100
    Kᵢ: 010110 101001 011010 110100 001011 110101 100110 111000
    异或结果:001110 111110 100110 110101 000110 100011 001111 010100

  • S盒替换:

    分组:001110 111110 100110 110101 000110 100011 001111 010100
    S1(001110):行=00(0), 列=0111(7) → 13(1101)
    S2(111110):行=10(2), 列=1111(15) → 0(0000)
    …(其他S盒类似)
    输出32位:1101 0000 1001 0110 1110 1011 0010 1000

  • P置换:

    输入32位:1101 0000 1001 0110 1110 1011 0010 1000
    置换后:1010 1110 0001 1100 0010 1101 1000 0110(最终F函数输出)

  • 三、安全性分析

    存在互补密钥

    安全影响:可将穷举密钥搜索空间减少一半(攻击者只需尝试一半密钥即可验证两个可能结果)。虽然实际攻击价值有限,但它揭示了DES结构的内在数学性质。

    这也是des的一个重要数学性质,称为互补特性或取反特性:

    • 如果使用密钥 K 加密明文 P 得到密文 C。

    • 那么使用密钥 K'(即 K 的逐位取反)加密明文 P'(即 P 的逐位取反),得到的密文将是 C'(即 C 的逐位取反)。

    • 公式表示:DESₖ'(P') = (DESₖ(P))'

    密钥长度过短 (56位):

    • 密钥空间仅有 2⁵⁶ ≈ 7.2 × 10¹⁶ 种可能。

    • 现代计算能力(如GPU、专用硬件)可在数小时甚至更短时间内完成穷举攻击(暴力破解)。1998年的DES挑战赛首次被公开破解即是明证。

    理论攻击方法:

    • 差分密码分析 (Differential Cryptanalysis):通过分析特定明文差分对对应密文差分的影响来恢复密钥。DES的S盒设计在一定程度上抵抗了这种当时未知的攻击。

    • 线性密码分析 (Linear Cryptanalysis):寻找明文、密文和密钥比特之间的概率线性逼近关系来恢复密钥。比差分分析更有效,也是现代重要的分析手段。

    四、变形:2-DES 与 3-DES

    为克服DES密钥过短的问题,发展出多重DES方案

    2-DES (Double DES):

    使用两个密钥,2次加密

    • 加密:C = E(K₂, E(K₁, P))

    • 解密:P = D(K₁, D(K₂, C))

    • 密钥长度:112位(2 × 56位)。

    • 致命缺陷:易受中间相遇攻击 (Meet-in-the-Middle Attack)。攻击者通过预计算和存储 E(K₁, P) 与 D(K₂, C) 的中间结果进行匹配,可将有效攻击复杂度降至约 2⁵⁷,安全性仅略高于单DES,不推荐使用。

    中间相遇攻击

    C = E(K₂, E(K₁, P))  可转化为:E(K₁, P) = D(K₂, C)

    攻击者通过双向计算并匹配中间值,将攻击复杂度从理论上的2¹¹²大幅降至2⁵⁷。

    攻击步骤(需1组已知明文-密文对(P, C))

    1.正向计算(加密方向):

    • 枚举所有2⁵⁶个可能的K₁
    • 对每个K₁计算:T = E(K₁, P)
    • 存储结果:建立(T, K₁)的查找表(空间复杂度2⁵⁶)

    2.逆向计算(解密方向):

    • 枚举所有2⁵⁶个可能的K₂
    • 对每个K₂计算:S = D(K₂, C)
    • 在查找表中搜索匹配的T值(满足T = S)

    3.密钥验证:

    • 对每个匹配的(K₁, K₂)候选对
    • 用新明文-密文对验证是否正确
    • 若验证成功,则获得正确密钥
    攻击复杂度分析
    攻击类型时间复杂度空间复杂度实际安全强度
    理论穷举攻击 2¹¹² 极小 112位
    中间相遇攻击 2⁵⁷ 2⁵⁶ 仅57位
    单DES攻击 2⁵⁵ 极小 55位

    空间代价:存储2⁵⁶条记录约需15,000 TB(56位密钥+64位中间值),现代分布式系统可实现。

    3-DES (Triple DES):

    • 常用加密模式 (EDE):

      • C = E(K₃, D(K₂, E(K₁, P)))(加密)

      • P = D(K₁, E(K₂, D(K₃, C)))(解密)

    • 密钥选项:

      • 三密钥 (Keying Option 1):K₁, K₂, K₃ 独立(共168位)。安全性最高。

      • 双密钥 (Keying Option 2):K₁ = K₃(共112位)。常用且安全。

    • 优点:

      • 充分利用现有DES硬件/软件实现。

      • 密钥长度(112或168位)足以抵抗穷举攻击。

      • 经过充分分析和标准化(如ANSI X9.52, NIST SP 800-67),安全性得到广泛认可。

    • 缺点:速度比DES慢约3倍,比AES慢更多。

    3DES能抵抗中间相遇攻击?

    3DES的EDE结构(加密-解密-加密)通过三重操作阻断中间值匹配:

    C = E(K₃, D(K₂, E(K₁, P)))

    攻击者需同时破解三层密钥:

  • 正向攻击需处理:D(K₂, E(K₁, P)) = D(K₃, C)

  • 逆向攻击需处理:E(K₁, P) = E(K₂, D(K₃, C))

  • 无法建立直接等式关系,攻击复杂度恢复至理论值:

    • 双密钥3DES:2¹¹²
    • 三密钥3DES:2¹⁶⁸

    注:虽然存在三重DES的中间相遇攻击变种,但复杂度高达2¹¹²(双密钥)或2¹⁶⁸(三密钥),实际不可行。

    总结

    附上本文思维导图

    注:部分图片源自百度

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 密码学入门笔记4:分组密码常见算法1——DES
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!