新闻动态
在密码学中,分组密码的输入为拥有b位固定长度的明文分组和密钥,输出为b位的密文。明文长度若大于b位,则可单一将其分为b位一组的块。每次使用一样的密钥对多个分组加密,则会引发很多安全问题。为了将分组密码利用于各类各样的现实利用,也就出现了多种分组密码的工作模式,从性质上讲,工作模式是一项加强密码算法或者使算法适应具体利用的技术,如将分组密码利用于数据块组成的序列或者数据流。
通俗来讲就是,分组密码的工作模式就是描述了若何沉复加密较长的多个数据块,而分组密码则是用于对其中一个数据进行加解密。
我国于2021年颁布了新订正的国度尺度GB/T 17964-2021《信息安全技术 分组密码算法的工作模式》,该尺度划定了分组密码算法的工作模式,一共分为了九种工作模式:电码本(Electronic Codebook,ECB)、密文分组链接(Cipher Block Chaining,CBC)、密文反。–ipher Feedback,CFB)、输出反。∣utput Feedback,OFB)、计数器(Counter,CTR)、带密文挪用的XEX可调分组密码(XEX Tweakable block cipher with ciphertext Stealing,XTS)、带泛杂凑函数的计数器(universal Hash function based CTR,HCTR)、分组链接(Block Chaining,BC)、带非线性函数的输出反。∣utput Feedback with a Nonlinear Function,OFBNLF)。其中ECB、CBC、CFB、OFB、CTR为常见的五种分组密码工作模式,下面会对这五种工作模式具体介绍。
电码本是最单一的工作模式,它一次处置一组明文分块,每次使用一样的密钥加密,加密流程见图1,解密流程见图2。对于给定的密钥,任何b位的明文组只有唯一密文与之对应,所以,凭据肆意b位明文都能够查到相应的密文。
明文长度若长于b位,则可单一将其分为b位一组的块,若在最后一块明文长度不及b位,则必要进行填充,解密也是一次执行一块,且使用一样的密钥。
凭据ECB模式的加解密流程,我们可通过如下方式进行暗示。其中为明文分组,每一组的明文都是由一串b位的块组成,相应的密文分组顺次为,K为密钥。
加密:
解密:

图1 ECB加密流程

图2 ECB解密流程
ECB最沉要的特点是一段新闻中若有几个一样的明文组,那么密文也将出现几个一样的密文分组。因而无法荫蔽数据模式,对某一个分组的加密或解密可独立于其他分组进行,对密文分组的沉排也将导致明文分组的沉排。
对于很长的信息,ECB模式可能存在攻击缝隙。若是新闻长短结构化的,攻击者就能够利用这些法规性特点来破译。例如,若已知这段新闻总是以某些固定的字符开头,攻击者就能够占有大量已知明密文对其发展攻击。若新闻有沉复的成分,且沉复的周期正好是b位的倍数,攻击者就能分辨出这些成分,使用代换或者沉排这些块的步骤进行攻击。因而,ECB模式无法抵抗对分组的沉放、嵌入和删除等攻击。
所以,从上面能够看出,ECB模式的利益是并走运算,快率快;弊端就是安全性较低,容易受到攻击。其合用于加密密钥、随机数等短数据。
为了预防沉复的明文分组加密之后依然是一样的密文分组,CBC模式相对于ECB模式做了一些批改,CBC模式下加密算法输入是当前的明文组和上一个密文组的异或,而解密则是将当前密文分组解密后和上一个密文分组进行异或就得到当前的明文分组,加解密流程见图3、图4,使用的密钥都是一样的,这样若有沉复的明文组,加密后也看不出来了。并且CBC和ECB类似,最后的分组若不是齐全的分组,依然必要进行填充。
对于第一块明文加密,由于不存在“前一个密文分组”,因而必要事先筹备一个长度为一个分组的比特序列来包办“前一个密文分组”,这里引入了一个初始向量IV,IV和密文拥有一样长度的数据分组,并且收发方都需使用统一个IV。为了安全性,每次加密的IV取值都是随机分歧的,通常选取功夫戳或者随机数产生器产生的随机分组。
凭据加解密流程能够通过如下方式进行暗示。
加密:
解密:

