对称加密算法分类及加密模式

对称算法分类

流加密(stream cipher)

加密和解密双方使用相同伪随机加密数据流(即密钥),一般都是逐位异或或者随机置换数据内容,常见的流加密算法如RC4。

流加密中,密钥的长度和明文的长度是一致的。假设明文的长度是n 比特,那么密钥也为n比特,可选择的密钥数量为:

2n2n

因此暴力破解流密码是很难的。

加解密过程

明文P和密文S通过密钥K和异或操作进行转换。 

P⊕K=SP⊕K=S

S⊕K=PS⊕K=P

关键技术

流密码的关键技术在于设计一个良好的##密钥流生成器##,即由种子密钥通过密钥流生成器生成伪随机流。 
通信双方交换种子密钥即可(已拥有相同的密钥流生成器)。

分组加密(block cipher)

也叫块加密,将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。

加密模式

对称算法有以下5种加密模式:

加密模式(英文名称及简写) 中文名称 特点
Electronic Code Book(ECB) 电子密码本模式 简单快速,可并行计算
Cipher Block Chaining(CBC) 密码分组链接模式 仅解密支持并行计算
Cipher Feedback Mode(CFB) 加密反馈模式 仅解密支持并行计算
Output Feedback Mode(OFB) 输出反馈模式 不支持并行运算
Counter (CTR) 计算器模式 支持并行计算

ECB

ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。

相同的明文会产生相同的密文。 
其缺点是:电子密码本模式用一个密钥加密消息的所有块,如果原消息中重复明文块,则加密消息中的相应密文块也会重复。 
因此,电子密码本模式适于加密小消息。

这里写图片描述

CBC

需要初始化向量IV(长度与分组大小相同)参与计算第一组密文,第一组的密文与第二组数据XOR计算后再进行加密产生第二组密文 。

安全性较好,TLS、IPSec等标准的推荐模式,但不利于并行运算。 
加密运算不支持并行,解密运算支持并行。

这里写图片描述 
这里写图片描述

CFB

面向字符的应用程序的加密要使用流加密法,可以使用加密反馈模式。在此模式下,数据用更小的单元加密,如可以是8位,这个长度小于定义的块长(通常是64位)。其加密步骤是: 
1、使用length位的初始化向量。初始化向量放在移位寄存器中,在第一步加密,产生相应的length位初始化密文K; 
2、初始化密文K高n位与明文前n位进行异或运算,产生密文第一部分c(密文块0),然后将c传输到接收方; 
3、向量的位(即初始化向量所在的移位寄存器内容)左移n位,在移位寄存器最右边的n位填入c的内容,使其为不可预测的数据; 
4、重复第1-3步,直到加密所有的明文单元。

仅解密支持并行计算

这里写图片描述 
这里写图片描述

OFB

输出反馈模式与CFB相似,惟一差别是,CFB中密文填入加密过程下一阶段,而在OFB中,初始化向量加密过程的输出K的高n位填入加密过程下一阶段。

可事先进行加密、解密的准备,将分组密码转化为流模式。

不支持并行运算。

这里写图片描述

这里写图片描述

CTR

计算器模式(Counter (CTR))不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密。支持并行计算

这里写图片描述 
这里写图片描述

猜你喜欢

转载自blog.csdn.net/xiaoliuliu2050/article/details/81179326
今日推荐