图解密码技术——第四章 分组密码的模式

一、分组密码和流密码

1.分组密码

每次只能处理特定长度的一块数据的一类密码算法。这里的一块称为分组,一个分组的比特数就称为分组长度。例:DES和三重DES的分组长度就是64比特,这些密码算法每次只能加密64比特的明文。AES的分组长度一般为128比特、192比特和256比特。

2.流密码

是对数据流进行连续处理的一类密码算法。流密码一般以1比特、8比特或32比特等为单位进行加密或解密。

分组密码处理完一个分组就结束,因此不需要通过内部状态来记录加密的进度;相对的,流密码是对一串数据流进行连续处理,因此需要保持内部状态

在第三章介绍的算法中,只有一次性密码本属于流密码,其他的都是分组密码。

二、分组密码的模式

1.模式:

对分组密码算法进行迭代的方式称为分组密码的模式

Q:为什么要进行迭代,不能使用多个分组进行加密吗?

将明文分为多个分组进行加密的方法叫做ECB模式。事实上,这种模式有很大的弊端,稍后讲解。

2.分组密码的主要模式:

  • ECB模式:Electronic CodeBook mode(电子密码本模式)
  • CBC模式:Cipher Block Chaining mode(密码分组链接模式)
  • CFB模式:Cipher FeedBack mode(密文反馈模式)
  • OFB模式:Output FeedBack mode(输出反馈模式)
  • CTR模式:CounTeR mode(计数器模式)

3.明文分组和密文分组

明文分组:分组密码算法中作为加密对象的明文明文分组的长度与分组密码算法的分组长度是相等的。

密文分组:使用分组密码算法将明文分组加密之后所生成的密文。

4.主动攻击者Mallory

主动攻击者可以主动介入发送者和接受者之间的通信过程,进行阻碍通信或者是篡改密文等活动。,这样的攻击者一般称为Mallory.

5.ECB

5.1 定义

EBC是将明文分组直接加密的方式。在ECB模式中,明文分组加密后的结果就是密文分组。

由上图,可以将ECB理解为“明文分组——密文分组”的对应表,因此ECB模式也称为电子密码本模式。当最后一个明文分组的内容小于分组长度是,需要用一些特定的数据进行填充

5.2 EBC模式的特点

EBC模式是所有模式中最简单的一种,EBC模式中,明文分组和密文分组一一对应,如果有部分密文重复多次出现,就可以知道明文中存在的重复组合,并以此为线索来破译密码,因此ECB模式是存在一定风险的。

5.3 EBC模式的攻击

EBC模式中,明文分组可以进行独立的加密和解密,这是一个很大的弱点。在这种情况下,

如果存在主动攻击者Mallory,只要知道每个分组记录了什么数据就可以进行篡改,如:改变分组顺序、删除分组、替换、复制等。也就是说,攻击者无需破译密码就能操纵明文

Mallory对密文的篡改,可以通过消息认证码检测出来。不过,如果使用除EBC之外的其他模式,那么上述攻击从一开始就是不可能实现的。

6.CBC模式

6.1 定义

将一个明文分组和前一个密文分组XOR运算后进行加密

6.2 初始化向量

第一个明文分组前没有密文分组,因此需要一个比特序列代替密文分组,这个比特序列称为初始化向量,通常缩写为IV。一般来说,每次加密前都会产生一个随机的比特系列作为初始化向量。

Q1:如果每次的初始化向量相同,破译线索?

6.3 CBC模式的特点

1.解决EBC模式的缺陷。因为后一个明文分组要对前一个密文分组进行XOR,所以即使明文分组1与明文分组2相同,密文分组1、2的值也不同。

2.无法单独对中间的一个明文分组进行加密。

3.假设有一个密文分组损坏(由于硬盘故障导致密文分组的值发生变化),若密文分组的长度没有变化,最多只有两个分组的数据被破坏(图4-5);若密文分组的长度发生变化,缺失比特的分组之后的密文无法解密(XOR的特点)(图4-6)

Q1:为什么两种方式结果不同?

受缺失的影响,在对接收到的密文进行分组时,因为不知道哪里缺失,所以会按照特定的比特进行分组,导致缺失比特的分组后的分组的比特都往前移一位,即密文分组发生错误,由于XOR运算的特点,明文分组也会发生错误。

Q:第二个分组比特缺失,密文3、4为什么不能解密?

6.4 CBC模式的攻击

假设Mallory通过修改密文来操纵解密后的明文,有两种方式:

1.对初始化向量中的任意比特进行反转,那么,明文分组中相应的比特也会被反转。

2.对密文分组进行攻击,但是这比较困难,而且难以控制特定的比特,相比于第一种方法,会引起明文分组1和密文分组2的比特变化。

可以通过消息认证码,判断数据有没有被篡改。

6.5 CBC的使用案例

