密码篇——分组密码

目录

分组密码介绍

模式:

分组密码的模式:

1)ECB(电子密码本模式)

2)CBC(密码分组链接模式)

3)CFB(密文反馈模式)

4)OFB(输出反馈模式)

5)CTR(计数器模式)


分组密码介绍

密码算法可分为:流密码与分组密码

流密码:对数据流进行连续处理的一类密码算法;一般以1比特、8比特、32比特为单位进行加密或解密,由于是对一连串数据流进行连续处理,因此需要保持内部状态

分组密码:每次只能处理特定长度的一块数据的密码算法(一块是指分组),一个分组的比特数称为分组长度;处理完一个分组就结束了,不需通过内部状态来记录加密的进度

 

模式:

分组密码只能加密固定长度的分组,需要加密的明文长度可能超过分组密码的分组长度,此时就需要对分组密码算法进行迭代,以便将长明文进行加密,迭代的方法就称为分组密码的模式

注:当需要加密的分组短于分组密码的长度时,需要在明文中添加相应长度的特定数据进行填充

 

分组密码的模式:

1)ECB(电子密码本模式)

将明文分组加密后结果直接成为密文分组

明文分组与密文分组是一一对应的关系;且每个明文分组各自独立地进行加密和解密

这种加密攻击者无需破译密码就能操纵明文

密码篇——分组密码_第1张图片

 

2)CBC(密码分组链接模式)

先将明文与前一个密文分组进行异或(XOR)运算,再进行加解密

初始化向量(IV):在加密第一个明文分组时,需要事先准备一个长度为一个分组的比特序列代替;每次加密时,都会随机产生一个不同的比特序列作为初始化向量

无法对单独一个中间的明文分组加密;对初始化向量没有加密

  1. 当CBC模式中的密文分组有一个分组损坏,只要密文分组的长度没有发生变化,解密时最多会有两个分组受到数据损坏的影响
  2. 当CBC的密文分组中有一些比特缺失了,导致密码分组的长度发生变化,此分组发生错位,在缺失比特位置之后的密文分组也就无法全部解密了

这种加密攻击者一般只能攻击初始化向量

密码篇——分组密码_第2张图片

 

3)CFB(密文反馈模式)

前一个密文分组会被送回到密码算法的输入端

密文分组与明文分组之间只有XOR(而CBC中,明文分组与密文分组之间有XOR和密码算法两个步骤)

CFB模式中有密码算法产生的比特序列成为密钥流(在CFB中密码算法相当于伪随机数生成器)

在CFB中分组密码算法在解密时仍执行加密操作(因为密钥流通过加密生成)

对CFB模式可实施重放攻击

密码篇——分组密码_第3张图片

 

4)OFB(输出反馈模式)

密码算法的输出会反馈到密码算法的输入中

并非通过密码算法加密明文分组的,而通过将明文分组和密码算法的输出进行XOR来产生密文分组(与CFB的区别在于密码算法的输入)

CFB是对密文分组进行反馈,必须按顺序进行加密;OFB是对密钥流进行加密(生成密钥流与XOR运算可以并行)

密码篇——分组密码_第4张图片

 

5)CTR(计数器模式)

通过将逐次累加的计数器进行加密来生成密钥流

每个分组对应一个逐次累加的计数器

每次加密都会生成一个不同的值(nonce)作为计数器的初始值,且在每次加密时都必须不同

在初始值之后为分组序列号,会逐次累加

在CTR中如果密文分组有1bit被反转,解密后的铭文中所对应的比特会被反转,该错误不会放大

密码篇——分组密码_第5张图片

 

 

 

你可能感兴趣的:(密码与认证,密码与认证)