分组密码的模式

(一)介绍

密码算法可以分为分组密码和流密码两种。
分组密码是每次只能处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组( block )。此外,一个分组的比特数就称为分组长度( block length )。
例如,DES和三重DES的分组长度都是64比特。这些密码算法一次只能加密64比特的明文.并生成64比特的密文。AES的分组长度可以从128比特、192比特和256比特中进行选择。当选择128比特的分组长度时,AES 一次可加密128比特的明文,并生成128比特的密文。

流密码( stream cipher )是对数据流进行连续处理的一类密码算法。流密码中一般以1比特、8比特或32比特等为单位进行加密和解密。
分组密码处理完一个分组就结束了,因此不需要通过内部状态来记录加密的进度;相对地,流密码是对一串数据流进行连续处理,因此需要保持内部状态。

模式
分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密而迭代的方法就称为分组密码的模式( mode )。

ECB模式
ECB模式的全称是Electronic CodeBook模式。在ECB模式中,将明文分组加密之后的结果将直接成为密文分组
在这里插入图片描述
使用ECB模式加密时,相同的明文分组会被转换为相同的密文分组,也就是说,我们可以将其理解为是一个巨大的“明文分组→密文分组”的对应表,因此ECB模式也称为电子密码本模式。当最后一个明文分组的内容小于分组长度时,需要用一些特定的数据进行填充( padding )

分析
1:在ECB模式中,明文分组和密文分组是一一对应的关系,如果存在相同的明文,那么这些明文也将被转换为相同的密文分组,这个是存在一定风险的

2:每个明文分组都可以各自独立进行加密和解密

3:攻击者可以操作(改变顺序,删除分组,复制分组)分组,无需破解内容而通过改变分组发送顺序就可以改变明文原内容

(二)CBC模式

介绍
CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点。CBC模式的全称是密文分组链接模式,在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密

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

分析
攻击者可以对初始化向量进行攻击,但是想要对密文分组也进行同样的攻击就非常困难了。例如,如果 Mallory将密文分组1中的某个比特进行了反转,则明文分组2中相应的比特也会被反转,然而这1比特的变化却会对解密后的明文分组1中的多个比特造成影响。也就是说,只让明文分组1中Mallory所期望的特定比特发生变化是很困难的。

(三)CFB模式

介绍
CFB模式的全称是密文反馈模式。在CFB模式中,前一个密文分组会被送回到密码算法的输入端。所谓反馈就是指返回输入端的意思

在CBC模式中,明文分组和密文分组之间有XOR和密码算法两个步骤,而在CFB模式中,明文分组和密文分组之间则只有XOR。

在这里插入图片描述

初始化向量,在生成第一个密文分组时,由于不存在前一个输出的数据,因此需要使用初始化向量( IV)来代替,这一点和CBC模式是相同的。一般来说,我们需要在每次加密时生成一个不同的随机比特序列用作初始化向量。

分析
对CFB模式可以实施重放攻击( replay attack )。
有一天,Alice向 Bob发送了一条消息,这条消息由4个密文分组组成。主动攻击者Mallory将该消息中的后3个密文分组保存了下来。转天,Alice又向Bob发送了内容不同的4个密文分组(我们假设Alice使用了相同的密钥)。Mallory用昨天保存下来的3个密文分组将今天发送的后3个密文分组进行了替换。
于是,当Bob解密时,4个分组中就只有第1个可以解密成正确的明文分组,第2个会出错,而第3个和第4个则变成了被Mallory替换的内容(也就是昨天发送的明文内容)。Mallory没有破解密码,就成功地将以前的电文混入了新电文中。而第2个分组出错到底是通信错误呢,还是被人攻击所造成的呢?Bob是无法做出判断的。

(四)OFB模式

介绍
OFB模式全称是输出反馈模式,在OFB模式中,密码算法的输出会反馈到密码算法的输入中。OFB模式并不是通过密码算法对明文直接加密的,而是通过将明文分组和密码算法的输出进行XOR来产生密文分组的。

加解密过程
在这里插入图片描述

(五)CTR模式

介绍
CTR模式的全称是计数器模式。CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。CTR模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成秘钥流。最终的密文分组是通过将计数器加密得到的比特序列,与明文分组进行XOR而得到的。

在这里插入图片描述

(六)分组模式总结

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZWZhangYu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值