分组密码加密的几种模式

来源:互联网 发布:java帮助文档下载 编辑:程序博客网 时间:2024/05/22 05:09

本文主要参考自博文分组密码的几种模式。另外,还可参考另一篇。

  介绍最详细的是维基百科条目块密码的工作模式,非常值得推荐。

  电子密码本(Electronic Code Book,ECB)
  密码块链接(Cipher Block Chaining,CBC)
  密码反馈(Cipher Feedback,CFB)
  输出反馈(Output Feedback,OFB)
  填充密码块链接(Propagating cipher-block chaining, PCBC)

  分组密码有不同的加密和解密机制。最简单的加密方式就是一个明文数据块加密成一个密文数据块,下一个明文数据块加密成下一个密文数据块,以此类推。这就是电子密码本(ECB)模式。图5-5说明了电子密码本(ECB)模式。


  虽然简单,但ECB模式不能为模式识别的密码分析提供保护。这就意味着如果明文中含有两个相同的数据块,则密文中必然会有两个相同的数据块。当我们进行密码分析的时候,一个常用到的技术就是识别和确定密文中存在的模式。一旦模式被确定了,那就很容易推断出使用了ECB加密,这样攻击者只需瞄准解决特定的密文数据块即可,而不必解密整个密文。

  为了解决这个问题,我们介绍一下分组密码的其他几种形式:(1)密码分组链接(CBC);(2)填充密码分组链接(PCBC);(3)密码反馈(CFB);(4)输出反馈(OFB)。本节我只介绍加密方法(把加密的步骤反向就可以得到解密方法)。

  密码分组链接(CBC):如图5-6所示的CBC使用了初始化向量(IV)和第一组明文进行异或操作,然后加密,加密后的密文与下一组明文进行异或操作,以此类推。这种方式保证了每组密文依赖于它前面所有的明文。


  填充密码分组链接(PCBC):如图5-7所示的PCBC与前面讲述的CBC非常相似。它们的不同在于,在PCBC中,不仅仅只有初始化向量(IV)与第一组明文进行异或,以及密文与下一组明文进行异或操作,而且还包含初始化向量与第一组密文进行异或操作,以及这个结果与下一组的明文进行异或操作。这种设计方式导致密文中任何一个微小的修改都会导致加密和解密流程发生很大的改变。

 

  密码反馈(CFB):如图5-8所示的CFB与CBC相比,初始化向量(IV)和明文颠倒了一下位置。因此与CBC不同,CFB不会先进行初始化向量和第一组明文的异或操作后进行加密,然后密文与下一组明文再进行异或后加密操作,而是它会首先对初始化向量进行加密,然后由加密后的初始化向量与明文进行异或操作生成密文,接着再对这个密文进行加密,然后与下一组明文进行异或操作。


  输出反馈(OFB):如图5-9所示的OFB与CFB非常相似。它们的不同在于加密后的初始化向量没有与明文进行异或操作。事实上对于第一组明文,初始化向量加密以后作为第二组明文的输入并且再与第一组明文进行异或操作。后续的加密操作都发生在异或之前。



本文转载自分组密码的几种模式


原创粉丝点击