首页 > 其他分享 >加解密模式之CBC模式和ECB模式解读

加解密模式之CBC模式和ECB模式解读

时间:2022-10-08 10:13:20浏览次数:47  
标签:CBC 加密 加解密 模式 明文 分组 密文

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

在CBC模式中,首先将明文分组和一个密文分组进行异或(XOR)运算,然后再进行加密。在这种方法中,每个密文块都依赖与它前边的所有明文块。

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

 

优点:同样的原文生成的密文不一样。
缺点:串行处理数据,使得加密速度很慢。
2. ECB模式
ECB模式的全称:Electronic codebook, 即电子密码本。需要加密的消息按照块密码的块大小被分为数个块,并对每个块进行独立加密。

ECB模式的加密过程如下:

 

优点:ECB模块可以并行处理数据
缺点:同样原文生成同样的密文,并不能很好地保护数据。
同时加密,如果原文一样,加密出来的密文也是一样的,因为它们的加密密钥key都是一样的。
比较一下ECB模式与CBC模式的区别:

 

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

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

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

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

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

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

 

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

 

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

 

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

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

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

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

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

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

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

8. CBC模式应用
确保互联网安全的通信协议之一SSL/TLS,就是使用CBC模式来确保通信机密性的,如使用CBC模式三重DES的3DES_EDE_CBC以及CBC模式256比特AES的AES_256_CBC等。
————————————————
版权声明:本文为CSDN博主「洒家肉山大魔王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27706119/article/details/119985480

标签:CBC,加密,加解密,模式,明文,分组,密文
From: https://www.cnblogs.com/chinasoft/p/16768096.html

相关文章

  • MVC模式与三层架构
    MVC模式  三层架构   MVC模式与三层架构的关系   ......
  • VMware的三种网络模式
    VMware的三种网络模式系统集成项目专家阿祥 2022-09-2610:39 发表于河南 以下文章来源于网络技术平台 ,作者弗克斯网络技术平台.混迹网络行业10余年,现为世......
  • Windows11右键菜单修改为Win10模式的方法
    Windows11右键菜单修改为Win10模式的方法自述:更新win11后看着鼠标右键的菜单有些不太舒服,索性就改回了win10的右键菜单的样式,下面开始进行操作第一步首先以管理员......
  • 12第四章:【01】设计模式概述
    一、设计模式介绍设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式(Designpattern)代表了最佳的实......
  • 使用 PostCSS 插件让你的网站支持暗黑模式
    最近公司需要给多个webapp(大概20+)加上多皮肤的功能,原先默认是白色皮肤,我们先从暗黑模式入手,从而逐渐实现多皮肤功能。本篇记录下实现思路。换肤方案cssvariablescssvaria......
  • 结构型模式
    运动员代言-代理模式/***@ClassnameIRunner*@Createdby寂然*@Description抽象运动员*/publicinterfaceIRunner{//主要工作就是跑步publicvoidrun();}/***@Cl......
  • tauri 新的桌面应用开发模式
    tauri是基于rust以及webkit开发桌面应用的框架特性高性能构建的软件包小安全跨平台githubaction集成核心能力(文件系统文档,原生通知)自更新sidecar(可以集成其他二进制......
  • KAL1 LINUX 官方文档之虚拟机版本 --- 安装 Hyper-V 增强会话模式(来宾工具)(更新于2022
     安装“GuestVMPackages”,总体上可以为​​VM提供更好的用户体验。这就是为什么从KaliLinux2019.3开始,在设置过程中它应该检测KaliLinux是否在VM中。如果是......
  • 设计模式系列2 - 工厂模式
     主要讲述工厂模式,以及实际应用的场景,基于java。看这篇文章前,最好能先看完上一篇文章“设计模式系列1”,因为知识有依赖关系。往期精选(欢迎转发~~)Java全套学习资......
  • 设计模式系列3 - builder模式
    主要讲解建造者builder模式和实际应用的场景,基于java。往期精选(欢迎转发~~)Java全套学习资料(14W字),耗时半年整理消息队列:从选型到原理,一文带你全部掌握肝了一个月的ET......