图3 CBC加密流程

图4 CBC解密流程
从上面能够看出CBC的利益是同样的明文组不会被加密成一样的密文组,解密支持并行推算。弊端则是加密过程是串行的,无法被并行化,并且新闻必须被填充到块大幼的整数倍;对蕴含某些谬误比特的密文解密时,会导致其对应的明文块齐全扭转和下一个明文块中对应位产生扭转。
CBC工作模式同样也存在攻击缝隙,例如字节回转攻击、AES-CBC密文填充攻击等。
此表,CBC除了能够实现机密性,还是能够用于认证,它能够天生新闻甄别码(MAC),使用最后一个分组的输出了局作为MAC,MAC能够用于检验新闻的齐全性、验证新闻源的真实性等。因而CBC模式合用于加密肆意长度的数据,以及推算产生检测数据齐全性的新闻甄别码MAC。
和上面所说的两种工作模式有些分歧,CFB是将分组密码当成流密码使用。流密码的密文和明文等长,并且不必要将明文长度填充成分组长度的整数倍,能够实时操作。所以,待发送的字符流中任何一个字符都能够用面向字符的流密码加密后当即发送。
CFB的加密流程如图5所示,加密算法的输入是b位的移位寄放器,其初始值为初始向量IV;而后使用密钥对IV进行加密,得到的了局只选用最左边的s位(这里如果传输单元为s位),其余的抛弃;之后再将截选的s位与明文的第一个分段P1异或得到密文的第一个单元C1;接下来将得到的C1作为下一轮加密算法的输入,此时移位寄放器左移s位,C1填入移位寄放器的最右边s位,而后加密,沉复进行上述操作,直至所有明文加密成密文。
上面由加密算法所天生的比特序列我们将其称之为密钥流,在CFB中加密算法就相当于用来天生密钥流的伪随机数天生器,而IV就相当于伪随机数天生器的种子。
CFB的解密流程如图6所示,解密流程和加密差不多,只是有一点分歧的是将得到的密文单元与加密算法的输出异或就能够得到明文单元。必要把稳的是这里使用的是加密算法而不是解密算法,由于我们这里解密要得到的是密钥流,而密钥流就是通过加密算法得来的。
凭据加解密流程能够通过如下方式进行暗示,其中MSBs(X)暗示X的最左边s位。
加密:
解密:

图5 CFB加密流程

图6 CFB解密流程
CFB模式和CBC类似,每一个分组的了局会受到前面所有分组内容的影响,所以即便出现有一样明文的情况下,也都产生的分歧的密文;解密能够并行化;还有一个利益是通过流密码模式进行加密,能够实时加密传送幼于分组的数据。
而弊端和CBC一样,加密为串行,无法并行推算,效能大大降低;并且存在误差传递,一个单元出现问题会影响到后面多个单元,所以可用于查抄发现明文密文的篡改。CFB存在有攻击缝隙,无法抵抗沉放攻击。
OFB模式和CFB类似,其加解密流程如图7、图8所示,分歧的处所OFB的加密算法的输入是上一个加密算法的输出,而CFB的加密算法输入是上一轮得到的密文分组;并且OFB是对整个明文和密文分组进走运算,而不是仅对s位的子集运算。OFB最起头输入的时变值也就是上面所说的初始向量IV。
通过下图的加解密流程能够看出,异或所必要的密钥流能够事先通过密码算法天生,而这个过程不涉及明文分组,也就是下图中虚线框部门。所以在现实加密过程中,我们只必要提前筹备好所需的密钥流,就齐全不必要使用密码算法,只必要将明文和密钥流进行异或即可,而异或相迸宗那些加密算法长短?斓,因而现实操作过程中能够利用OFB这一个性大大提升工作效能。
凭据加解密流程能够通过如下方式进行暗示。
加密:
解密:

