数据加密标准

数据加密标准 (DES) 是由美国国家标准与技术研究院 (NIST) 发布的对称密钥分组密码。

DES 是 Feistel 密码的实现。 它采用16轮Feistel结构。 块大小为 64 位。 虽然密钥长度为 64 位,但 DES 的有效密钥长度为 56 位,因为加密算法不使用密钥的 64 位中的 8 位(仅用作校验位)。 DES 的一般结构如下图所示−

DES 结构

由于 DES 基于 Feistel 密码,因此指定 DES 所需的全部内容是 −

  • 舍入函数
  • 密钥生成
  • 任何额外处理 − 初始和最终排列

初始和最终排列

初始和最终排列是彼此相反的直接排列框(P 框)。 它们在 DES 中没有密码学意义。 初始和最终排列如下所示−

初始和最终排列

舍入函数

该密码的核心是 DES 函数,f。 DES 函数将 48 位密钥应用于最右边的 32 位以产生 32 位输出。

轮函数
  • 扩展排列框 − 由于右输入是32位,而轮密钥是48位,因此我们首先需要将右输入扩展到48位。 排列逻辑如下图所示−

排列逻辑
  • 图形化描述的排列逻辑通常被描述为 DES 规范中的表格,如图所示 −

DES 规范
  • XOR (Whitener). − 扩展置换后,DES对扩展后的右段与轮密钥进行异或运算。 轮密钥仅在本次操作中使用。

  • Substitution Boxes − S 盒执行真正的混合(混乱)。 DES 使用 8 个 S 盒,每个 S 盒有 6 位输入和 4 位输出。 参考下图 −

S-boxes
  • S-box 规则如下图所示 −

S-box 规则
  • 总共有八个s-box表。 然后,所有八个 s-box 的输出被组合成 32 位部分。

  • 直接排列 − 然后对 S 盒的 32 位输出进行直接排列,规则如下图所示:

直接排列

密钥生成

轮密钥生成器根据 56 位密钥创建 16 个 48 位密钥。 密钥生成过程如下图所示−

密钥生成

奇偶校验丢弃、移位和压缩 P 盒的逻辑在 DES 描述中给出。

DES 分析

DES 满足分组密码的两个所需属性。 这两个特性使得密码非常强大。

  • 雪崩效应 − 明文的微小变化都会导致密文的巨大变化。

  • 完整性 − 每一位密文都依赖于许多位明文。

在过去几年中,当选择的密钥是弱密钥时,密码分析发现 DES 存在一些弱点。 应避免使用这些键。

DES 已被证明是一种设计精良的分组密码。 除了穷举密钥搜索之外,没有对 DES 进行重大的密码分析攻击。