分组密码操作模式


在本章中,我们将讨论分组密码的不同操作模式。这些是通用分组密码的程序规则。有趣的是,不同的模式会导致实现不同的属性,从而增加底层分组密码的安全性。

分组密码处理固定大小的数据块。通常,消息的大小大于块的大小。因此,长消息被分成一系列连续的消息块,并且密码一次对这些块进行操作。

电子密码本 (ECB) 模式

此模式是处理一系列按顺序列出的消息块的最直接的方法。

手术

  • 用户获取第一块明文并使用密钥对其进行加密以产生第一块密文。

  • 然后,他获取第二个明文块,并使用相同的密钥遵循相同的过程,依此类推。

ECB模式是确定性的,即如果明文块P1,P2,…,Pm在同一密钥下被加密两次,则输出的密文块将是相同的。

事实上,从技术上来说,对于给定的密钥,我们可以为所有可能的明文块创建密文码本。然后,加密只需查找所需的明文并选择相应的密文。因此,该操作类似于在码本中分配码字,因此获得了正式名称——电子码本操作模式(ECB)。如下所示 -

欧洲央行模式

欧洲央行模式分析

实际上,任何应用数据通常都具有可以猜测的部分信息。例如,可以猜测工资范围。如果明文消息在可预测的范围内,来自 ECB 的密文可以允许攻击者通过试错来猜测明文。

例如,如果已知 ECB 模式的密文可以加密工资数字,那么少量的试验将允许攻击者恢复该数字。一般来说,我们不希望使用确定性密码,因此在大多数应用中不应使用 ECB 模式。

密码块链接 (CBC) 模式

CBC 操作模式为生成密文提供了消息依赖性,并使系统具有非确定性。

手术

CBC 模式的操作如下图所示。步骤如下 -

  • 将 n 位初始化向量 (IV) 加载到顶部寄存器中。

  • 将 n 位明文块与顶部寄存器中的数据值进行异或。

  • 使用密钥 K 与底层分组密码加密 XOR 运算的结果。

  • 将密文块送入顶部寄存器并继续操作,直到处理完所有明文块。

  • 为了解密,IV 数据与解密的第一个密文块进行异或。第一个密文块也被输入到寄存器中,替换 IV 以解密下一个密文块。

CBC模式

CBC模式分析

在CBC模式下,当前的明文块与前一个密文块相加,然后用密钥对结果进行加密。因此,解密是相反的过程,涉及解密当前密文,然后将先前的密文块添加到结果中。

CBC 相对于 ECB 的优点是,更改 IV 会导致相同消息产生不同的密文。缺点是,由于连锁效应,传输中的错误在解密过程中会传播到其他几个块。

值得一提的是,CBC 模式构成了众所周知的数据源认证机制的基础。因此,它对于那些需要对称加密和数据源身份验证的应用程序具有优势。

密码反馈 (CFB) 模式

在此模式下,每个密文块都会“反馈”到加密过程中,以便加密下一个明文块。

手术

CFB 模式的操作如下图所示。例如,在本系统中,消息块具有大小“s”个位,其中1<s<n。CFB 模式需要一个初始化向量 (IV) 作为初始随机 n 位输入块。IV 不必保密。操作步骤是 -

  • 将 IV 加载到顶部寄存器中。

  • 使用密钥 K 使用底层分组密码对顶部寄存器中的数据值进行加密。

  • 仅取加密过程输出的第 s 个最高有效位(左位),并将它们与第 s 位明文消息块进行异或以生成密文块。

  • 通过将已经存在的数据向左移动,将密文块送入顶部寄存器,并继续操作,直到处理完所有明文块。

  • 本质上,使用密钥对先前的密文块进行加密,然后将结果与当前的明文块进行异或。

  • 解密也遵循类似的步骤。预先确定的 IV 在解密开始时首先加载。

循环流化床模式

CFB模式分析

CFB 模式与 ECB 模式有很大不同,给定明文块对应的密文不仅取决于该明文块和密钥,还取决于之前的密文块。换句话说,密文块取决于消息。

CFB有一个很奇怪的特点。在这种模式下,用户仅使用分组密码的加密过程来解密密文。从未使用底层分组密码的解密算法。

显然,CFB 模式正在将分组密码转换为一种流密码。加密算法用作密钥流生成器来生成放置在底部寄存器中的密钥流。然后将该密钥流与明文进行异或,就像流密码的情况一样。

通过将分组密码转换为流密码,CFB 模式提供了流密码的一些有利属性,同时保留了分组密码的有利属性。

另一方面,传输错误由于块的改变而传播。

输出反馈 (OFB) 模式

它涉及将连续的输出块从底层分组密码反馈回它。这些反馈块提供比特串来馈送加密算法,加密算法在 CFB 模式的情况下充当密钥流生成器。

生成的密钥流与明文块进行异或运算。OFB 模式需要 IV 作为初始随机 n 位输入块。IV 不必保密。

下图描述了该操作 -

OFB模式

计数器 (CTR) 模式

它可以被认为是基于计数器的CFB模式,没有反馈。在这种模式下,发送方和接收方都需要访问可靠的计数器,该计数器在每次交换密文块时计算新的共享值。这个共享计数器不一定是秘密值,但挑战是双方必须保持计数器同步。

手术

CTR模式下的加密和解密如下图所示。操作步骤是 -

  • 对于发送方和接收方来说,在顶部寄存器中加载初始计数器值是相同的。它与 CFB(和 CBC)模式中的 IV 的作用相同。

  • 用密钥加密计数器的内容并将结果放入底层寄存器中。

  • 取出第一个明文块 P1 并将其与底部寄存器的内容进行异或。结果是C1。发送 C1 到接收器并更新计数器。计数器更新取代CFB模式下的密文反馈。

  • 以这种方式继续,直到最后一个明文块被加密。

  • 解密是相反的过程。密文块与计数器值的加密内容的输出进行异或。每个密文块解密后,与加密情况一样更新计数器。

点击率模式

计数器模式分析

它不具有消息依赖性,因此密文块不依赖于先前的明文块。

与CFB模式一样,CTR模式不涉及分组密码的解密过程。这是因为 CTR 模式实际上是使用分组密码来生成密钥流,并使用 XOR 函数对其进行加密。换句话说,CTR 模式还将分组密码转换为流密码。

CTR 模式的严重缺点是它需要发送方和接收方有同步计数器。同步丢失会导致明文恢复不正确。

而CTR模式几乎具有CFB模式的所有优点。此外,它根本不会传播传输错误。