1. 电子密码本ECB (electronic codebook mode)
在ECB模式中,将明文分组加密之后的结果将直接成为密文分组。
特点:
- 简单和有效
- 可以并行实现
- 不能隐藏明文的模式信息:相同明文加密生成相同密文;同样信息多次出现造成泄漏
- 对明文的主动攻击是可能的。信息块可被替换、重排、删除、重放
- 误差传递:密文块损坏仅对应明文块损坏 适合于传输短信息
一比特的明文密文错误只会影响该分组加解密,而不会影响到其他分组,但如果出现了密文中增加或丢失一些数据位,那么整个密文序列将不能正确解密。
2. 密码分组链接CBC (cipher block chaining)
CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点。在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算(异或),然后再进行加密。
特点:
- 没有已知的并行实现算法
- 能隐藏明文的模式信息:需要共同的初始向量IV;相同明文加密得到不同密文;初始向量IV可以用来改变第一块;定期更换IV(如果需要传递IV,要保证IV的完整性)
- 对明文的主动攻击是不容易的:信息块不容易被替换、重排、删除、重放;误差传递:密文块损坏会导致明文块损坏
- 安全性好于ECB
- 适合于传输长度大于64位的报文
明文中发生一比特错误,会影响对应的密文分组以及之后的所有密文分组,但由于解密会反转这种影响,所以没有明文错误扩散。
密文中发生一比特错误,会影响对应解密明文分组和其后的一个解密明文分组。随后的那个分组在解密后在同样的bit位上有错误,但再之后的分组将不会再受影响。
3. 密码反馈CFB (cipher feedback)
在CFB模式中,前一个密文分组会被送回到密码算法的输入端。所谓反馈(feedback),这里指的就是返回输入端的意思。
CFB 模式中由密码算法所生成的二进制序列称为密钥流(key stream)。在CFB模式中,密码算法就相当于用来生成密钥流的伪随机数生成器,而初始化向量就相当于伪随机数生成器的“种子”。在CFB模式中,明文数据可以被逐比特加密,因此我们可以将CFB模式看做是一种使用分组密码来实现流密码的方式。
3.1. CFB 模式加密
3.2. CFB 模式解密
特点:
- 分组密码自同步流密码
- 没有已知的并行实现算法
- 关于IV:为进行正常的加密和解密,发送与接收需要共同IV;IV应具有唯一性(即在密钥不变时,每次加密使用不同的IV)
- 优点:隐藏了明文模式
- 缺点:误差传递,一个单元损坏影响多个单元
明文错误同CBC
密文错误一位会引起解密后对应明文的一位错误,错误进入移位寄存器,将导致加密步骤输出错误,直到该错误从寄存器移除,有良好的自同步性质
4. 输出反馈OFB (output feedback)
在OFB模式中,密码算法的输入会反馈到密码算法的输入中。OFB模式并不是通过密码算法对明文直接进行加密的,而是通过将“明文分组”和“密码算法的输出”进行XOR来产生“密文分组”的,在这一点上OFB模式和CFB模式非常相似。
由于CFB模式中是对密文分组进行反馈的,因此必须从第一个明文分组开始按顺序进行加密,也就是说无法跳过明文分组1而先对明文分组2进行加密。相对地,在OFB模式中,XOR所需要的比特序列(密钥流)可以事先通过密码算法生成,和明文分组无关。只要提前准备好所需的密钥流,则在实际从明文生成密文的过程中,就完全不需要动用密码算法了,只要将明文与密钥流进行XOR就可以了。这就意味着只要提前准备好密钥流就可以快速完成加密。换个角度来看,生成密钥流的操作和进行XOR运算的操作是可以并行的。
4.1. OFB 模式加密
3.2. OFB 模式解密
特点:
- 没有已知的并行实现算法
- 优点:隐藏了明文模式;没有误差传递:一个单元损坏只影响对应单元
- 缺点:不具有自同步能力,要求系统要保持严格的同步;重新同步时需要新的IV,IV可以用明文形式传送
- 对明文的主动攻击是可能的,信息块可被替换、重排、删除、重放
- 安全性较CFB差
明文在某位上发生的错误不会影响加密后密文其他位。
密文在某位上发生的错误不会影响解密后明文其他位。
5. 计数器模式CTR (counter)
CTR 模式是一种通过将逐次累加的计数器进行加密来生成密钥流的流密码。CTR 模式中,每个分组对应一个逐次累加的计数器,并通过对计数器进行加密来生成密钥流。也就是说,最终的密文分组是通过将计数器加密得到的比特序列,与明文分组进行XOR而得到的。
CTR模式和OFB模式一样,都属于流密码。OFB模式是将加密的输出反馈到输入,而CTR模式则是将计数器的值用作输入。
特点:
- 硬件效率:允许同时处理多块明/密文
- 软件效率:允许并行计算
- 预处理
- 随机访问
- 可证明安全性:能够证明CTR至少和其他模式一样安全
- 简单性:只需要实现加密算法
- 无填充:可以高效地作为密钥流使用
CTR模式也具备和OFB模式类似的性质。如果CTR模式的密文分组有一个比特反转了,则解密后的明文分组中仅有与之对应的比特会被反转,这一错误不会放大。明文加密与之类似。
6. 工作模式选用原则
- ECB模式,简单、高速,但最弱,易受重发攻击,一般不推荐;
- CBC,CFB,OFB,CTR的选择取决于实用特殊考虑;
- CBC适用于文件加密,但较ECB慢,且需要另加移存器和组的异或运算,但安全性加强。软件加密最好选用此种方式;
- OFB和CFB较CBC慢许多,每次迭代只有少数bit完成加密。若可以容忍少量错误扩展,可选CFB。否则,可选OFB或CTR;
- 在字符为单元的流密码种多选CFB模式,如终端和主机间通信。而OFB或CTR用于高速同步系统,不容忍差错传播。