CBC 模式

CBC 模式,可能是 2018 年之前最常用、最常见的加密模式,和 ECB 模式不同,由于初始化向量和链接模式的使用,CBC 模式解决了数据重放攻击的问题,可是,从 2018 年开始,由于它的安全问题,CBC 模式开始退出历史舞台,尽管这一进程可能需要十数年,甚至数十年

不知道你是不是已经有了一个疑问,既然 CBC 都要退出历史舞台了,那我们还学习它干什么?

原因1,CBC 的退出进程可能需要十数年才能完成,你现在的工作项目中可能还存在 CBC 模式的大量应用,学习 CBC 模式有助于你解决现存项目的安全问题

原因2,学习针对 CBC 的攻击方案是我们深入理解加密算法安全问题的最好切入点,了解这些安全问题和攻击方案有助于你更好地使用加密算法

原因3,也是最重要的原因,就是我们要进一步理解链接模式和初始化向量对加密算法的影响

一、工作流程

1、加密

在这里插入图片描述
明文分组在加密前要与上一个密文分组进行异或运算,异或运算的结果会直接作为一个输入参与到加密函数的运算中,与 ECB 模式不同的是,每个密文分组不仅依赖于它对应的明文分组,还依赖于上一个密文分组,上一个密文分组还依赖于上上一个密文分组,…

2、解密

在这里插入图片描述
注意,初始化向量(同加密的初始化向量)只影响第一个明文分组,并不影响后续的解密过程和明文分组,类似地,一个密文分组,只影响它的下一个明文分组,并不影响更后面的解密过程和明文分组,这和加密还是有所不同的

二、初始化向量是否需要保密

我们先前讨论过初始化向量的选择问题,就是在一个对称密钥的生命周期里,初始化向量不能重复,否则,相同的明文就会有相同的密文,进而消解密文反馈的作用,使得 CBC 模式和 ECB 模式一样脆弱,所以,初始化向量的唯一性在加密运算的安全性中至关重要,另外,初始化向量的随机性也很重要,为什么?请参考这篇文章

那你会问了,既然初始化向量这么重要,那我们需要对它进行保密吗?其实,初始化向量并不需要保密,如果你对这一点有疑问,不妨换个角度想一想,每次分组运算的初始化向量都是上一次加密运算得到的密文分组,而密文分组又是可以公开的信息

三、异或运算

特性:

  1. 归零律:如果两段数据完全相同,它们的异或运算结果为 0
  2. 恒等律:如果一段数据和 0 进行异或运算,结果不变

正是异或运算的归零律和恒等律,CBC 模式才能成立,解密才能进行,这两个特性,还使得解密运算和加密运算具有相同的运算效率,然而,CBC 模式的主要安全问题,也来源于异或运算的这两个特性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值