什么是分组加密算法的CBC模式(密码分组链接模式)?

2023年2月27日10:38:10什么是分组加密算法的CBC模式(密码分组链接模式)?已关闭评论

分组加密算法又称块加密算法,就是一组一组进行加解密。它将明文分成多个等长的块(block,或称分组),使用确定的算法和对称密钥对每组分别进行加解密。通俗地讲,就是一组一组地进行加解密,而且每组数据长度相同。

有人或许会想,既然是一组一组加解密的,那么程序是否可以设计成并行加解密?比如在多核计算机上开n个线程,同时对n个分组同时进行加解密。这个想法不完全正确,因为分组和分组之间可能存在关联,这就引出了分组算法的工作模式概念。分组算法的工作模式就是用来确定分组之间是否有关联以及如何关联的问题。不同的工作模式(也称加密模式)使得每个加密区块(分组)之间的关系不同。

初始向量(IV,initialization vector;或SV,starting variable)也称初向量,是一个固定长度的比特串。一般使用上会要求它是随机数或伪随机数(pseudorandom)。使用随机数产生的初始向量使得同一个密钥加密的结果每次都不同,这样攻击者难以对同一把密钥的密文进行破解。

CBC模式由IBM于1976年发明。加密时,第一个明文块和初始向量(IV)进行异或后,再用key进行加密,以后每个明文块与前一个分组结果(密文)块进行异或,再用key进行加密。解密时,第一个密文块先用key解密,得到的中间结果再与初始向量(IV)进行异或得到第一个明文分组(第一个分组的最终明文结果),后面每个密文块也是先用key解密,得到的中间结果再与前一个密文分组(注意是解密之前的密文分组),进行异或后得到本次明文分组。在这种方法中,每个分组的结果都依赖于它前面的分组。同时,第一个分组也依赖于IV,IV的长度和分组相同。需要注意的是,加密时的IV和解密时的IV必须相同。

CBC模式需要初始化向量IV(长度与分组大小相同),参与计算第一组密文,第一组密文当作向量与第二组数据一起计算后再进行加密以产生第二组密文,后面以此类推(参见图3-5)。

CBC是最常用的工作模式,主要缺点在于加密过程是串行的,无法被并行化(因为后一个运算要等到前一个运算的结果后才能开始)。另外,明文中的微小改变会导致其后的全部密文块发生改变,这是其又一个缺点:加密时可能会有误差传递。

什么是分组加密算法的CBC模式(密码分组链接模式)?

图3-5

在解密时,因为是把前一个密文分组作为当前向量,不必等前一个分组运算完毕,所以解密时可以并行化。解密时,密文中一位的改变只会导致其对应的明文块发生改变和下一个明文块中对应位(因为是异或运算)发生改变,不会影响到其他明文的内容,所以解密时不会误差传递。

该模式的特点是:明文的重复排列不会反映在密文中;只有解密过程可以并行计算,加密过程需要前一个密文组,无法进行并行计算;够解密任意密文分组;对包含某些错误bite的密文进行揭秘,第一个分组的全部bite(“全部”是由于密文参与了解密算法)和后一个分组的相应bite会出错(“相应”是由于出错的密文在后一组中只参与了XOR运算);填充提示攻击。

 

  • A+
所属分类:JAVA
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。