📅  最后修改于: 2021-01-12 04:45:02             🧑  作者: Mango
在本章中,我们将讨论分组密码的不同操作模式。这些是通用分组密码的程序规则。有趣的是,不同的模式导致实现了不同的属性,这增加了底层分组密码的安全性。
分组密码处理固定大小的数据块。通常,消息的大小大于块的大小。因此,长消息被分为一系列连续的消息块,并且密码一次对这些块进行操作。
此模式是处理一系列顺序列出的消息块的最直接方法。
用户获取第一个明文块,并用密钥对其进行加密,以生成第一个密文块。
然后,他获取第二个明文块,并使用相同的密钥执行相同的过程,依此类推。
ECB模式是确定性的,即,如果使用相同密钥对明文块P1,P2,…,Pm进行两次加密,则输出密文块将相同。
实际上,从技术上来说,对于给定的密钥,我们可以为所有可能的明文块创建密文代码簿。然后,加密将仅需要查找所需的明文并选择相应的密文。因此,该操作类似于在代码簿中分配代码字,因此获得正式名称-电子代码簿操作模式(ECB)。它说明如下-
实际上,任何应用程序数据通常都具有可以猜测的部分信息。例如,可以猜测工资范围。如果明文消息在可预测范围内,则来自ECB的密文可以使攻击者通过反复试验来猜测明文。
例如,如果已知来自ECB模式的密文可以加密薪水数字,则少量的尝试将使攻击者可以恢复该数字。通常,我们不希望使用确定性密码,因此大多数应用程序不应使用ECB模式。
CBC操作模式为生成密文提供了消息相关性,并使系统不确定。
下图描述了CBC模式的操作。步骤如下-
将n位初始化向量(IV)加载到顶部寄存器中。
将n位纯文本块与顶部寄存器中的数据值进行异或。
使用具有密钥K的基础块密码对XOR操作的结果进行加密。
将密文块送入最高寄存器,然后继续操作,直到处理完所有明文块为止。
为了解密,将IV数据与解密的第一个密文块进行异或。第一个密文块也被送入寄存器替换IV,以解密下一个密文块。
在CBC模式下,当前的明文块将添加到前一个密文块,然后使用密钥对结果进行加密。因此,解密是相反的过程,其中涉及解密当前密文,然后将前一个密文块添加到结果中。
CBC相对于ECB的优势在于,更改IV会导致相同消息的密文不同。在缺点方面,由于链接效应,传输中的错误会在解密期间传播到其他几个块。
值得一提的是,CBC模式构成了众所周知的数据源身份验证机制的基础。因此,对于同时需要对称加密和数据源身份验证的那些应用程序来说,它具有优势。
在这种模式下,每个密文块都会“反馈”到加密过程中,以便对下一个明文块进行加密。
下图描述了CFB模式的操作。例如,在本系统中,消息块具有大小为“ s”的比特,其中1 将IV加载到顶部寄存器中。 使用密钥K用基础块密码对顶部寄存器中的数据值进行加密。 仅获取加密过程输出的’s’个最高有效位(左位),并将它们与’s’位纯文本消息块进行异或以生成密文块。 通过将已经存在的数据向左移动,将密文块送入顶部寄存器,然后继续操作,直到处理完所有明文块为止。 本质上,先前的密文块使用密钥加密,然后将结果与当前的明文块进行异或。 遵循类似的步骤进行解密。预定的IV最初在解密开始时加载。
CFB模式与ECB模式明显不同,与给定明文块相对应的密文不仅取决于该明文块和密钥,还取决于先前的密文块。换句话说,密文块取决于消息。
CFB具有一个非常奇怪的功能。在这种模式下,用户仅使用分组密码的加密过程来解密密文。从未使用基础块密码的解密算法。
显然,CFB模式正在将分组密码转换为一种流密码。加密算法用作密钥流生成器,以生成置于底部寄存器中的密钥流。然后,与流密码一样,将此密钥流与明文进行异或。
通过将分组密码转换为流密码,CFB模式提供了流密码的一些有利特性,同时保留了分组密码的有利特性。
在另一方面,由于块的改变,传输的误差会传播。
它涉及将来自基础块密码的连续输出块反馈回去。这些反馈块提供比特字符串以馈送加密算法,就像CFB模式一样,该算法用作密钥流生成器。
生成的密钥流与明文块进行异或。 OFB模式需要IV作为初始随机n位输入块。 IV不必是秘密的。
下图描述了该操作-
可以将其视为没有反馈的CFB模式的基于计数器的版本。在这种模式下,发送方和接收方都需要访问可靠的计数器,该计数器每次交换密文块时都会计算一个新的共享值。该共享计数器不一定是秘密值,但挑战在于双方必须保持计数器同步。
下图描述了CTR模式下的加密和解密。操作步骤是-
对于发送方和接收方,将初始计数器值加载到顶部寄存器中是相同的。它在CFB(和CBC)模式下的作用与IV相同。
用密钥加密计数器的内容,并将结果放入底部寄存器。
将第一个明文块P1与其进行“异或”运算到底部寄存器的内容中。结果是C1。将C1发送到接收器并更新计数器。计数器更新将替换CFB模式下的密文反馈。
以这种方式继续,直到最后一个明文块已被加密。
解密是相反的过程。密文块与计数器值的加密内容的输出进行异或。在解密每个密文块之后,如加密的情况一样,计数器被更新。
它不具有消息依赖性,因此密文块不依赖于先前的明文块。
与CFB模式一样,CTR模式不涉及块密码的解密过程。这是因为CTR模式实际上是使用分组密码来生成密钥流,并使用XOR函数加密。换句话说,CTR模式还将块密码转换为流密码。
CTR模式的严重缺点是,它需要在发送方和接收方都具有一个同步计数器。同步丢失会导致错误地恢复明文。
但是,CTR模式几乎具有CFB模式的所有优点。另外,它根本不传播传输错误。