密码学 - 数据加密标准



DES 代表数据加密标准算法,是一种由 IBM 团队在 20 世纪 70 年代初期创建的对称密钥分组密码,并在一段时间后被美国国家标准与技术研究院采用。在这种方法中,我们将明文分成 64 位的块,并借助 48 位密钥将其转换为密文。

如您所知,它是一种对称密钥方法,它使用相同的密钥来加密和解密数据,这在我们之前章节中已经讨论过了。如果它是非对称算法,则需要不同的密钥来加密和解密。

一些系统可以破解 DES 算法。该算法使用 56 位密钥。DES 使用此密钥将 64 位明文块转换为 64 位密文块。

DES 过程包含多个步骤,每个步骤称为“轮”。轮数根据我们使用的密钥大小而异。例如,128 位密钥需要 10 轮,192 位密钥需要 12 轮,依此类推。

DES 算法的历史

DES 基于 LUCIFER Feistel 分组密码,该密码由 IBM 密码学研究员 Horst Feistel 于 1971 年发明。DES 使用 16 轮 Feistel 结构,每轮使用唯一的密钥。

1976 年 11 月,DES 被批准为政府加密标准,后来在 1983 年、1988 年和 1999 年得到再次确认。

在公开竞赛开发替代方案后,高级加密标准 (AES) 于 2002 年取代了 DES 成为公认的标准,结束了 DES 的垄断地位。2005 年 5 月,NIST 正式撤销了 FIPS 46-3(1999 年的再次确认),但是三重 DES (3DES) 仍然允许用于敏感的政府信息,直到 2030 年。

DES 的类型/变体

数据加密标准主要有两个变体,如下所示:

双重 DES

双重 DES 是一种加密类型,其中必须在同一明文中存在两次 DES。在这两种情况下,明文都在多个密钥的帮助下进行加密。为了解密,需要这两个密钥。

Double DES Structure

三重 DES

三重 DES 有两种类型,如下所示:

使用两个密钥的三重 DES - 在使用两个密钥的三重 DES 中,只有两个密钥 K1 用于第一个和第三个过程,K2 用于第二个过程。

使用三个密钥的三重 DES - 在三重 DES 中,明文块 P 首先使用密钥 K1 加密,然后使用第二个密钥 K2 加密,最后使用第三个密钥 K3 加密,其中 K1、K2 和 K3 彼此不同。

DES 的结构

DES 使用 16 轮 Feistel 结构。块大小为 64 位。尽管密钥长度为 64 位,但 DES 的有效密钥长度为 56 位,因为密钥的 64 位中的 8 位没有被加密算法使用(仅用作校验位)。DES 的一般结构如下图所示:

DES Structure

由于 DES 基于 Feistel 密码,因此指定 DES 所需的只是:

  • 轮函数
  • 密钥编排
  • 任何其他处理 - 初始和最终置换

初始和最终置换

初始和最终置换是彼此互逆的简单置换盒 (P 盒)。它们在 DES 中没有密码学意义。初始和最终置换如下所示:

Initial and Final Permutation

轮函数

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

Round Function

现在让我们讨论上图及其术语:

  • 扩展置换盒 - 由于右侧输入为 32 位,而轮密钥为 48 位,因此我们首先需要将右侧输入扩展到 48 位。置换逻辑在下图中以图形方式描述:
Permutation Logic
  • 图形描述的置换逻辑通常在 DES 规范中以表格形式描述,如下所示:
DES Specification
  • XOR(白化器) - 在扩展置换之后,DES 对扩展的右侧部分和轮密钥进行 XOR 操作。这是唯一使用轮密钥的操作类型。
  • 替换盒 - S 盒执行真正的混合(混淆)。DES 中使用了 8 个 S 盒,每个 S 盒都有 6 位输入和 4 位输出。请参阅下图:
S Boxes
  • S 盒规则如下所示:
S Boxe Rule
  • 共有 8 个 S 盒表。然后将所有 8 个 S 盒的输出组合成 32 位部分。
  • 直线置换 - S 盒的 32 位输出然后进行直线置换,规则如下图所示:
Straight Permutation

DES 算法

以下步骤定义了算法过程:

  • 步骤 1 - 64 位明文块最初提供给初始置换 (IP) 函数以启动该过程。
  • 步骤 2 - 之后,明文经过初始置换 (IP)。
  • 步骤 3 - 然后,第一个置换 (IP) 生成左明文 (LPT) 和右明文 (RPT),它们是置换块的两侧。
  • 步骤 4 - 加密过程包括对每个 LPT 和 RPT 进行 16 个循环。
  • 步骤 5 - 最后,LPT 和 RPT 成为一个,并且新组合的块经过最终置换 (FP)。
  • 步骤 6 - 此过程产生预期的 64 位密文。

