分组密码工做模式的应用背景:屡次使用相同的密钥对多个分组加密,会引起许多安全问题。为了应对不一样场合,于是须要开发出不一样的工做模式来加强密码算法的安全性。算法
一、ECB(Electronic Code Book)安全
特别适合数据较少的状况,对于很长的信息或者具备特定结构的信息,其大量重复的信息或固定的字符开头将给密码分析者提供大量的已知明密文对。若明文不是完整的分组,ECB须要进行填充。函数
二、CBC(Cipher Block Chaining)加密
因为加密算法的每次输入和本明文组没有固定的关系,所以就算有重复的明文组,加密后也看不出来了。为了配合算法的须要,有一个初始向量(IV)。与ECB同样有填充机制以保证完整的分组。spa
3、CFB(Cipher Feedback)3d
和OFB,CTR模式同样,都可将分组密码当作流密码(实际是将分组大小任意缩减)使用。blog
在CFB模式中,将明文拆解成s位(通常是8位,即1字节)长的分组,明文一方面参与到对称加密的过程中以增长复杂度,另外一方面运用A⊕B⊕B = A 这一异或运算的特色,彻底过滤掉对称加密部分进行解密。实际上,该模式解密的原理与对称加密算法彻底无关,于是其解密也就用不上对称加密算法对应的解密算法。ip
以MSBs(X)表示X的最左边s位,可将其加密和解密描述成如下式子开发
C1 = P1⊕MSBs[E(K,IV)]效率
P1 = C1⊕MSBs[E(K,IV)] = P1⊕MSBs[E(K,IV)]⊕MSBs[E(K,IV)] = P1
实际上,该模式牺牲了运算能力来换取流密码的形式,其构造与流密码的典型构造并不一致。
四、OFB(Output Feedback)
OFB的结构与CFB很类似,它用加密函数的输出填充移位寄存器,而CFB是用密文单元来填充移位寄存器。其余的不一样是,OFB模式是对整个明文和密文分组进行运算,而不是仅对s位的子集运算,于是不至于浪费运算能力。
若明文的最后一个分组长度小于分组整长,无需填充,相似CFB作移位和丢弃操做便可。
OFB也有一个初始化向量,可是其对每一次加密运算都是惟一的,缘由是下图虚线中的中间值Oi只依赖于K和初始向量,若初始向量不变极易被攻击。于是须要约定或传输好这个初始化向量。
实际上OFB只有密钥和初始化向量参与了对称加密,其加密和解密描述成如下式子
Ci = Pi⊕E(K,Oi)
Pi = Ci⊕E(K,Oi)
OFB的一个优势是因为明文分组不参与对称加密过程,于是密文分组上的某些错误不会影响到其余密文分组的解密。
可是其缺点也正是这一特色带来的,若攻击者改变密文的一部分可能并不会被察觉,于是其消息完整性难以验证。
OFB具备典型的流密码的结构,对称加密方法至关因而根据密钥生成流密码的方法。
四、CTR(Counter)
计数器使用与明文分组规模相同的长度,计数器首先被初始化位某一数值,而后随着消息块的增长计数器加1。加密时,计数器加密后与明文分组异或获得密文分组,没有连接。解密时必须知道初始计数器的值。
若明文的最后一个分组长度小于分组整长,无需填充,相似CFB作移位和丢弃操做便可。
CRT模式的优势:
一、硬件效率高,同三种连接模式相比,CTR可以并行加密和解密。
二、软件效率高,能够充分利用其并行特性进行并行计算
三、因为加密解密过程不依赖明文和密文,所以能够作预处理以提升效率
四、能够随机访问某一明文或者密文分组进行部分加密和解密
六、用于面向分组的存储设备的XTS-AES模式
这是一种新的工做模式,描述了一种对基于扇区的设备上的数据进行加密的方法。
加密存储的数据(也叫静止数据)与加密传输数据的要求有些不一样。
单分组的加密和解密能够描述成
可逆证实:
C = CC⊕T = E(K1,PP)⊕T = E(K1,P⊕T)⊕T
P = PP⊕T = D(K1,CC)⊕T = D(K1,C⊕T)⊕T
= D(K1,E(K1,P⊕T))⊕T = P⊕T⊕T = P
正是因为引入了微调参数等使得不一样存储位置的相同明文加密成不一样密文。
最后那个不满的分组处理
若最后一个分组不足长,则要对最后两个分组使用密文窃取技术,而不是填充技术来加密和解密。
与CTR模式相同的是,XTS-AES模式适合并行执行,不一样的是,XTS-AES模式包含一个时变值(参数i)以及一个计数器(参数j)。