前面的文章中文我们已经知道了分组密码是一种对称密钥密码体制,其工作原理可以概括为将明文消息分割成固定长度的分组,然后对每个分组分别进行加密处理。
下面介绍分组密码的运行模式
1.电码本模式(ECB)
2.密码分组链接模式(CBC)
3.密码反馈模式(CFB)
4.输出反馈模式(OFB)
5.计数器模式(CTR)
1.电码本模式(ECB)
ECB(Electronic Codebook)模式是最简单的运行模式
工作原理:
将明文分组后,对每个64bit长的明文 分组独立地使用相同的密钥进行加密,得到密文分组。相同的明文分组会产生相同的密文分组。
当密钥确定时,对明文的每一个分组,都有一个惟一的密文与之对应。因此我们可以形象地认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。
如果消息长于64比特,则将其分为长为64比特的分组,最后一个分组如果不够64比特,则需要填充。解密过程也是一次对一个分组解密,而且每次解密都使用同一密钥。

优点:简单高效,每个分组的加密可以并行处理,易于硬件实现。
缺点:缺乏安全性,由于相同明文分组加密结果相同,容易受到已知明文攻击,且不能隐藏明文的统计特性,不适用于对数据保密性要求较高的场景
2.密码分组链接模式(CBC)
工作原理:在加密时,将前一个密文分组与当前明文分组进行异或操作后再进行加密。第一个明文分组需要与一个初始向量(IV)进行异或操作。解密时,先对密文分组解密,然后再与前一个密文分组异或得到明文分组。

优点:安全性较高,因为每个密文分组都依赖于前面的所有明文分组和密钥,相同的明文分组在不同的位置加密后得到的密文不同,能有效隐藏明文的统计特性。
缺点:加密过程是串行的,无法并行处理,且对数据传输中的错误敏感,一个密文分组出错会影响到后续分组的解密
3.密码反馈模式(CFB)
工作原理:将前一个密文分组作为输入,通过密钥生成一个与明文分组等长的反馈值,该反馈值与当前明文分组进行异或得到密文分组。解密过程与加密类似,只是将密文分组作为输入来生成反馈值,再与密文分组异或得到明文分组。
CFB加密时,加密算法的输入是64比特移位寄存器,其初值为某个初始向量IV。加密算法输出的最左(最高有效位) 比特与明文的第一个单元 异或,产生出密文的第一个单元 ,并传送该单元。然后将移位寄存器的内容左移 位并将 送入移位寄存器最右边(最低有效位) 位。这一过程继续到明文的所有单元都被加密为止
解密时,将收到的密文单元与加密函数的输出进行异或。


优点:可以将分组密码转换为流密码,能够对任意长度的数据进行加密,且可以实时处理数据,适用于对实时性要求较高的场景。
缺点:与 CBC 模式一样,加密过程是串行的,无法并行处理,并且对错误敏感。
4.输出反馈模式(OFB)
工作原理:通过密钥生成一个与明文分组等长的输出值,该输出值与当前明文分组进行异或得到密文分组。在加密过程中,密钥和一个初始向量通过加密算法不断生成新的输出值。解密时使用相同的密钥和初始向量生成相同的输出值,再与密文分组异或得到明文分组。


优点:对传输错误不敏感,因为每个明文分组的解密只依赖于自身的密文分组和生成的输出值,不会像 CBC 和 CFB 模式那样出现错误传播。
缺点:安全性相对较低,若攻击者能够修改密文分组,可能会导致解密出的明文出现可预测的变化。
5.计数器模式(CTR)
工作原理:使用一个计数器,每次加密时将计数器的值作为输入,通过密钥生成一个与明文分组等长的密钥流,然后将密钥流与明文分组进行异或得到密文分组。计数器的值在每次加密后递增。
优点:加密和解密可以并行进行,效率高,且对错误不敏感,适用于高速数据处理和并行计算的场景。
缺点:需要确保计数器的值在不同的加密过程中是唯一的,否则可能会导致安全性下降。