加密过程的步骤 4 可以进一步细分为五个阶段:密钥转换、扩展置换、S 盒置换、P 盒置换、XOR 和交换。

我们对解密应用相同的过程,但我们反转了 16 个轮密钥的顺序。

接下来,我们将探索DES的几种操作模式,以更好地理解DES。

密钥生成

轮密钥生成器从56位的密码密钥中生成十六个48位的密钥。密钥生成过程如下图所示:

Key Generation

该算法执行16轮加密,并且每轮都会生成一个唯一的密钥。在转换到步骤之前,必须了解在明文中,位从1到64进行标记,其中1是最重要的位,64是最不重要的位。密钥生成过程如下:

  • 轮密钥生成器从56位的密码密钥中生成十六个48位的密钥。密码密钥以64位密钥的形式提供,其中8个额外位是奇偶校验位,在实际的密钥生成过程开始之前会被丢弃。
  • 奇偶校验位丢弃过程从64位密钥中丢弃奇偶校验位(第8位、第16位、第24位、第32位…第64位),并根据预定义规则对剩余位进行置换,如下面的奇偶校验位丢弃表所示。
  • 这些剩余的56位通常用于密钥生成。
  • 置换后,密钥被分成两个28位的部分。每个部分都会向左移动一位或两位,具体取决于轮数。
  • 在第1、2、9和16轮中,移位一位;在其他轮中,移位两位。这两个部分被整合以构建一个56位的部分。
  • 因此,压缩D盒将其转换为48位。这48位被用作一轮的密钥。

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

DES分析

DES满足分组密码的两个期望属性。这两个属性使密码非常强大。

  • 雪崩效应 - 密文对明文即使很小的变化也会发生显著的变化。明文中的一个位发生变化会导致密文中某些位发生变化。雪崩效应的优势可以在使用DES和AES算法的嵌入式软件安全中得到体现。攻击者试图大量窃取数据库中保存的数据。
  • 完整性 - 完整性效应定义了密文的每个比特都需要基于明文中的某些比特。DES中由D盒和S盒产生的扩散和混淆,表现出非常强的完整性效应。完整性特性进一步强化了雪崩的概念。它要求密文的变化对于输入明文或密钥的每个变化位都一致地分布。

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

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

DES强度

DES的强度如下:

  • 使用56位密钥 - 56位的加密密钥提供了256个可能的密钥,由于组合数量巨大,使得暴力攻击变得不可能。即使一台机器每微秒执行一次DES加密,解密密码也需要数千年的时间。

    Diffie和Hellman提出了一个并行机器的可行性,该机器具有100万个加密单元,每个单元每微秒能够执行一次加密。但是,解密消息可能不仅仅需要尝试所有可能的密钥,特别是如果消息是英文明文,因为英文明文很容易识别。如果在加密前压缩文本,则解密变得更具挑战性。

  • 算法的性质 - 密码分析师可以通过利用DES算法的特性对其进行密码分析。他们专注于每次迭代中使用的八个替换表或S盒的弱点。虽然研究人员发现了S盒中的许多规律性和意外行为,但还没有人发现其中的弱点。

    多年来,这种持续的研究导致识别了S盒中的许多不规则性和意外行为。

  • 定时攻击 - 定时攻击是一种安全漏洞,属于更广泛的侧信道攻击类别,攻击者通过测量系统对不同输入的响应时间来提取敏感数据。Kocher设计了一种专门针对RSA解密密钥的定时攻击,主要用于智能卡等硬件安全令牌。

    这些攻击侧重于公钥算法,通过观察多个密文的解密时间来提取有关密钥或明文的信息。为了减轻定时攻击,使用了诸如“盲化”之类的技术,以确保无论处理的密钥或消息是什么,计算时间都保持一致。

DES的优点

DES方法的优点是:

  • 美国当局已将其设定为标准。
  • 它在硬件上的运行速度比在软件上快。
  • 三重DES使用一个难以破解的168位密钥。

DES的缺点

DES的缺点或劣势如下:

  • 它是一种安全性较弱的算法。
  • 它可以使用暴力攻击破解。
  • 市场上有一种名为Deep Crack的DES破解设备。

对DES的攻击

