为什么要有分组模式

我们知道像DES,3DES,AES这类的分组加密算法对明文的加密都是以分组为基础,DES和3DES加密的分组长度都是64比特,AES加密的分组长度都是128比特。那么我们是否有考虑过一个问题,假设我们使用AES对明文进行加密,然后我们现在正在传递一个文件,因为使用AES对明文进行加密,所以该文件将会被拆分成多个分组然后被AES加密之后再进行传输,那么毫无疑问该文件将会存在十分多的128比特的分组,假如在128比特的范围内的信息是一小段话,比如这一小段话是“我觉得那个”,我们知道“我觉得那个”这句话我们知道在一个文章中有的时候还是十分的常见的,假设这句话被加密后的密文是“xxxxxxx”,我们如果是一个中间人假如获取到这其发送的文件,然后我们在密文中看到非常多的“xxxxxxx”,假设中间人破译了“xxxxxxx”这段密文,那么文章中的多处就会被一一破译出来,这就是为什么要有分组模式的原因,单纯的将明文分组然后进行加密传输的缺点已经暴露出来了,中间人只要破译了重复的一块,就可以很容易破译出其他重复的内容。而且如果有的时候某段信息将会出现大量的固定格式,比如“小王给小黑100块”,“小黑给小王100块”,假设这两段信息密文为“ABCDE”,“CBADE”,其中A代表小王,B代表给,C代表小黑,D代表100,E代表块,中间人只要将密文中的部分进行位置的替换就可以起到信息的误导,比如将这两段话的密文改为”ABCDE,ABCDE”,那么翻译成明文就都是“小王给小黑100块,小王给小黑100块”,这样小黑就赚了200块。

ECB分组模式

这种分组模式就是上面说的单纯的分组加密然后传输的模式,安全性低,不能使用

aes256分块大小 aes分组长度_安全

CBC分组模式

这种分组模式推荐用

aes256分块大小 aes分组长度_分组长度_02

先使用一个初始向量,这个是一个伪随机生成器生成出来的随机数,它和明文进行异或运算,然后进行再进行加密并得到密文分组,该过程加密后的结果作为下一轮加密的初始向量。

CRT分组模式

CRT也是推荐使用的

aes256分块大小 aes分组长度_网络协议_03

从图中我们看到它是如何切断分组与分组之间的联系的,使用一个不断递增的计数器中产生的值加使用对称密钥加密之后然后与明文进行异或运算,最终生成密文分组。

分组模式的选择

aes256分块大小 aes分组长度_https_04

其实还有很多的分组模式,但是最后大家如果要使用的分组模式的选择有两个,一个是CBC,另一个就是CTR,可以从上图中看到CTR的诸多优点。