确保互联网安全的通信协议之一IPsec,就是使用CBC模式来确保通信机密性的,如使用CBC模式sanchongDES的3DES-CBC以及CBC模式AES的AES的AES-CBC等。

此外,CBC模式还被用于一种叫做Kerberos version 5的认证系统中。

7.CFB模式

7.1介绍

CFB模式全称是Cipher FeedBack(密文反馈模式)。在CFB模式中,前一个密文分组会被送到密码算法的输入端。与CBC模式相比,明文分组和密文分组之间只有一个XOR运算。

密码算法的输入是前一个密文分组,也就是说,将密文分组反馈到密码算法中,所以有“密文反馈模式”

7.2 CFB密码和流密码

CFB模式与一次性密码本相似。

  • 两者都运用了XOR运算实现加密。CFB模式通过密文分组与密码算法的输出进行XOR运算来生成密文分组。一次性密码本通过明文与随机比特序列进行XOR运算来生成密文。
  • 密码算法的输出相当于一次性密码本中的随机比特序列。由于密码算法的输出并不是真正的随机数,所以CFB模式不具备不可破译的特点。

CFB模式中由密码算法生成的比特序列称为密钥流。密码算法就相当于生成密钥流的为随机数生成器,而初始化向量就相当于伪随机数生成器的种子。在CFB模式中,明文数据可以被逐比特加密,所以我们可以将CFB模式看做是一种使用分组密码来实现流密码的方式。

7.3 对CFB模式的攻击

对CFB可以实施重放攻击

8.OFB模式

8.1 介绍

全称是Output-Feedback模式)(输出反馈模式)。在OFB模式中,密码算法的输入是密码算法的前一个输出,密码算法的输出会反馈到密码算法的输入中。

8.2 CFB模式和OFB模式的对比

两者的区别仅限于密码算法的输入。

CFB模式是对密文分组进行反馈的,因此必须从第一个密文分按顺序进行加密。

OFB模式中参与XOR运算的密钥流可以直接通过密码算法计算,与明文分组和密文分组均无关,所以可以直接通过密码算法计算密钥流,然后进行XOR运算。和AES等密码算法相比,XOR运算的速度相当快,所以只要得到密钥流,就可以快速加密。换个角度来看,生成密钥流的操作可以喝XOR运算同时进行。

9.CTR模式

9.1 介绍

全称是CounTeR(计数器模式)。CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码

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

9.2 计数器的生成方法

每次加密时都会生成一个不同的值(nouce)来作为计数器的初始值。当分组长度为128比特(16字节)时,计数器的初始值可能是向下面这种形式:

其中前8个字节为nouce,这个值在每次使用时(指发1个消息,每个消息有几个明文分组,在同一个消息的不同明文分组加密时,nouce是相同的)必须是不同的;后8个字节为分组序号,这个部分会逐次累加。在加密过程中,计数器的值会发生如此变化:

按照上述生成方法,可以保证计数器的值每次都不同。因此,每个分组中奖计数器进项加密所得到密钥流也是不同的。也就是说,这种方法就是用分组密码来模拟生成随机的比特序列。

9.3 OFB模式与CTR模式的对比

1.两者都属于流密码

2.OFB模式将加密的输出反馈到输入,而CTR模式是将计数器的值用作输入。

9.4 CTR模式的特点

1.CTR模式加密和解密的结构一样,程序上容易实现

2.可以以任意顺序对分组进行加密和解密,在加密和解密是需要用到的计数器可以通过nouce和分组序号直接计算出来。

Q2:OFB模式并不具备这一点?

CTR(计数器模式)和OFB(输出反馈模式)都是分组密码的模式,但它们的工作原理和特点有所不同。

CTR模式中,加密和解密可以以任意顺序对分组进行,因为每个分组都有独立的计数器值。这意味着在加密和解密过程中,不需要按照特定的顺序处理分组。计数器值通常是通过将nonce(随机数)和分组序号组合而生成的。

OFB模式中,前一个分组的加密输出被用作下一个分组的输入。这意味着在OFB模式中,加密和解密必须按照相同的顺序进行,因为每个分组的加密输出依赖于前一个分组的加密输出。

因此,CTR模式允许以任意顺序对分组进行加密和解密,而OFB模式则需要按照特定的顺序进行。

3.可以并行实现。在支持并行计算的系统中,CTR模式的速度是非常快的。

9.5 错误与机密性

1.攻击:反转密文分组中一个比特,明文分组对应的比特也会被反转。

2.在OFB模式中,如果对密钥流的一个分组进行加密后其结果碰巧和加密前相同,那么这一分组之后的密钥流就会变成同一只的不断反复。在CTR模式中就不存在这一问题。

Q3:一个分组进行加密后其结果碰巧和加密前相同,什么时候有这种情况?

如果随机数序列中的某个值与明文分组相同时,就会出现加密后的结果与加密前相同的情况。

10.应该使用那种模式?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值