密码技术(四、二)之分组模式(CBC模式)

分组密码的模式之 CBC模式

CBC模式

 CBC模式是指将前一个密文分组与当前明文分组的内容混合起来进行加密,这样就可以避免ECB模式的弱点。
 CBC模式的全称Cipher Block Chaining 模式(密文分组组链接模式),之所以叫这个名字是因为密文分组是像链条一样相互连接在一起。
 在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。


密码技术(四、二)之分组模式(CBC模式)_第1张图片
CBC模式(密文分组链接模式).png

ECB模式 和 CBC模式比较


密码技术(四、二)之分组模式(CBC模式)_第2张图片
ECB模式 和 CBC模式比较.png

初始化向量

 当加密第一个明文分组是,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来替代“前一个密文分组”,这个比特序列称为初始化向量 ,通常缩写为IV。每次加密时都会随机产生一个不同的比特序列来作为初始化向量。

CBC模式特点

 明文分组在加密之前一定会与“前一个密文分组”进行XOR运算,因此即便明文分组1和2的值是相等的,密文分组1和2的值也不一定是相等的。这样一来,ECB模式的缺陷在CBC模式中就不存在了。
 在CBC模式找那个,我们无法单独对一个中间的明文分组进行加密。例如,如果要生成密文分组3,则至少需要凑齐明文分组1、2、3才行。
 假设CBC模式加密的密文分组中有一个分组损坏了。在这种情况下,只要密文分组的长度没有发生编号,则解密时,最多只会影响2个分组受到数据损坏的影响。
 假设CBC模式的密文分组中有一些比特缺失了,那么此时即便只缺失了1比特,也会导致密文分组的长度发生变化,此后的分组发生错位,这样一来,缺失比特的位置之后的密文分组也就全部无法解密了。


密码技术(四、二)之分组模式(CBC模式)_第3张图片
CBC模式中密文分组存在缺失的比特时,之后所有明文分组都会受到影响.png

对CBC模式的攻击

 假设主动攻击者Mallory的目的是通过修改密文来操纵解密后的明文。如果Mallory能够对初始化向量中的任意比特进行反转,则明文分组中相应的比特也会被反转。这是因为在CBC模式的解密过程中,第一个明文分组会和初始化向量进行XOR运算。

密码技术(四、二)之分组模式(CBC模式)_第4张图片
对CBC模式的攻击(初始化向量的比特反转).png

这样,Mallory 就可以对初始化向量进行攻击,但是想要对密文分组也进行同样的攻击就非常困难了。

填充提示攻击

填充提示攻击(Padding Oracle Attack)是一种利用分组密码中的填充部分来进行攻击的方法。在分组密码中,当明文长度不为分组长度的整数倍时,需要在最后一个分组填充一些数据使其凑满一个分组的长度。在填充提示攻击中,攻击者会反复发送一段密文,每次发送时都对填充的数据进行少许改变。由于接收者在无法正确解密时会返回一个错误消息,攻击者通过这一错误消息就可以获得一部分与明文相关的信息。这一攻击方式并不仅限于CBC模式,而是适用于所有需要进行分组填充的模式。2014年对SSL3.0造成重大影响的POODLE攻击实际上就是一种填充攻击。要防御这种攻击,需要对密文进行认证,确保这段密文的确是由合法的发送者在制定明文内容的前提下生成的。

对初始化向量进行攻击

 初始化向量必须使用不可预测的随机数。然后在SSL/TSL1.0的版本协议中,初始向量并没有使用不可预测的随机数,而是使用了上一次CBC模式加密时的最后一个分组。为了防御攻击者对此进行攻击,TSL1.1以上的版本中改为了必须显式得传送初始化向量。

CBC模式的应用实例

 确保互联网安全的通信协议之一SSL/TSL,就是使用CBC模式来确保通信的机密性的,如使用CBC模式三重DES的3DES_EDE_CBC以及CBC模式256比特AES的AES_256_CBC等。

扩展 CTS模式

分组密码中海油一种模式叫作CTS模式(Cipher Text Stealing模式)。在分组密码中,当明文长度不能被分组长度整除时,最后一个分组就需要进行填充。CTS模式是使用最后一个分组的其哪一个密文分组数据来讲信息填充的,它通常和ECB模式以及CBC模式配合使用。根据最后一个分组的发送顺序不同,CTS模式有几种不同的变体(CBC-CS1、CBC-CS2、CBC-CS3)。


密码技术(四、二)之分组模式(CBC模式)_第5张图片
CTS模式加密(CBC-CS3).png
密码技术(四、二)之分组模式(CBC模式)_第6张图片
CTS模式解密(CBC-CS3).png

该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原著

你可能感兴趣的:(密码技术(四、二)之分组模式(CBC模式))