分组密码可以按不同的模式工作,实际应用的环境不同应采用不同的工作模式。只 有这样才能既确保安全,又方便高效。
1、电码本模式ECB
电码本模式ECB(Electric Code Book)直接利用分组密码对明文的各分组进行加密。设明文M=(M1,M2,…,Mn),相应的密文C=(C1,C2…,Cn),其中
电码本方式是分组密码的基本工作模式。
(1)ECB的一个缺点是要求数据的长度是密码分组长度的整数倍,否则最后一个数据块将是短块,这时需要特殊处理。
(2)ECB方式的另一缺点是容易暴露明文的数据模式。
在计算机系统中,许多数据都具有某种固有的模式。这主要是由数据冗余和数据结构引起的。例如,各种计算机语言的语句和指令都十分有限,因而在程序中便表现为少量的语句和指令的大量重复。各种语言程序往往具有某种固定格式。数据库的记录也往往具有某种固定结构,如学生成绩数据库一定包含诸如姓名、学号和各科成绩等字段。计算机通信通常按固定的步骤和格式进行。如工作站和网络服务器之间的联络一定从LOGIN开始。如果不采取措施,根据明文相同、密钥相同,则密文相同的道理,这些固有的数据模式将在密文中表现出来。掩盖明文数据模式的有效方法有采用某种预处理技术和链接技术。
2、密码分组链接模式CBC
(1)明密文链接方式 (Plaintext and Ciphertext Block Chaining)
设明文M=(M1,M2,…,Mn),相应的密文C=(C1,C2…,Cn),而
其中Z为初始化向量。
即使Mi=Mj,但因一般都有,从而使Ci≠Cj,从而掩盖了名文中的数据模式。同样可知加密时,当Mi或Ci当中发生一位错误时,自此以后的密文全都发生错误。这种现象称为错误传播无界。
解密时有,
同样,解密时也是错误传播无界。
进一步为了使相同的报文也产生不同的密文,应当使Z随机化,每次加密均使用不同的初始化向量Z。
明密文链接的工作原理如图所示:
(2)密文链接方式
明密文链接方式具有加解密错误传播无界的特性,而磁盘文件加密通常希望解密错误传播有界,这时可采用密文链接方式。在式明密文连接方式的加解密公式中去掉参数M1,即明文不参与链接,只让密文参与链接,便成为密文链接方式。
加密时,
根据上式可知加密时,当Mi或Ci中发生一位错误时,自此以后的密文全都发生错误,同样为错误传播无界。
解密时,
而根据上式可知解密时,Ci-1发生了错误,则只影响Mi-1和Mi发生错误,其余不错,因此错误传播有界。
密文链接的工作原理如图所示:
与ECB一样,CBC的一个缺点也是要求数据的长度是密码分组长度的整数倍,否则最后一个数据块将是短块,这时需要特殊处理。
3、输出反馈模式
输出反馈工作模式将一个分组密码转换为一个密钥序列产生器。从而可以实现用分组密码按流密码的方式进行加解密。这种工作模式的安全性取决于分组密码本身的安全性。
输出反馈方式的工作原理下图所示。其中R为移位寄存器。E为分组密码,如DES、IDEA、AES、SM4等强密码,设其分组长度为n。l0为R的初始状态并称为种子,K为密钥。分组密码E把移位寄存器R的状态内容作为明文,并加密成密文。E输出的密文中最右边的s(1≤ss≤n)位作为密钥序列输出,与明文异或实现序列加密。同时,移位寄存器R左移s位,E输出中最右边的这s位又反馈到寄存器R。R的新状态内容作为E下一次加密的输入。如此继续。
解密时R和E按加密时同样的方式工作,产生出相同的密钥流,与密文异或便完成了解密。
这种工作模式将一个分组密码转换为一个序列密码。它具有普通序列密码的优缺点,如没有错误传播。设加密时mi错了一位,则只影响密文中对应一位,不影响其他位。
同样,设解密时c:错了一位,则只影响明文中对应一位,不影响其他位。
输出反馈工作模式适于加密冗余度较大的数据,如语音和图像数据,但因无错误传播而对密文的篡改难以检测。
4、密码反馈模式
密码反馈工作模式的原理与输出反馈的工作原理基本相同,如下图所示,所不同的仅仅是反馈到移位寄存器R的不是E输出中的最右s位,而是异或之后的密文ci的s位。
注意:解密时R和E按加密时同样的方式工作,结合密文,便可产生出同样的密钥流,与密文异或便完成了解密。开始时,R=I0,E的输出为E(I0,K)。把E(I0,K)
中的最右s位与密文c1异或,得到明文m1。同时把c1反馈给R,于是又可产生下一个正确的密钥流。如此继续,可完整解密。
密文反馈工作模式的错误传播情况与输出反馈工作模式不同。加密时若明文m;错了一位,则影响密文错,这一错误反馈到移位寄存器后将影响到后续的密钥序列错,导致后续的密文都错。同样,解密时若密文c;错了一位,则影响明文mi错,但密文的这一错误反馈到移位寄存器后将影响到后续的密钥序列错,导致后续的明文都错。
这种加解密都错误传播无界的特性,使得密文反馈工作模式适合数据完整性认证方面的应用。
5、CTR(Counter Mode Encryption)模式
CTR模式是Diffie和Hellman于1979年提出的,在征集AES工作模式的活动中由California 大学的Phillip Rogaway等人的推荐。
CTR模式与密文反馈工作模式和输出反馈工作模式一样,把分组密码转化为序列密码。在本质上是利用分组密码产生密钥序列,按序列密码的方式进行加解密。
设T1,T2,…,Tn-1,Tn是一给定的计数序列,M1,M2,…,Mn-1,Mn是明文,其中M1,M2,…,Mn-1是标准块,Mn的长度等于u,u小于等于分组长度。CTR的工作模式的加密过程如下:
其中MSBu(On)表示On中的高u位。
CTR的工作模式的解密过程如下:
CTR模式的优点是可并行、效率高、Oi的计算可预处理、适合任意长度的数据、加解密速度快,而且在加解密处理方式上适合随机存取数据的加解密。因此,特别适合计算机随机文件的加密,因为随机文件要求能随机地访问。这对数据库加密是有重要意义的。
CTR模式的加密算法是对合运算,加解密过程仅涉及加密运算,不涉及解密运算,因此不用实现解密算法。CTR模式的缺点是没有错误传播,因此不适合用于数据完整性认证。