数据加密标准


数据加密标准 (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 对扩展后的右段与轮密钥进行异或运算。轮密钥仅在该操作中使用。

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

S盒
  • S 盒规则如下图所示 -

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

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

直接排列

密钥生成

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

密钥生成

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

DES 分析

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

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

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

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

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