对DES的攻击有多种,如下所示:

  • 差分密码分析 - 差分密码分析的主要目标是查看密文中的统计分布和模式,以提供推导出密码中使用的密钥的元素。

    差分密码分析是密码学中的一门研究分支,它比较输入方法与加密输出方法的差异。它主要用于研究分组密码,以确定明文的更改是否会导致加密密文中出现任何非随机结果。

  • 相关密钥密码分析 - 相关密钥密码分析认为攻击者不仅了解特定明文在原始(未知)密钥K下的加密,还了解在某些派生密钥K0 = f (K)下的加密。

    在选择相关密钥攻击中,攻击者定义了密钥的修改方式;已知相关密钥攻击是指密钥差异已知但无法由攻击者选择的情况。

    它可以强调攻击者了解或选择密钥之间的关系,而不仅仅是实际的密钥值。

    相关密钥密码分析是对密钥交换协议的实际攻击,这些协议不提供密钥完整性,攻击者能够在密钥中翻转比特,而无需了解键盘密钥更新协议(这些协议使用已知函数更新密钥,例如K、K + 1、K + 2等)。相关密钥攻击也用于攻击转子设备,例如操作员持续错误地设置转子。

  • 线性密码分析 - 线性密码分析是一种通用的密码分析形式,它依赖于发现密码元素的仿射近似。针对分组密码和流密码已经产生了攻击。线性密码分析是两种最常用的分组密码攻击之一,另一种是差分密码分析。

    线性近似方程依赖于最佳(n-2)轮表达式,并且密钥候选者的可靠性从这些方程中改变。前者减少了所需的明文数量,而后者提高了攻击的成功率。

  • 暴力攻击 - 在密码分析中,暴力攻击是一种通过尝试大量可能性来破坏密码方案的方法。

    例如,它可以穷举所有可能的密钥以解码消息。根据实施暴力攻击的实际可行性选择合适的密钥长度。

    对于对称密钥密码,暴力攻击通常意味着对密钥空间进行暴力搜索;也就是说,检查所有可能的密钥以找到用于创建特定密文的明文。

    在暴力攻击中,在找到正确密钥之前预期的尝试次数类似于密钥空间大小的一半。例如,如果有264个可能的密钥,则暴力攻击通常可以在263次尝试后找到密钥。

影响DES安全性的因素

有一些因素会影响DES的安全性,如下所示:

  • 弱密钥 - 由于初始密钥被修改以接收算法每个轮次的子密钥的方法,因此某些初始密钥是弱密钥。初始密钥值被分成两半,每一半独立地进行修改。

    如果每一半中的所有位都为0或1,则该密钥可用于算法的某些循环,并且在算法的所有循环中都相同。如果密钥完全为1,完全为0,或者密钥的一半完全为1,另一半完全为0,则可能出现这种情况。这使得DES安全性降低。

  • 代数结构 - DES加密操作可以形成一个群,并且用k1加密一组明文块,然后用k2加密,可以等于用k3加密这些块。

    更糟糕的是,DES可能容易受到中间相遇已知明文攻击,该攻击只需228步即可运行。如果DES是封闭的,那么对于任何k1和k2,都将存在一个k3,使得:

    Ek2(Ek1(P))=Ek3(P)

  • 密钥长度 - 如果有可能通过时空权衡来加速搜索过程。计算和保存256个可能的加密单个明文块在每个可能的密钥下的结果,然后破解未知密钥的可能性,并且需要将数据块添加到加密流中,恢复生成的密文并查看密钥。

    轮数 - 轮数保持为16,因为轮数减少会导致受到强烈攻击。具有三轮或四轮的DES很容易被破解。具有少于16轮的任何数量轮的DES都可以使用已知明文攻击比暴力攻击更有效地破解。

DES的测试和实现

实现DES需要安全提供商。即使有多种选择,选择供应商也是实施过程中的重要第一步。您使用的语言(如MATLAB、Java、Python或C)可能会影响您的选择。

选择提供商后,您必须决定是使用字节数组还是明文随机构建密钥生成器将产生的密钥。

测试加密对于确保正确使用加密也很重要。

DES的设计问题

DES中的设计问题包括S盒、D盒和轮数。

  • S盒用于将48位输入替换为32位输出,为加密过程添加非线性性和复杂性。它们遵循特定的属性,例如行内置换和非仿射变换。
  • D盒类似于转置密码,将输入位从一轮置换到下一轮,确保每个S盒输入来自不同的S盒输出,并避免轮内重复。
  • DES使用了十六轮Feistel密码,但已证明在八轮之后,每个密文都成为每个明文和密钥位的函数,表明安全性足够。
广告