对称加密分组

1、对称加密存在的问题

(1)当需要加密的明文长度超过分组长度是,如何加密
(2)用对称加密进行通信时,还会出现密钥的配送问题,即如何将密钥安全地发送给接收者

2、五组分组模式

(1)为什么分组

    被加密的数据可能很大,需要对数据进行迭代的加密,所以用对数据进行分组。

(2)明文分组与密文分组

在这里插入图片描述
    密文分组的长度与明文分组一致

(3)具体分组方式

1)ECB:Electronic Coding Book,电子密码本模式(已经不使用了)
2)CBC:Cypher Block Chaining,密文分组链接模式(常用的)
3)CFB:Cypher FeedBack,密文反馈模式(不建议使用,建议使用CTR)
4)OFB:Output FeedBack,输出反馈模式(不建议使用,建议使用CTR)
5)CTR:Count ,计数器模式(常用的)
在这里插入图片描述

(4)ECB模式

    ECB模式是最简单的加密模式,明文消息被分成固定大小的快(分组),饼并且每个块被单独加密。每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,但是这种方法一旦有个块被破解,使用相同的方法可以解密所以的明文数据。
特点
    1)效率高
    2)安全性比较差
    3)适用于数据较少的情形,加密前需要把明文数据填充到块大小的整数倍
    4)分组大小需要根据加密算法确定。
在这里插入图片描述
在这里插入图片描述

(5)CBC模式(先异或,再加密)

基础补充
    异或操作(XOR):规则为相同为0,不同为1
在这里插入图片描述
异或加密(加解密的算法相同)
    利用对一组数据进行两次异或操作,回到最初的状态。
CBC模式
    CBC模式中每一个分组要先和前一个分组加密后的数据进行异或操作,然后再进行加密。这样每个密文块依赖该块之前的所有明文块,为了保持每条消息都具有唯一性,第一个数据块进行加密之前需要用初始向量进行异或操作。CBC模式是一种最常用的加密模式,它主要的确定是加密是连续的,不能进行并行处理,并且与ECB一样消息块必须填充到块大小的整数倍。
在这里插入图片描述
特点
    1)数据分组根据算法而定;
    2)需要提供初始化向量,要求长度必须与分组长度相同
    3)每一个密文都是下一次加密操作的输入
    4)不能进行并行加密,可以进行并行解密
    5)加密强度高
    6)如果数据切割之后不满足需求,需要对数据进行填充
ECB与CBC模式的比较
在这里插入图片描述

(6)CFB模式(先加密在异或)

    CFB模式中,前一个分组的密文加密后和当前分组的明文XOR异或操纵生产当前分组的密文。
    所谓反馈,这里指的就是返回输入端的意思,及前一个密文分组会被送回到密码算法的输入端。
    CFB模式的解密和CBC模式的加密在流程上其实是非常相似的
在这里插入图片描述
在这里插入图片描述
CBC模式与CFB模式比较
在这里插入图片描述
    注意:明文本身涉及到加密的分组模式都需要对明文进行填充,如果对初始向量进行加密则不需要填充。
特点
    1)分组长度取决于加密算法
    2)需要初始化向量,长度必须与明文分组相同
    3)先对密文进行加密,然后再与明文分组进行异或
    4)由于没有直接对明文分组进行加密,所以不需要填充
注意:解密的时候,是对初始向量进行加密操作,这样才能得到相同的数据

(6)OFB模式

    在OFB模式中,密码算法的输出会反馈到密码算法的输入中,即上一个分组密码算法的输出是当前分组密码算法的输出。
     OFB模式并不是通过密码算法对明文直接进行加密的,而是通过将“分文分组”和“密码算法输出”进行异或来产生“密文分组”的。在这点上OFB模式和CFB模式非常相似。
在这里插入图片描述
特点
     1)分组取决于加密算法
     2)不断对初始向量的输出进行加密,而得到数据来源
     3)不需要进行数据填充
在这里插入图片描述

(7)CTR模式

     CTR模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。
     CTR模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生产密钥流。也就是说,最终的密文分组是通过将计数器加密的得到的比特序列,与明文分组进行XOR而得到的。
在这里插入图片描述
在这里插入图片描述
计数器的生成方法
     每次加密是都会产生一个不同的值来作为计数器的初始值。当分组长度为128比特(16字节)时,计数器的初始值可能是想下面这样的形式。
     其中前8个字节为随机数,这个值在每次加密是必须都是不同的,后8个字节为分组序列号,这个部分是会逐次累加的。在加密的过程中,计数器的值会产生如下变化。
在这里插入图片描述
     按照上述生成方法,可以保证计数器的值每次都不同。由于计数器的值每次都不同,因此每个分组中奖计数器进行加密所得到的密钥流也是不同的。也是说,这种方法就是用分组密码来模拟生成随机的比特序列。
OFB模式与CTR模式对比
在这里插入图片描述
     OFB模式是将加密的输出反馈到输入,而CTR模式则是将计数器的值用作输入。
CTR模式的特点
     CTR模式的加密和解密使用了完全相同的结构,因此在程序实现上比较容易。这一特点和同为流密码的OFB模式是一样的。
     此外,CTR模式中可以以任意序列对分组进行加密和解密,因此在加密和解密时需要用到的“计算器”的值可以有随机数和分组序列号直接计算出来。这一性质是OFB模式所不具备的。
     能够以任意顺序处理分组,就意味着能够实现并行计算。在支持并行计算的系统中,CTR模式的速度是非常快的。
     1)分组长度取决于加密算法
     2)不需要填充
     3)可以并行加密和并行解密,推荐使用
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章