在密码学中,分组密码操作模式是使用分组密码来提供诸如机密性或真实性的信息服务的算法。基于分组的对称密码算法比如 DES/AES 算法只是描述如何根据秘钥对一段固定长度(分组块)的数据进行加密,对于比较长的数据,分组密码工作模式描述了如何重复应用某种算法加密分组操作来安全地转换大于块的数据量。

常见的分组密码工作模式有 ECBCBCCFBOFBCTR 五种

ECB(Electronic Codebook, 电子密码本)

ECB 模式是最简单的加密模式,明文消息被分成固定大小的块(分组),并且每个块被单独加密。

特点:

  • 每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行 并行计算
  • 一旦有一个块被破解,使用相同的方法可以解密所有的明文数据,安全性比较差。
  • 适用于数据较少的情形,加密前需要把明文数据填充到块大小的整倍数。

ECB

CBC(Cipher Block Chaining, 密码块链)

CBC模式中每一个分组要先和前一个分组加密后的数据进行异或操作,然后再进行加密。这样每个密文块依赖该块之前的所有明文块,为了保持每条消息都具有唯一性,第一个数据块进行加密之前需要用初始化向量IV进行异或操作。

特点:

  • 最常用的加密模式
  • 加密是连续的,不能并行处理
  • 消息块必须填充到块大小的整倍数。

CBC

CFB(Cipher Feedback, 密码反馈)

CFB模式和CBC模式比较相似,前一个分组的密文再加密后和当前分组的明文异或操作生成当前分组的密文。CFB模式的解密和CBC模式的加密在流程上其实是非常相似的。

注意:

  • CBC 是上一轮密文与本轮明文异或后再加密生成密文
  • CFB 是上一轮密文再加密后与本轮异或生成密文

CFB

OFB(Output Feedback, 输出反馈)

OFB模式将分组密码转换为同步流密码,也就是说可以根据明文长度先独立生成相应长度的流密码。

通过流程图可以看出,OFB和CFB非常相似。

  • CFB是前一个分组的密文加密后XOR当前分组明文
  • OFB是前一个分组与前一个明文块异或之前的流密码XOR当前分组明文。

由于异或操作的对称性,OFB模式的解密和加密完全一样的流程。

CFB

CTR(Counter, 计数器)

CTR模式与OFB模式一样,计数器模式将分组密码转换为流密码。它通过加密“计数器”的连续值来产生下一个密钥流块。

CTR