对称加密模式

分组密码和流密码

分组密码:每次只能处理特定bit长度的一块数据的密码算法,这里的“一块”就是分组(block)
         AES的分组长度必须是128bit,秘钥长度可以是128bit,192bit,256bit。

流密码:对数据流进行连续处理的一类密码算法。流密码一般以1bit,8bit,32bit等为单位进行加密解密。

模式

ECB(Electronic CodeBook)电子密码本模式:

解释:明文分组直接加密成密文分组。

对称加密模式_第1张图片
ECB加密.png
对称加密模式_第2张图片
ECB解密.png

特点:明文和密文分组一一对应,相同的明文转换的密文也是相同的。攻击者不用破译密文通过交换密文顺序就能操作明文。
优点:简单,快速,支持并行计算(加密解密)。
缺点:1、明文的重复排列会影响密文。
   2、通过增删改的密文分组可以操作明文 。
   3、某一密文分组bit序列错误,对应解密后明文出错。
   4、不能抵御重放攻击。
不推荐使用!!!

CBC(Cipher Block Chaining)密文分组链接模式:

解释:明文分组与前一个密文分组进行XOR运算,再进行加密。第一个明文分组不存在前一个密文分组,所以对第一个明文分组加密时要产生一个与分组长度相同的随机数即初始化向量(Initialization Vector)

对称加密模式_第3张图片
CBC加密.png

对称加密模式_第4张图片
CBC解密.png

特点:1、明文分组在加密之前会与前一个密文分组进行XOR,因此即使两个明文分组的内容相同,加密后的密文分组不一定相同。
   2、假如某一个密文分组受到破坏(通信过程中bit序列发生错误或者磁盘损坏读取数据时发生错误但是长度不变),它只会影响两个明文分组的数据,即其对应的明文分组和下一个明文分组。
   3、通信过程中或者磁盘损坏读取数据发生密文bit丢失,此时密文长度受到影响。例如,某一密文分组发生bit丢失,其后面的密文分组数据向前移动导致丢失bit的密文分组及其后面的所有密文分组都无法解密成正确的明文。
优点:1、明文的重复不会反应在密文中。
   2、支持并行运算(解密)。
   3、根据其特点能够解密任意密文分组。
缺点:1、某一分组密文错误会影响其对应的明文及后一个明文解密。
   2、某一分组密文bit缺失会影响其对应明文和之后所有明文解密。
   3、不支持并行运算(加密)。
推荐使用,SSL/TSL协议使用加密模式。

CFB(Cipher FeedBack)密文反馈模式:

解释:前一个密文分组进行加密后再与下一个明文进行XOR。第一个明文分组不存在前一个密文分组,所以对第一个明文分组加密时要产生一个与分组长度相同的随机数即初始化向量(Initialization Vector)

对称加密模式_第5张图片
CFB加密.png

对称加密模式_第6张图片
CFB解密.png

特点:1、明文分组和密文分组没有通过加密算法直接加密。
   2、只需要知道某一密文分组的前一个密文分组,就能对这个密文分组进行解密。
优点:1、不需要填充。
   2、支持并行计算(解密)。
   3、能解密任意密文分组。
缺点:1、对某一明文分组XOR的数据来至它之前的明文分组层层加密,不支持并行计算(加密)。
   2、尤其解密特点可知,不能抵御重放攻击。
   3、某一密文分组bit错误,影响它的明文解密和后一个分组的明文解密。
   4、某一密文分组bit丢失,影响它的明文解密和后面所有分组的解密。
推荐使用

OFB(Output FeedBack)输出反馈模式:

解释:密码算法的输出是密码算法的输入。第一次使用密码算法加密时需要一个初始化向量(Initialization Vector)

对称加密模式_第7张图片
OFB加密.png
对称加密模式_第8张图片
OFB解密.png

特点:1、加密算法的输入是加密算法的前一个输出。
   2、和CFB模式相同明文和密文分组只有XOR运算。
   3、明文和密文分组没有参与到加密运算,只需要根据分组的数量提前生成每个分组对应的秘钥进行XOR。可以快速完成加密。
优点:1、不需要填充。
   2、可事先准备好加密解密需要的秘钥。
   3、加密解密结构相同,操作过程相反。
   4、某一密文分组bit错误,只影响明文相应的bit。
缺点:1、不支持并行运算。
   2、主动攻击者反转某一密文分组的某些bit,明文分组中相应bit也会被反转。
推荐使用

CTR(CounTeR)计数器模式:

解释:通过对逐次累加的计数器进行加密,再和明文分组XOR。

对称加密模式_第9张图片
CTR加密.png

对称加密模式_第10张图片
CTR解密.png

计数器:每次加密都会生成一个不同的nonce值作为计数器的初始值,再加上分组序号就构成“计数器的值”。
例如:分组长度为128bit。前8个字节是nonce值,后8个字节是分组序号。
明文分组1的计数器(初始值):66 1F 98 AB A5 BF 8C 4B 00 00 00 00 00 00 00 01
明文分组2的计数器:66 1F 98 AB A5 BF 8C 4B 00 00 00 00 00 00 00 02
。。。

特点:1、加密解密结构相同。程序易实现。
   2、加密解密需要的计数器的值可以由nonce+分组序号直接计算得出,所以支持并行计算,效率高。
优点:1、不需要填充。
   2、可事先准备好加密解密需要的秘钥。
   3、加密解密结构相同,操作过程相反。
   4、某一密文分组bit错误,只影响明文相应的bit。
   5、支持并行计算。
缺点:主动攻击者反转某一密文分组的某些bit,明文分组中相应bit也会被反转。
推荐使用

总结自《图解密码技术》

你可能感兴趣的:(对称加密模式)