CBC 模式和 ECB 模式解读

1. CBC 模式和 ECB 模式

CBC 模式的全称:Cipher Block Chaining 模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样互相连接在一起。

ECB 模式的全称:Electronic Codebook (电码本)。

在 CBC 模式中,首先将明文分组和一个密文分组进行 XOR (相异为一)运算,然后再进行加密

CBC 模式的加解密过程如下:

比较一下 ECB 模式与 CBC 模式的区别:

ECB 模式只进行了加密,而 CBC 模式则在加密之前进行了一次 XOR。

2. 初始化向量

当加密第一个明文分组时,由于不存在“前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来代替“前一个密文分组”,这个比特序列称为初始化向量(Initialization Vector),通常缩写为 IV。

一般来说,每次加密时都会随机产生一个不同的比特序列来作为初始化向量。

3. CBC 模式的特点

明文分组在加密之前一定会与“前一个密文分组”进行 XOR 运算,因此即使明文分组 1 和明文分组 2 的值是相等的,密文分组 1 和 2 的值也不一定是相等的。这样一来,ECB 模式的缺陷在 CBC 模式中就不存在了。

加密过程:在 CBC 模式中,无法单独对一个中间的明文分组进行加密。例如,如果要生成密文分组 3 ,则至少需要凑齐明文分组 1、2、3 才行。

解密过程:假设 CBC 模式加密的密文分组中有一个分组损坏了。在这种情况下,只要密文分组的长度没有发生变化,则解密时最多只有 2 个分组受到数据损坏的影响。见下图:

假设 CBC 模式的密文分组中有一些比特缺失了,那么此时即便只缺失 1 比特,也会导致密文分组的长度发生变化,此后的分组发生错位,这样一来,缺失比特的位置之后的密文分组也就全部无法解密。见下图: 

4. 对 CBC 模式的攻击

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

但是想对密文分组也进行同样的攻击就非常困难了。

例如,如果攻击者将密文分组 1 中的某个比特进行反转,则明文分组 2 中相应比特也会被反转,然而这一比特的变化却对解密后的明文分组1中的多个比特造成了影响,也就是说,只让明文分 1 中所期望的特定比特发生变化是很困难的。

5. 填充提示攻击

填充提示攻击是一种利用分组密码中填充部分来进行攻击的方法。

在分组密码中,当明文长度不为分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组长度。

在填充提示攻击中,攻击者会反复发送一段密文,每次发送时都对填充数据进行少许改变。由于接收者(服务器)在无法正确解密时会返回一个错误消息,攻击者通过这一错误消息就可以获得一部分与明文相关的信息。这一攻击并不仅限于 CBC 模式,而是适用所有需要进行分组填充的模式。

2014 年对 SSL3.0 造成了重大影响 POODLE 攻击实际上就是一种填充示攻击。

6. 对初始化向量(IV)进行攻击

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

7. CBC 模式应用

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

转载:CBC模式和ECB模式解读_洒家肉山大魔王的博客-CSDN博客_ecb模式

(SAW:Game Over!) 

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值