分组密码的运行模式

分组密码在加密时,明文分组的长度是固定的,而实际应用中待加密消息的数据量是不定的,数据格式多种多样

1) 为了能在各种应用场合使用DS,美国在FIPS PUS 74和81中定义了DES的4种运行模式ECB,CBC,CFB,OFB

2) FIPS PUB140-2推荐了AES的另外一种运行模式:CTR

 

ECB (electronic codebook)模式

最简单的运行模式,首先将明文分为64比特(调用的分组密码算法的分组长度)的明文块,它一次对一个64比特长的明文分组加密,每次的加密密钥都相同.

特点:

如果明文长于64比特,首先将其分为长为64比特的分组;若最后一个分组如果不够64比特,则需要填充.

明文加密过程和解密过程分别调用加密算法和解密算法.

不需要额外的初始向量.

密文块可以分别独立解密,无顺序要求.

密钥相同时,明文中相同的64比特分组产生相同的64比特密文块.

不存在错误传播,一块密文传送错误只导致对应明文解密错误.(错误的块不会影响其他正确的块)

主要用于发送少数量的分组数据.(大量数据会被统计攻击)

 

CBC (cipher block chaining)模式

首先对明文分组,它一次对一个明文分组加密,加密算法的输入是当前明文分组和前一次密文分组的异或.(多了个链条)

 

 

注:在产生第1个密文分组时,需要有一个初始向量IV与第1个明文分组异或.解密时,V和解密算法对第1个密文分组的输出进行异或以恢复第1个明文分组.IV对于收发双方都应是已知的,为使安全性最高,IV应像密钥一样被保护(可使用ECB加密模式来发送IV)如果敌手能欺骗接收方使用不同的IV值,则接收方收到的P1中相应的比特也发生了变化.

 

特点:

如果消息长于64比特,首先将其分为长为6比特的分组,最后一个分组如果不够64比特,则需要填充.

明文加密过程和解密过程分别调用加密算法和解密算法.

需要额外的初始向量,若初始向量公开,攻击者可以通过纂改,使第1块明文解密错误.

密文块需按顺序逐一解密.

密钥相同时,明文中相同的64比特分组产生不相同的64比特密文块.(不好用统计分析的方法来攻击)

存在错误传播,一块密文传输错误会导致块密文解密失败.

 

CFB (cipher feedback)模式

设传送的每个单元(如一个字符)是j比特,0<j64长,通常取j=8

加密时,设加密算法的输入是64比特移位存器,其初值为某个初始向量IV.加密算法输出的最左(最高有效位)j比特与明文的第一个单元P进行异或,产生出密文的第1个单元C1.传送该单元并将输入寄存器的内容左移j位,用C1补齐最右边(最低有效位)j位.这一过程继续到明文的所有单元都被加密为止.

解密时,将加密算法输出的最左(最高有效位)j比特与密文的相应单元异或,产生明文.反馈到输入寄存器的值为密文单元.

特点:

消息被看作bit流,无须分组填充;适合数据以比特或字节为单位出现标准允许反馈任意比特(1,8or64 or whatever)记作CFB-1,CFB-8,CFB-64.

只使用DES加密算法,且所有加密都使用同一密钥.

需要额外的初始向量,若初始向量公开,攻击者可以通过篡改,使前几块(与错误比特几次移出寄存器有关)明文解密错误.

密文块需按顺序逐一解密.

密钥相同时,明文中相同的64比特分组产生不相同的64比特密文块.

存在错误传播(只传播后面的几块).

 

OFB (output feedback)模式

类似于CFB,不同之处在于OFB模式是将加密算法的输出反馈到移位寄存器,而CFB模式中是将密文单元反馈到移位寄存器.

特点:

消息被看作比特流,无须分组填充.

只使用DES加密算法,且所有加密都使用同一密钥.

需要额外的初始向量,若初始向量公开,攻击者可以通过篡改,使所有明文解密错误.

密钥流可以在已知消息之前计算,不需要按顺序解密.

密钥相同时,明文中相同的64比特分组产生不相同的64比特密文块.

不存在比特错误传播.

发送者和接收者必须保持同步.

 

 

块模式:ECB CBC

流模式:CFB OFB CTR

posted @ 2020-04-30 20:53  SjYu  阅读(767)  评论(0编辑  收藏  举报