链接:
ECB
1 CBC–cipher block chaing
版权说明,并非原创!!!只是简单的知识总结记录
[日]结城浩出版社,图解密码技术(第3版),人民邮电出版社出版时间,2016年06月。感谢!
- CBC 是密文分组连接模式
- 在CBC中,明文分组与前一个密文分组进行XOR运算,然后再加密
我们可以与ECB比较发现,CBC比ECB多一步,一步什么呢?多了XOR的过程,这样密文加密与密文加密就通过类似链的方式连接了起来,窃听者就很难通过改变密文分组的方式搞破坏!
上图也可以显示出来它们之间的比较,CBC模式在每次加密之间都进行的XOR操作!
1.1 初始向量化
当加密第一个明文分组时,由于不存在前一个密文分组,因此需要事先准备一个长度为一个分组的比特序列来代替前一个密文分组,称作初始化向量,缩写IV 一般来讲,每次加密都会产生一个不同的比特序列作为初始化向量。
1.2 CBC模式的不足
由于CBC模式的原理,我们无法单独的对某个密文分组加密,比如,要对第3个密文分组加密,那么我们必然需要第1,2个明文,以及他们的密文才可以。这就意味着,如果第2组密文中的某些比特发生了变化,那么会导致之后的所有的密文都会损坏的。
1.3 对CBC模式的攻击
主动攻击者Mallory的目的是通过修改密文来草丛解密后的明文。如果Mallory可以对初始向量化中的任意比特进行翻转(1翻转为0,0翻转为1),那么明文分组(解密后的明文)也会发生响应比特的翻转。这是因为在CBC比特中,第一个明文分组会和初始化向量进行XOR运算。
这样呢,Mallory可以对初始向量化进行攻击。接收者收到的明文(解密之后的明文)就不在是发送者发送的明文了。
1.4 填充提示攻击
- 填充提示攻击—padding oracle attack是一种利用分组密码中填充部分啦进行攻击的方法。
- 具体来讲,假设发送的明文的比特的长度不是分组长度(128)的整数倍,最后一个明文分组一定是要填充的。
- 在填充攻击中,如果每次修改填充的比特,这样接收者接收的信息就是有误的,他会返回提示错误的消息,根据这些消息,Mallory就会得到关于明文的信息。
- 当然,验证数据是否被修改是可以的,比如MAC(消息验证码)。
1.5 对初始向量化的进行攻击 以及CBC的模式应用
- 对IV的攻击
- 在第1.3节已经讲过了,所以IV必须使用不可预测的随机数,这样Mallory就不能去修改IV了
- 在SSL/TLS的1.0版本中,IV不是不可预测的随机数,而是使用了上一次CBC模式加密时的最后一个分组。
-
为了避免,在SSL/TLS1.0以上的版本中,修改了规则。必须显示的传送IV
-CBC模式的应用 - 确保互联网安全通信的通信协议SSL/TLS,就是使用的CBC模式来确保通信的机密性的。
- CBC模式的三重DES的3DES_EDE_CBC
- CBC模式的256比特AES的AES_256_CBC
说明:除非在需要向下兼容的机构使用SED,其他都会使用AES
如果使用3DES,加密-解密-加密的**都是不同的,如果相同就和DES没什么区别了