密码学 - 计数器模式 (CTR)



计数器模式 (CTR) 与 OFB 模式类似,区别在于 CTR 模式使用计数器作为反馈。这种方法具有与 OFB 模式相同的优点(破坏模式并避免错误传播),但它也允许并行加密,因为反馈可以像递增数字一样简单。一个简单的例子是,第一个块与数字 1 进行异或运算,第二个块与数字 2 进行异或运算,依此类推。这种方法允许同时完成任意数量的轮次。

可以将其视为没有反馈的 CFB 模式的基于计数器的版本。在此模式下,发送方和接收方都必须访问一个可靠的计数器,该计数器每次传输密文块时都会生成一个新的共享值。这个共享计数器并不总是秘密值;但是,双方必须保持计数器的同步。

Counter (CTR) Mode

操作

下图显示了 CTR 模式下的加密和解密。操作步骤如下:

  • 将顶部寄存器加载为初始计数器值,该值对发送方和接收方都相同。它与 CFB(和 CBC)模式中的 IV 具有相同的用途。

  • 使用密钥加密计数器的数值并将结果保存在底部寄存器中。

  • 取第一个明文块 (P1) 并将其与底部寄存器的数值进行异或运算。其结果为 C1。将 C1 发送给接收方,然后更新计数器。计数器的更新取代了 CFB 模式中的密文反馈。

  • 以此方式继续,直到加密最后一个明文块。

  • 解密是一个相反的过程。密文块与计数器值的加密数据进行异或运算。每个密文块计数器在解密后都会更新,与加密时完全相同。

CTR 模式的分析

它没有消息依赖性,因此密文块不依赖于之前的明文块。

与 CFB 模式一样,CTR 模式不包括分组密码解码。这是因为 CTR 模式使用分组密码生成密钥流,然后用 XOR 函数进行加密。换句话说,CTR 模式将分组密码转换为流密码。

CTR 模式的主要缺点是它需要在发送方和接收方都使用同步计数器。同步丢失会导致无法正确恢复明文。

但是,CTR 模式几乎提供与 CFB 模式相同的优点。此外,不会传播传输错误。

CTR 模式的公式

CTR 与 OFB 类似,因为它将一系列填充向量与明文和密文块进行异或运算。主要区别在于这些填充向量的创建方式。

在 CTR 模式中,我们从随机种子 s 开始,然后使用以下公式计算填充向量:

Vi = EK(s+i-1)

其中 EK 是密钥为 K 的分组加密技术,Vi 是填充向量,i 是向量相对于 1 的偏移量。

构建向量后,可以使用以下公式执行与 OFB 模式类似的加密:

Ci = Vi ⊕ Bi

解密的方式类似:

Bi = Vi ⊕ Ci

与 CFB 和 OFB 模式一样,CTR 使用相同的加密算法进行加密和解密。

CTR 模式的位宽

计数器 (CTR) 模式是一种典型使用分组密码算法的分组密码工作模式。在这个版本中,我们提供高级加密标准 (AES) 处理;AES 的密钥长度为 128/192/256 位。另一个限制是我们的工作模式以固定大小的单元(每个块 128 位)进行操作,但现实世界中的文本长度不一。因此,提供给此原语的最终文本块必须填充到 128 位,然后才能进行加密或解密。

下表显示了 CTR 模式提供的接口的位宽:

CTR Mode bit-width

CTR 模式的优点

以下是计数器 (CTR) 模式的一些优点:

  • 硬件效率 - 与三种链接模式不同,CTR 模式允许对许多明文或密文块并行执行加密(或解密)。对于链接模式,算法必须完成一个块的计算才能继续进行下一个块。这将算法的最大吞吐量限制为单次执行分组加密或解密所需时间的倒数。在 CTR 模式下,吞吐量仅受获得的并行化程度的限制。

  • 软件效率 − 此外,虽然 CTR 模式支持并行执行,但具有并行处理能力的处理器(例如积极流水线、每个时钟周期多个指令调度、大量寄存器和 SIMD 指令)可以得到充分利用。

  • 预处理 − 无论给出明文还是密文,底层加密技术都会执行。因此,在保证有足够的内存和安全性的前提下,可以利用预处理来准备加密盒的输出,这些输出会馈送到 XOR 函数。当给出明文或密文输入时,唯一执行的操作是一系列 XOR 运算。这种方法显著提高了吞吐量。

  • 随机访问 − 可以使用随机访问处理明文或密文的第 i 个块。在链式模式下,必须先计算前 i-1 个块才能计算块 Ci。有些应用程序会保留密文,只需要解密一个块;在这些应用程序中,随机访问功能非常有用。

  • 简洁性 − CTR 模式比 ECB 和 CBC 模式更简单,因为它只需要实现加密算法,而不需要实现解密算法。当解密算法与加密算法差异很大时(例如 AES),这一点尤其重要。此外,也不需要创建解密密钥调度。

CTR 模式的缺点

CTR 模式的主要缺点是接收端和发送端必须维护一个同步计数器。丢失此计数器可能会导致明文恢复错误。

广告