分组密码操作模式

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

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

电子密码本 (ECB) 模式

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

操作

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

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

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

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

ECB 模式

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 模式分析

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

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

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

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

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

输出反馈(OFB)模式

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

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

操作如下图所示 −

OFB 模式

Counter(计数器)(即CTR)模式

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

操作

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

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

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

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

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

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

CTR 模式

Counter模式解析

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

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

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

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