Data Encryption Standard DES

DES 数据加密标准的历史、结构与工作模式说明

#status / growing #type / concept #tech / security / crypto #resource / algorithm

[!info] related notes 密码学 算法面试题型 MOC

Data-Encryption-Standard_DES

概览

DES(Data Encryption Standard)是现代计算机和信息技术中的重要密码算法。它由IBM公司的Feistel团队开发(原名Lucifer算法),并于1977年由美国国家标准局(NBS)正式发布 。

美国政府 1977 年采用,由 IBM 公司在 70 年代 开发的。 2023.1.1 后禁止使用(已经能被暴力 破解了)。所有密钥的可能为 2^56 每秒测试 5 亿个, 4 个小时就能测完。

•1973年5月和1974年8月,美国商业部的国家标准局NBS两次发布通告,向社会征集密码算法。在征得的算法中,IBM公司提出lucifer算法中选,成为了数据加密标准(Data Encryption Standard, DES)。该算法由 Feistel领导的团队研究开发,现代大多数对称分组密码也是基于Feistel密码结构的。

•1975年3月,NBS向社会公布了此算法,以求公众评论。 •于1976年11月被美国政府采用,批准用于非军事场合的各种政府机构。 •1977年1月数据加密标准(DES)正式向社会公布。

美国政府在收到 IBM 提案后修改了加密盒、密钥长度和部分内容,起初认为是“黑手”,后来人们普遍认为是增强该加密算法对方差分攻击的能力

  • 结构基础:基于Feistel密码结构 。
  • 类型:对称分组密码(加密和解密使用相同的密钥)。
  • 优缺点:优点是计算量小、速度快;缺点是密钥长度较短(56位),容易被暴力破解 。

基础概念

  • 异或

See also: 电子密码本模式ECB

  • 扩散
  • 混淆

轮函数 =明文分组扩散(将 32 位数据变为 48 位) + 混淆(将 48位 变为 32位) + 随机置换

工作模式:

特点

  • DES是一个分组加密算法,同时使用了代换和置换两种技巧。
  • 使用64位密钥(实际56位,每个字节最后一位作奇偶校验)对64位的数据块进行加密,即进行16轮迭代加密处理,得到64位密文。——加密过程
  • 每轮加密时,都会用一个不同的48位子密钥,该子密钥是由56位密钥产生。——子密钥产生过程

基于您上传的演示文稿《4 对称密码学 1.pptx》,以下是关于数据加密标准(DES)的详细总结文档。这份文档重点涵盖了DES的加密原理、详细过程以及相关的密钥生成算法。


DES 加密体系结构

DES 对 64位 的明文数据块进行操作,使用 64位 密钥(实际有效密钥为 56位,其余8位为奇偶校验位),经过 16轮 迭代加密,最终输出 64位 的密文 。

总体流程

  1. 初始变换 (Initial Permutation, IP):对输入的64位明文进行位置置换。
  2. 16轮迭代加密:核心加密过程,使用Feistel结构。
  3. 逆初始变换 ():初始变换的逆操作,输出最终密文 。

详细加密过程

3.1 初始变换 (IP)

  • 输入:64位明文。
  • 操作:不使用密钥,仅根据固定的IP表对位进行重新排列 。
  • 规则:例如,第58位移到第1位,第50位移到第2位,以此类推。实际上是将明文矩阵的偶数列倒置作为前四行,奇数列倒置作为后四行 。

3.2 轮函数 (Function F) 与 16轮迭代

这是DES的核心。在每一轮(第 轮)中,数据被分为左右两部分:(左32位)和 (右32位)。

迭代公式

其中 代表异或运算, 是该轮的48位子密钥 。

轮函数 的详细步骤

  1. 扩展/置换 (E-Box)

    • 将32位的输入 扩展为 48位
    • 目的:为了与48位的子密钥进行运算,并产生扩散效应。每个4位块扩展为6位(借用相邻块的位)。
    • des-e-box-expansion-detailed
  2. 密钥加 (Key Mixing)

    • 将扩展后的48位数据与当轮的48位子密钥 进行 异或 () 运算 。
  3. 代换/选择运算 (S-Box)

    • 输入:48位数据(分为8组,每组6位)。
    • 操作:通过8个S盒( 到 ),将每6位输入压缩转换为4位输出。
    • 查找规则:对于6位输入 ,取首尾两位 组成行号(0-3),中间四位 组成列号(0-15),在S盒中查找对应的数值。
    • 性质:S盒是DES中唯一的 非线性 变换,提供了混淆作用 。
  4. 置换运算 (P-Box)

    • 将S盒输出的32位数据(8个4位)进行位置置换,得到轮函数 的最终输出 。

3.3 左右交换与逆初始变换

  • 最后一次迭代:在第16轮结束后,不再进行左右交换,即输出为 (而非 ),这是为了保证加密和解密算法的对称性,使得可以使用同一套硬件或代码 。
  • 逆初始变换 ():对第16轮的输出进行IP表的逆置换,得到最终的64位密文 。

4. 子密钥生成算法 (Key Schedule)

DES需要从初始的64位主密钥中生成16个48位的子密钥 。

  1. 去除校验位:输入的64位密钥中,第8、16、…、64位是奇偶校验位,不参与运算,实际有效密钥为 56位

  2. 置换选择 1 (PC-1):将56位密钥分为两部分 (28位)和 (28位)。

  3. 循环左移 (Left Shift)

    • 对 和 分别进行循环左移。
    • 移动位数取决于轮数:第1、2、9、16轮左移 1位,其余轮次左移 2位
  4. 置换选择 2 (PC-2)

    • 将移位后的 和 合并(56位),通过PC-2表选出 48位 作为该轮的子密钥 。
    • PC-2同时也舍弃了8位数据 。

5. 解密过程

DES的一个重要特点是 加密和解密过程完全一致

  • 区别仅在于子密钥的使用顺序:解密时,子密钥必须以 逆序 使用,即第一轮用 ,第二轮用 ,……,最后一轮用

6. DES 的安全性与挑战

  • 密钥空间不足:56位密钥只有约 种组合,无法抵抗现代计算机的穷举攻击。1999年,EFF在22小时内破解了DES 。
  • S盒设计:S盒的设计原理未完全公开,被认为可能含有陷阱(Backdoor),但其设计确实具有抵抗差分攻击的特性 。

7. 分组密码工作模式

PPT中简要介绍了DES在实际应用中的几种工作模式:

  • ECB (电子密码本):简单,并行处理,但相同的明文块会产生相同的密文块,容易泄露模式 。
  • CBC (密码分组链接):引入初始向量 (IV),前一个密文块与当前明文块异或,安全性更好,是标准模式 。
  • CFB (密码反馈):将分组密码转换为流密码,适合实时加密 。

加密原理

参考:

创建于 2026/1/3 更新于 2026/5/27