【密码算法 之三】分组密码工作模式 (ECB \ CBC \ CFB \ OFB \ CTR \ XTS)浅析
1. 什么是分组密码的模式
对称加密算法DES、3DES、AES等都属于分组密码,它们只能加密固定长度的明文,然而在实际生活中,人们通常需要加密的文件(数据)并不是8字节或者16字节的单个明文分组,而是需要加密一个较大的文件或者电子邮件等,对于这种需要加密任意长度的明文,就需要对分组密码进行迭代,分组密码的迭代方式就称为分组密码的“模式”。
分组密码的模式有很多种,主要分为如下几类:
模式 | 备注 |
---|---|
ECB | Electronic Code Book mode(电子密码本模式) |
CBC | Cipher Block Chaining mode(分组密码链接模式) |
CFB | Cipher Feedback mode(密码反馈模式) |
OFB | Output Feedback mode(输出反馈模式) |
CTR | Counter mode(计数器模式) |
XTS | XEX(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 | 加密对象 | 并行处理 |
---|---|---|---|---|
ECB | 1 | 无 | 明文分组 | 支持(加密、解密) |
CBC | 1 | 有 | 明文分组与上一个密文分组(或初始化向量IV)“异或”后的值 | 仅解密支持 |
CFB | 1 | 有 | 密文分组(或I初始化向量IV) | 仅解密支持 |
OFB | 1 | 有 | IV值,IV加密的输出作为下一个加密的输入,以此类推 | 不支持 |
CTR | 1 | 无 | 计数器CTR值 | 支持(加密、解密) |
XTS | 2 | 无 | 明文及tweak值 | 支持(加密、解密) |
各种模式优缺点对比:
参考文献:《图解密码技术(第三版)》
各种算法的链接地址如下:
【密码算法 之零】对称算法(DES,、3DES、 AES、DM5、HMAC、CMAC、SHAxx、SM3、SM4),非对称算法(RSA、ECC、ECDSA、ECDH、SM2、SM9…)
更多推荐
所有评论(0)