在实际应用中,DES由其加密算法说明的明文分组的大小,把数据分为多个64比特的加密区块,再以区块做单位,分别实施加密处理。若最终剩下不足一个区块的大小,叫其为短块。处理短块的方法通常有填充法、序列密码加密法、密文挪用技术。通过数据加密时,每个加密区块之间的关系划分,可以分为以下4种加密模式。
1.电子密文方式(ECB)
ECB模式是分组密码的基本工作方式。在该模式下,每个加密区块按顺序进行独立加密,得到独立的密文区块,每个加密区块的结果都不会被其他区块影响,用此方式,可用平行处理实施加速加、解密运算,且在网络传输时任何一个区块出现错误,也不存在影响到其他区块传输的结果,这是该模式的好处。
ECB模式的不足是易使明文的数据模式暴露。在计算机系统里,很多数据均存在固有模式,这主要是由数据结构与数据冗余导致的。若无任何措施,针对在需加密的文件里出现多回的明文,这部分明文如果刚好是加密区块的大小,则可能会得到一样的密文,且密文内容如果受到剪贴、代替,也很难被发现。
2.密文分组链接方式(CBC)
第一个加密区块先与初始向量做异或运算,再进行加密。其他每个加密区块在加密之前,必须与前一个加密区块的密文做一次异或运算,再进行加密。每个区块的加密结果都会被前面全部区块内容的影响,因此尽管在明文里出现多次一样的明文,也会得到不一样的密文。
还有,密文内容如果遇到剪贴、替换,或于网络传输时出现错误,则它后面的密文会被破坏,不能顺利解密还原,这是这一模式的优点也是缺点。
其次,一定得选取1个初始向量来加密第1个区块,且加密作业时不能用平行处理加速加密运算,不过解密运算,做异或的加密区块结果已经有了,则还可用平行处理加速。
3.密文反馈方式(CFB)
可把区块加密算法作流密码加密器用,流密码加密器可由实际需要,每回加密区块的大小能自行确定,每个区块的明文与之前区块加密后的密文异或后,变成密文。因此,每一个区块的加密结果也受之前所有区块内容的影响,也会使在明文中出现多回一样的明文都得到不一样的密文。在这个模式下,和CBC模式相同,为了加密第1个区块,一定得选1个初始向量,且其必须只有一个、每次加密时肯定不一样,也很难用平行处理加快加密作业。
4.输出反馈模式(OFB)
OFB与CFB大致相同,唯一的差异是每个区块的明文与之前区块加密后的密文做异或后产生密文。之前区块加密后的密文是独立产生的,每个区块的加密结果不会被前面全部区块内容影响,若存在区块在传输中丢失或出现错误,不至于不能完全解密,但也会使在明文中出现多回的明文,都得到同样的密文,也易遭遇剪接攻击。而在此模式下,为了加密第1个区块,一定得设置1个初始向量,要不然很难用平行处理加快加密作业。
容易看出,以上4种操作模式有不同的优点和缺点。在ECB与OFB中改变一个明文块会使有关的密文块发生改变,但其他密文块不变。有些情况下这可能是一个好的特性。另一方面,在CBC与CFB中改变一个明文块,那么对应的密文块及它后面的全部密文块会改变,此特性代表CBC与CFB模式适合于鉴别。更明确地说,这些模式能用来产生消息鉴别码,将其附在明文块序列的后面可保护消息的完整性。