分组密码算法尽管具有一定的安全性,也需借助合适的工作模式隐藏明文的统计特征、数据格式等,以加强整体的安全性,减少删除、重放、插入与伪造的频次。美国在NIST-SP800标准中定义了以下五种模式,分组密码算法都可由不同的应用场合选择用其中一种模式。
1.ECB(电子码本)模式
ECB模式是利用加密算法各分组数据组加密。明文分成64bit的分组实施加密,有需要时填充,每个组用相同的密钥加密,在同一个明文组中获得相同的密文。
2.CBC(密码分组链接)模式
CBC比ECB更复杂,更安全,因此它是最常用的分组密码操作模式。CBC模式中,分组密码加密过程是:首先第一组明文分组和初始矢量执行异或,明文分组后的和前一个密文分组也不同,再用同一密钥送到加密算法加密构成一条链。
3.CFB(密码反馈)模式
DES是分组长度是64bit的分组密码,不过用CFB或OFB可转换DES为序列密码(流密码)。序列密码没有必要填充消息,且运行是实时的。所以若传送字母流,可用流密码直接加密且传送每一字母。序列密码的性质有密文与明文类似,因此,若要发送的每个字符长是8bit,就应用8bit密钥加密每个字符。若密钥长超过8bit,那么就会浪费。
4.OFB(输出反馈)模式
OFB模式的结构类似于CFB,分组密码算法被视为密钥流生成器,而和CFB模式相比不一样的地方如下:CFB模式是反馈密文单元在移位寄存器上,而OFB模式是把加密算法的输出反馈至移位寄存器,解决了CBC与CFB的有误传播引起的问题,但同时也带来了同步流密码缺点,密文被篡改很难检测。
5.CTR(计数器)模式
与CFB、OFB模式类似,CTR模式也是把分组密码作为序列密码密钥流生成器,用与明文分组规律一样的计数器长度得到密码流,和明文分组异或。CTR模式加密和解密方法相同,使用加密函数代替解密功能。实际上,CTR模式是一种序列密码,它通过计数器累加的计数器获得密钥流。