【DanBoneh】Using Block Ciphers

电子密码本(ECB)不是语义安全的,永远不应被用来加密长于一个分组的信息。

在确定的计数器模式下,由分组密码构建一个流密码。

同一个密钥加密多个信息,允许攻击者实施选择明文攻击CPA,即攻击者可任选一条信息交给Alice加密,然后给攻击者相应的密文。)目标是破解语义安全。

确定的加密机制不可能是 CPA 安全的。

用同一个密钥加密两段相同的明文,最好产生两段不同的密文,可以通过随机加密(在加密过程中,选择一些随机的字符串进行加密)和基于新鲜值的加密(构造对选择明文攻击安全的加密机制)来解决。

密码分组链接模式(CBC):使用一个分组密码,以实现对选择明文攻击是安全的。首先选择一个随机的初始向量 IV ( IV 必须不可预测,其大小就是分组密码的一个分组大小,IV就是一个分组密码),IV 和第一个明文分组进行异或,得到的结果使用分组密码进行加密,输出第一个分组的密文。以此类推,将第二个明文分组与第一个密文分组进行异或,再加密,得到第二个分组的密文。最后的密文是选择的 IV 以及所有的密文分组。

无法对单独的一个中间明文分组加密。解密时,若一个密文分组受损,只要长度不变化,只会影响 2 个明文分组,若长度变化,分组错位,则无法解密。

带 IV (IV不可预测)的 CBC 模式对选择明文攻击是语义安全的。

基于新鲜值的CBC加密:IV 被某个不随机唯一的新鲜值取代。在这个模式中,要使用两个独立的密钥 k 和 $k_1$ ,k 用来加密单独的明文分组, $k_1$ 用来加密新鲜值。在CBC链接使用新鲜值前需要使用 $k_1$ 加密新鲜值,没有的话就不是 CPA 安全的。

当加密的明文长度不是分组密码的分组长度的倍数时,需要在最后一个分组后面进行补齐,解密者会将其移除。如果不需要补齐,为避免出错,最后还是需要加一个没用的分组,解密者根据信息内容会将其移除。

随机计数器模式(CTR):使用安全的 PRF ,不使用分组密码。是一种通过逐次累加的计数器进行加密来生成密钥流的流密码,能以任意顺序处理分组,实现并行计算。IV 被包含在密文里,密文要比明文稍微长一点。

CTR与CBC的比较

  1. CBC 必须使用分组密码,解密过程时逆向的运行分组密码,CTR 只使用正向的加密功能。
  2. CBC 串行,CTR 可并行。
  3. CTR 的安全上界、误差项比 CBC 好。
  4. CBC 需要加一个假的补齐分组,有一个 CBC 变种叫做 CBC 密文偷窃可以用来避免产生假的分组。
  5. 基于新鲜值的模式下,新鲜值需要被扩展成 16 字节的分组才能加密,CBC 模式的密文比原来扩展了 16 倍;CTR 模式可以加密一字节的信息,通过与 CTR 模式产生的流的第一个字节进行异或,产生的每个密文都是一个字节的,无需扩张,和明文一样。