1. 什么是分组密码的模式

  对称加密算法DES、3DES、AES等都属于分组密码,它们只能加密固定长度的明文,然而在实际生活中,人们通常需要加密的文件(数据)并不是8字节或者16字节的单个明文分组,而是需要加密一个较大的文件或者电子邮件等,对于这种需要加密任意长度的明文,就需要对分组密码进行迭代,分组密码的迭代方式就称为分组密码的“模式”。
  分组密码的模式有很多种,主要分为如下几类:

模式备注
ECBElectronic Code Book mode(电子密码本模式)
CBCCipher Block Chaining mode(分组密码链接模式)
CFBCipher Feedback mode(密码反馈模式)
OFBOutput Feedback mode(输出反馈模式)
CTRCounter mode(计数器模式)
XTSXEX(XOR Encrypt XOR) Tweakable Block Cipher with Ciphertext Stealing

  明文分组:是指分组加密算法中作为加密对象的明文,明文分组的长度与分组加密算法的分组长度是一致的(比如AES的分组长度为128bit,对应的明文分组长度也是128bit)。
  密文分组:是指使用分组加密算法将明文分组加密后生成的密文,密文分组的长度与分组加密算法的分组长度也是一致的。

2. ECB模式

2.1 什么是ECB模式

  ECB(电子密码本)模式是一种最直接,最简单的消息加密方式。在ECB模式中,明文加密之后将直接得到密文,同样的密文解密之后,也直接得到明文。
特别注意:明文长度必须是“分组长度”的整数倍,非整数倍的,需在加密之前将其填充为“整数倍”
在这里插入图片描述

2.2 特点

  • 优点)加密方与解密方之间的分组同步不是必须的,即由于传输问题导致的接收方没有收到所有的加密分组时,不影响已经接收到的分组;
  • 优点)由于各分组之间没有关联,所以ECB的操作可以并行化;
  • 缺点)相同的明文分组,永远加密成相同的密文分组,导致加密过程很容易遭到攻击或破解。

3. CBC模式

3.1 什么是CBC模式

  CBC模式的全称是Cipher Block Chaining模式(分组密码l链接模式),它的工作机制主要基于两种思想:
  1)所有分组的加密都链接在一起,使得某一分组的密文不再仅依赖于该分组的明文,而是依赖于该分组之前(包含该分组)的所有明文分组;
  2)加密过程使用了初始化向量(IV)进行了随机化。
  在CBC模式中,首先将明文分组与上一个分组的密文进行“异或”运算,然后再进行加密操作。
在这里插入图片描述

3.2 特点

  • 优点)每一次加密都需要前一个密文块参与,明文中微小的改变都会使后续所有密文改变;
  • 优点)无法从密文看出明文的规律。安全性得以提高。目前,CBC是最为常用的工作模式;
  • 优点)改变某一个密文块,只会影响当前和下一个解密出的明文,不会影响后续的解密过程。
  • 缺点)由于每次加密都需要前一个密文参与,所以无法并行加密,只能串行加密,加密速度受到限制;解密是可以并行进行的

4. CFB模式

4.1 什么是CFB模式

  CFB模式的全称是Cipher FeedBack(密文反馈模式)。在CFB模式中,前一个密文分组会被送回到密码算法的输入端。所谓的反馈就是返回到输入端的意思。
  与ECB、CBC模式不同的是CFB加密的并不是明文,而是加密“上一分组的密文”,加密完“上一分组密文”之后在与当前分组的明文进行“异或”得到当前分组的密文。
在这里插入图片描述

4.2 特点

  1)CFB模式的工作模式与一次性密码本的工作模式非常类似,一次性密码本是通过将“明文”与“随机比特序列”进行XOR运算来生成密文的,而CFB模式则是通过“明文分组”与“密码算法”的输出进行XOR运算来生成“密文分组”的。在通过XOR进行加密的这一点上,两者是非常相似的。
  2)在CFB模式中,密码算法的输出相当于一次性密码本的随机比特序列,但是由于密码算法的输出是计算得到的,并不是真正的随机数,因此CFB模式并不能像一次性密码本那样具有理论上的不可破译性。
  3)CFB模式解密时,需要注意的是分组密码算法依然执行加密操作,因为秘钥流是通过加密操作得到的。
  4)CFB模式不要求待加密的明文必须是“明文分组长度”的整数倍。

5. OFB模式

5.1 什么是OFB模式

  OFB模式的全称是Output-FeedBack模式(输出反馈模式)。在OFB模式中密码算法的输出会反馈到密码算法的输入中。
  OFB模式并不是通过密码算法对明文直接进行加密的,而是将“明文分组”与“密码算法的输出”进行XOR运算产生“密文分组”的。在这一点上,OFB模式与CFB模式是非常相似的。
在这里插入图片描述
在这里插入图片描述

5.2 OFB与CFB模式对比

  OFB模式与CFB模式的区别仅在于密码算法的输入不一样:CFB模式中,密码算法的输入是上一个密文分组;OFB模式中,密码算法的输入是密码算法的前一个输出。
在这里插入图片描述

6. CTR模式

6.1 什么是CTR模式

  CTR模式的全称是CounTeR模式(计数器模式)。CTR模式是一种通过逐次累加的计数器进行加密来生成密码流的流密码。
  CTR模式中,每一个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成秘钥流,最终的密文分组是通过计数器加密得到的比特序列与明文进行XOR运算得到的。
  CTR模式无IV参与运算
在这里插入图片描述

6.2 CTR模式与OFB模式对比

  1)两者都属于流密码
  2)OFB是将输出反馈到输入,CTR则是将计数器的值作为输入
在这里插入图片描述

6.3 特点

  1) CTR模式的加密和解密使用相同的结构;
  2)因为解密及解密用到的“计数器”是通过nonce的值及分组序号直接计算出来的,所以CTR模式中可以以任意的顺序对分组进行加密或者解密;
  3)因为加解密无先后顺序之分,所以CTR模式支持并行计算

7. XTS模式

7.1 什么是XTS模式

  XTS的全称为XEX(XOR Encrypt XOR) Tweakable Block Cipher with Ciphertext Stealing,它是一种可调整的分组加密算法。应用于AES算法。
  1)有2个KEY,其中KEY1用于加密明文,KEY2用于加密tweak值。
  2)aj表示的“有限域”算法。
在这里插入图片描述
备注:上图引用于:https://www.zhihu.com/question/26452995,如有侵权,请联系我删除,谢谢。

7.2 特点

  1)有两个密钥,其中一个用于执行AES分组加密,另一个用于加密调整值(tweak), 这种加密调整借助有限域和异或运算,使得每次即时是相同的分组也不会得到相同的密文,确保了安全性。
  2) XTS 相比 ECB、CBC解决的两个问题是:相同的数据块得到的密文不可以相同(ECB);不同数据块可以独立加密和解密(CBC)。

8. 总结

  各种模式操作对象的对比:

模式KEY个数IV加密对象并行处理
ECB1明文分组支持(加密、解密)
CBC1明文分组与上一个密文分组(或初始化向量IV)“异或”后的值仅解密支持
CFB1密文分组(或I初始化向量IV)仅解密支持
OFB1IV值,IV加密的输出作为下一个加密的输入,以此类推不支持
CTR1计数器CTR值支持(加密、解密)
XTS2明文及tweak值支持(加密、解密)

  各种模式优缺点对比:
在这里插入图片描述
参考文献:《图解密码技术(第三版)》

各种算法的链接地址如下:
【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9…)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