分组密码的模式之 CFB模式
CFB模式
CFB模式的全称是Cipher FeedBack (密文反馈模式)。在CFB模式中,前一个密文分组会被送回密码算法的输入端。所谓反馈,这里指的就是返回输入端的意思。

CFB模式中,明文分组并没有通过密码算法直接进行加密。明文分组和密文分组之间并没有经过“加密”这一步骤。在CFB模式中,明文分组和密文分组之间只有一个XOR。
初始化向量
在生成第一个密文分组时,由于不存在前一个输出的数据,因此需要使用初始化向量来替代,这一个点和CBC模式相同的。一般来说,我们需要在每次加密时生成一个不同的随机比特序列用作初始化向量。
CFB模式与流密码
其实CFB模式模式的结构与我们前面介绍的一次性密码本非常相似的。一次性密码本是通过将“明文”与“随机比特序列”进行XOR运算生成“密文”的。而CFB模式则是通过将“明文分组”与“密码算法的输出”进行XOR运算来生成“密文分组”的。在通过XOR来进行加密这一点,两者是非常相似的。
在CFB模式中,密码算法的输出相当于一次性密码本中的随机比特序列。由于密码算法的输出是通过计算得到的,并不是真正的随机数,因此CFB模式不可能像一次性密码本那样具备理论上不可破译的性质。
CFB模式模式中由密码算法所生产的比特序列称为密钥流 。在CFB模式中,密码算法就相当于用来生成密钥流的伪随机数生成器,而初始化向量就相当于味素技术生成器的“种子”。
在CFB模式中,明文数据可以被逐比特加密,因此我们可以将CFB模式看作是一种使用分组密码来实现流密码的方式。
CFB模式解密
CFB模式解密过程,上图已经展示,CFB模式解密时,需要注意的是分组密码算法依然执行加密操作,因为密钥流是通过加密操作来生成的。
对CFB模式的攻击
有一天,Alice向Bob发送了一条消息,这两条消息是由4个密文分组组成的。主动攻击者Mallory将该消息中额后3个密文分组保存了下来。转天,Alice又向Bob发送了内容不同的4个密文分组(我们假设使用了相同的密钥)。Mallory用昨天保存下来的3个密文分组将今天发送的后3个密文分组进行了替换。
于是,在Bob解密时,4个分组中就只有第1个可以解密成正确的明文,第2个会出错,,而第3和第4个则变成了Mallory替换的内容(也就是昨天发送的明文的内容)。Mallory没有破解密码,就成功地将以前的的电文混入了新的电文中。而第2个分组出错到底是通信错误,还是被人攻击所造成?Bob是无法做出判断的。

该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原著
网友评论