分组密码
1、前置知识
DES和AES都属于分组密码,但是他们只能加密固定长度的明文,如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方法就称为分组密码的模式。
2、分组密码的主要模式
ECB(电子密码本模式)、CBC(密码分组链接模式)、CFB(密文反馈模式)、OFB(输出反馈模式)、CTR(计数器模式)
3、分组密码
分组密码是每次只能处理特定长度的一块数据的一类密码算法。一个分组的比特数称为分组长度。DES、3DES的分组长度都是64比特,这些算法一次只能加密64比特的明文,生成64比特的密文。AES的分组长度为128比特。
4、流密码
流密码是对数据进行连续处理的一类密码算法,流密码一般以1比特,8比特或者32比特为单位进行加密解密。
分组密码处理完一个分组就结束,不需要记录内部的状态,流密码是对一串数据流进行连续处理,因此需要保持内部状态。
从第三章我们可以知道,一次性密码本属于流密码,DES、3DES、AES等大多数对称密码都属于分组密码。
5、ECB模式
将明文分割成若干个分组并进行逐个加密的方法称为ECB模式,ECB模式会在不经意间产生安全漏斗,不建议使用ECB模式。ECB模式的加解密如下图所示:
当最后一个明文分组的内容小于分组长度的时候,需要一些数据来进行填充。
ECB模式的缺点:
攻击者不需要破解密文就能够操作明文。如下面的例子:
6、CBC(密文分组链接模式)模式
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。CBC模式加解密如下图所示:
CBC模式的特点:
CBC模式中只要有一个密文分组中有一些比特缺失,会导致密文分组的长度发生变化,缺失比特的位置之后的密文分组也就全部无法进行解密。
7、CFB(密文反馈模式)
CFB模式的加解密如下图所示:
8、OFB(输出反馈模式)模式
9、CTR(计数器模式)模式
CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。CTR加解密如下图所示:
CTR模式与OFB模式都属于流密码。
10、分组模式比较表