0Pricing
Cryptology Academy · 课时

DES 的设计与 Lucifer 密码

追溯 DES 从 IBM 的 Lucifer 密码、经 NSA 修改到成为 US 联邦标准的历程

DES 的设计与 Lucifer 密码 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

IBM 的 Lucifer 密码算法

1971 年,IBM 研究院的 Horst Feistel 为伦敦劳合社的银行安全项目开发了一种名为 Lucifer 的密码算法。Lucifer 是最早的现代分组密码之一,使用 128 位密钥和 128 位分组。

Lucifer 证明了可以使用 Feistel 结构构建强大的分组密码:对半分组交替执行替换轮和置换轮。它是 DES 的直接前身。

DES 的 Feistel 结构

DES 对 64 位分组应用 16 轮 Feistel 结构。在每一轮中,64 位分组被拆分为两个 32 位半部。右半部扩展为 48 位,与 48 位子密钥进行异或,经过 S 盒处理和置换后,再与左半部进行异或。

随后交换两个半部,并重复这一过程。经过 16 轮后,最终置换会生成 64 位密文。解密使用相同的结构,只是以相反顺序使用子密钥。

DES 分组大小:64 位

DES 以 64 位(8 字节)分组加密数据。对于 1977 年的硬件而言,这种固定分组大小很合适,但如今已经成为安全隐患。当数据量足够大时,生日悖论碰撞会变得很可能发生。

对于 64 位分组,在大约 2^32 个分组之后会出现统计模式(在同一密钥下加密的数据量约为 32GB)。这种 Sweet32 攻击使 3DES 不再适合 HTTPS 等高流量场景。

56 位有效密钥

DES 使用 64 位密钥,但其中 8 位是用于错误检测的奇偶校验位,而不是用于加密。因此,有效密钥长度实际上只有 56 位。

这意味着 DES 只有 2^56 个可能的密钥(约 7.2×10^16 个)。按照 1977 年的标准,这被认为已经足够。但到 1997 年,事实已经证明,意志坚定的攻击者可以破解它。

初始置换与最终置换

DES 首先使用初始置换(IP)重新排列明文分组的 64 位,然后使用最终置换(IP^-1)结束处理;最终置换正是初始置换的逆操作。这些置换不会增加任何密码学强度。

它们是针对 20 世纪 70 年代特定芯片架构的硬件效率而设计的,可以更快地将位加载到寄存器中。现代分析证实,它们对安全性没有任何贡献。

八个 S 盒

八个 S 盒(替换盒)是 DES 非线性的核心。每个 S 盒接收 6 位输入,并使用固定查找表生成 4 位输出。最外侧的 2 位选择行,内侧的 4 位选择列。

如果没有 S 盒提供的非线性,DES 就会成为一种纯线性密码,能够通过线性代数轻易破解。DES 的 S 盒经过特定设计,可以抵御差分密码分析。

P 盒置换

在 S 盒之后,DES 会应用 P 盒置换,重新排列 S 盒输出的 32 位。这样可以提供扩散,使每个 S 盒的输出在下一轮影响多个 S 盒。

P 盒经过精心设计以最大化扩散:一个 S 盒的每个输出位都会在下一轮影响至少两个不同的 S 盒,从而确保快速产生雪崩效应。

密钥调度:16 个子密钥

DES 从 56 位主密钥中生成 16 个不同的 48 位子密钥,每轮使用一个。密钥调度首先对密钥应用置换选择(PC-1),以移除奇偶校验位并重新排列密钥位。

这 56 位被分成两个 28 位部分,每轮分别向左循环移位 1 位或 2 位。随后,置换选择(PC-2)从这 56 位中选出 48 位,构成每轮的子密钥。

NSA 的参与与争议

NSA 在 DES 开发期间与 IBM 合作,将密钥长度从卢西弗密码的 128 位缩短为 56 位,并修改了 S 盒的设计。这引发了数十年的争议,人们质疑其中是否被植入了后门。

20 世纪 90 年代,NSA 官员确认,他们增强了 S 盒抵抗差分密码分析的能力;IBM 于 1974 年发现了这项技术。NSA 早在学术界之前数年就已了解差分密码分析,这表明他们使 DES 的抗攻击能力更强,而不是更弱。

作为 FIPS 46(1977)的 DES

经过竞争性评估流程,DES 于 1977 年 1 月被采用为联邦信息处理标准 46。它成为非机密政府数据的标准密码,并被银行业和工业界广泛采用。

DES 的标准化具有重要的历史意义:它是第一个公开可用且得到政府认可的密码算法。这推动了硬件实现的发展,并为今后的密码标准化流程确立了范本。

DES 工作模式

DES 本身是一种分组密码,每次恰好加密 64 位。实际消息通常更长,因此工作模式规定了如何将密码应用于多个分组。常见模式包括 ECB(独立加密每个分组)、CBC(加密前将每个分组与前一个密文进行 XOR)、CFB、OFB 和 CTR。

ECB 是最弱的模式:相同的明文分组会产生相同的密文分组,从而形成可见的模式。CBC 和 CTR 模式消除了这一弱点,因此在实际使用 DES 和 3DES 时更受首选。

DES 参数测验

测试您对 DES 设计参数的了解。

要点:DES 设计

DES 从 IBM 的卢西弗密码演变而来,成为一种具有 16 轮、64 位分组和 56 位有效密钥的费斯特尔密码。它的安全性来自 8 个非线性 S 盒所提供的混淆、P 盒所提供的扩散,以及 16 轮运算对雪崩效应的放大。

NSA 参与 S 盒设计一事颇具争议,但最终增强了 DES 抵抗差分密码分析的能力。DES 的 56 位密钥是为 1977 年的硬件设计的,到 20 世纪 90 年代末已被证明不足以提供安全性。

常见问题解答

「DES 的设计与 Lucifer 密码」课时是免费的吗?

是的 — 「DES 的设计与 Lucifer 密码」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「DES 的设计与 Lucifer 密码」这节课中我会学到什么?

追溯 DES 从 IBM 的 Lucifer 密码、经 NSA 修改到成为 US 联邦标准的历程 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「DES 的设计与 Lucifer 密码」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. DES 的设计与 Lucifer 密码
  2. DES 是如何被破解的
  3. Triple DES:延长 DES 的生命周期
  4. DES 带来的教训:我们学到了什么
← 返回 Cryptology Academy