900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 分组加密的常用工作模式(转载)

分组加密的常用工作模式(转载)

时间:2022-10-05 08:55:00

相关推荐

分组加密的常用工作模式(转载)

对称加密中的]组加密,也叫块加密,即将明文按一定的长度分组,每次加密明文中的一个分组,得到一个密文的分组,最后将密文分组合并成密文。解密时依次解密每个密文分组,得到对应的明文分组,再将分组合并还原成明文。

在分组加密算法中,有不同的分组与加解密模式,常用的有ECB,CBC,CFB,OFB,CTR这几种。如果我们开发的系统涉及到了分组加密,就有一个如何选择模式的问题,今天就介绍一下上述模式,帮助大家在应用时选择合适的模式。

1.ECB(Electronic Code Book)模式

ECB是最简单的工作模式,原理就是将明文分组,对每一组分别单独加密,加密后的每组密文之间没有联系。加密流程图如下:

解密流程如下:

ECB模式的优点就是计算简单,可以并行加解密。每个分组之间互相独立,某个分组加解密出错不会影响其他分组。但最大的问题就是它没有隐藏明文的统计学特征,同样的明文分组会加密得到同样的密文分组,攻击者可以利用这一弱点对加密行为进行破解。

2.CBC(Cipher Block Chaining)模式

这种模式的核心思想是每一个明文分组在被加密之前要与前一个的密文分组进行异或运算,即每一组的加密结果会参与下一个分组的加密,因此第一个分组加密需要有一个初始化向量(IV)参与。

加密流程图如下:

最后将每个密文分组按顺序合并起来就得到加密结果。解密是加密的逆运算,流程图如下:

CBC模式可以隐藏明文的统计学特征,即使相同的明文分组加密结果也不相同,所以安全性较高。但CBC加密不支持并行,只能一个一个分组串行加密。但解密时除了本组密文和密钥外,只需上一组密文参与,故可以并行计算。CBC存在误差传递,即某个分组加密结果出错,会影响以后分组的加密。CBC模式是分组加密中使用最多的模式。

注意,ECB和CBC模式要求每一分组都是固定的长度,所以很有可能存在最后一个分组需要补位(padding)的情况。所以在这种情况下解密后要把补位去掉,才能得到正确的明文。

3.CFB (Cipher Feedback)模式

这种工作模式吸收了流加密的特点,可以理解成实现了流加密的CBC 模式。这种模式的核心思想是基于前一个密文分组生成密码序列,再用这个密码序列与当前明文分组或密文分组异或,得到相应加密或解密结果。加密过程如下所示:

加密时,首先对初始化向量(IV)加密,用加密的结果与第一个明文分组异或,得到第一个密文分组;然后将此密文分组进行加密(加密前要进行移位处理),将加密结果与第二个明文分组异或,得到第二个密文分组;接下来对第二个密文分组加密……,以此类推,最后得到所有的密文分组。

解密过程与加密过程相似,仍然是将前一密文分组加密(注意,这里仍然是加密,不是解密),用加密结果与当前密文分组异或,得到明文。过程如下:

与CBC相似,CFB模式也隐藏了明文的统计学特征,有较高的安全性。因为采用流加密的模式,有利于加解密速度的提高。同时明文数据不需要补位。但CFB加密过程不能并行化,解密过程可以并行化;同样也存在误差传递。另外,由于依赖前一个密文分组,攻击者可以通过替换多个连续密文分组实现重放攻击。

4.OFB (Output Feedback)模式

OFB模式与CFB模式类似,区别在于使用上一个分组的密码序列加密生成当前分组的密码序列,加密过程如下:

解密过程如下:

OFB的优缺点和CFB也基本类似。不过由于加解密时每个分组都需要前一分组的密码序列,因此不能并行化处理。但由于密码序列只在最终的异或过程中使用,因此可以事先对IV连续进行加密,生成每一个分组所使用的密码序列,最后进行并行异或处理。这样可以进一步提高加解密运算的速度。另外,OFB不存在误差传递,即使某一分组密文出问题,也只会影响这一分组的解密。

5.CTR(Counter)模式

CTR模式与CFB、OFB模式为同一类。但它是通过将逐次累加的计数器进行加密来生成密码序列。也就是说,每一个的密文分组是通过将计数器加密得到的密码序列与明文分组进行异或而得到的。

加密:

解密:

这种模式下,每次加密时都会生成一个不同的值(nonce)来作为计数器的初始值。对于每一个分组计数器都会依次累加。

最后,将上述几种模式总结如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。