图7 OFB加密流程

图8 OFB解密流程
OFB的利益有,暗藏了明文的模式;能够实时加密传送幼于分组的数据,由于加密算法的输入没有使用到上一轮的密文分组,所以同CFB分歧的是,OFB无误差传递问题。而弊端也很显著,加解密都是串走运算,无法并行化;并且安全性较CFB要差,这是由于密钥流由密钥自身产生,拥有周期性,在使用一样密钥加密的数据达到肯定数量时,会产生沉复,这也就降低了算法的安全性。
CTR模式通过将逐次累加的计数器进行加密来天生密钥流的流密码。其加解密流程如图9、图10所示,计数器刚起头被初始化为某个值,随着信息块的增长计数器的值加1(mod 2b,b为分组长度),加密时,计数器加密后与明文分组异或得到密文分组,分歧的密文分组之间没有关联。解密使用一样值的计数器序列,用加密后的计数器值与密文分组异或来复原明文分组。因而解密方必要知路初始计数器的值。与ECB和CBC分歧的是,由于CTR的结构关系,我们不必要对明文进行填充。
凭据加解密流程能够通过如下方式进行暗示。
加密:
解密:

图9 CTR加密流程

图10 CTR解密流程
从上面两个CTR可能以肆意挨次处置分组,这就意味着它可能实现并行推算,并且谬误不会传布;CTR模式的加密和解密使用了齐全一样的结构,因而在法式上实现就比力容易。同OFB类似,CTR同样能够事先天生密钥流,在现实加密过程中只必要将密钥流与明文分组相异或。不外CTR安全性要比OFB较高,由于CTR密钥流的产生每次所使用的都是分歧的初始值,所以也就不存在密钥出现沉复的情况。
CTR模式也存在有攻击缝隙,攻击者能够通过回转密文分组中的某些比特,引起解密后明文中的相应比特也产生回转。
|
工作模式 |
描述 |
利益 |
弊端 |
用处 |
|
ECB |
用一样的密钥别离对明文分组独立加密 |
·单一急剧 ·无差错传布 ·支持并行推算(加密、解密) |
·无法荫蔽明文数据体式法规和统计特点 ·无法抵抗沉放、嵌入和删除攻击 |
合用于传送短数据(如一个加密密钥) |
|
CBC |
加密算法的输入是上一个密文组和当前明文组的异或 |
·能够荫蔽明文数据体式法规和统计特点 ·肯定水平上能够抵抗沉放、嵌入和删除等攻击 |
·存在差错传布 ·加密不支持并行推算 |
合用于加密肆意长度的数据;并且能够用于认证 |
|
CFB |
一次处置s位,上一块密文作为加密算法的输入,产生的伪随机数输出与明文异或作为下一个单元的输入 |
·能够荫蔽明文数据体式法规和统计特点 ·拥有自同步流密码利益 |
·存在差错传布 ·加密不支持并行推算 ·不能抵抗沉放攻击 |
合用于加密数据流,并且可用于认证 |
|
OFB |
与CFB类似,只是加密算法输入是上一个加密的输出,且使用的整个分组 |
·能够荫蔽明文数据体式法规和统计特点 ·拥有同步流密码利益 ·无差错传布 ·可事先进行加解密筹备,产生密钥流 |
·不支持并行推算 ·对于密文被篡改难以进行检测 ·攻击者回转密文分组中的某些比特时,明文分组中相对应的比特也会被回转 |
噪声信路上的数据流传输(如卫星通讯) |
|
CTR |
每个明文分组都与一个经过加密的计数器相异或。对每个后续分组计数器递增。 |
·能够荫蔽明文数据体式法规和统计特点 ·拥有同步流密码利益 ·无差错传布 ·支持并行推算 ·可事先进行加解密筹备,产生密钥流
|
·对于密文被篡改难以进行检测 ·攻击者回转密文分组中的某些比特时,明文分组中相对应的比特也会被回转 |
合用于实时性和快率要求比力高的加密场所 |
参考资料: