CCM模式

CCM 模式带有密文分组链接消息验证码的计数器模式带有CBC-MAC 的CTR模式)是块密码的一种工作模式。它是一种认证加密,旨在提供身份验证机密性。 CCM 模式仅针对分组长度为 128 位的分组密码定义。 [1]

必须谨慎选择 CCM 的随机数,以免对同一个密钥重复使用。这是因为 CCM 是计数器 (CTR) 模式的派生,而后者实际上是一种流密码[2]

加密与认证

[编辑]

顾名思义,CCM 模式结合了用于加密的计数器 (CTR) 模式和用于身份验证的密码块链消息身份验证码 (CBC-MAC) 。这两个原语以“先验证后加密”(MAC then Encrypt, MtE)的方式应用:首先对消息计算 CBC-MAC,以获得消息验证码 (MAC) ,然后使用计数器模式对消息和 MAC 进行加密。主流观点认为,只要加密中使用的计数器值不与身份验证中使用的(预)初始化向量冲突,就可以将相同的加密密钥用于两者。基于底层分组密码的安全性,该组合存在可证明安全性[3] 。该证明还适用于任何块大小以及任何大小的强加密伪随机函数的 CCM 推广(因为在计数器模式和 CBC-MAC 中,块密码仅在一个方向上使用)。

CCM 模式由Russ Housley 、Doug Whiting 和Niels Ferguson设计。在开发 CCM 模式时,Russ Housley 在RSA 实验室工作。

Zigbee标准中使用了 CCM 的一个微小变体,称为 CCM*。 CCM* 包括 CCM 的所有功能,还提供仅加密功能。 [4]

性能

[编辑]

CCM 需要对认证加密信息的每个块进行两次分组密码加密操作,并对关联的经过验证的数据的每个块进行一次加密。

根据Crypto++基准测试,AES CCM 在 32 位模式下的Intel Core 2 处理器上的运行效率为每字节28.6周期。 [5]

效率问题:

  • CCM 不是带有关联数据的“在线”认证加密 (AEAD) ,因为必须提前知道消息(和关联数据)的长度。
  • 在MAC构造中,关联数据的长度使用可变长度编码,而这可能比机器字更短。如果关联数据很长(这种情况并不常见), MAC 可能出现性能下降。
  • 关联数据是在消息数据之后处理的,因此无法预先计算静态关联数据的状态。

专利

[编辑]

偏移码本 (OCB) 模式的提交推动了 CCM 模式的发展与纳入IEEE 802.11i标准。由于该 OCB 正在申请专利,因此有人反对加入 OCB 模式。对于标准的实施者而言,包含专利算法意味着许可复杂性的增加。

虽然基于这些知识产权问题对 OCB 模式的纳入存在争议,但人们一致认为,简化认证加密系统是可取的。因此Housley等人开发了 CCM 模式,作为不受专利阻碍的潜在替代方案。

尽管 CCM 模式的效率略低于 OCB 模式,但相比之下,无专利解决方案比因专利许可问题而复杂化的解决方案更可取。因此,CCM 模式继续成为 IEEE 802.11i 标准的强制组件,而 OCB 模式则降级为可选组件状态,最终被完全删除。

使用

[编辑]

CCM 模式应用于IEEE 802.11i (如CCMPWPA2的 CCM 加密协议)、 IPsec[6]TLS 1.2, [7]以及蓝牙低功耗(从蓝牙 4.0开始)。 [8]它可用于 TLS 1.3,但在OpenSSL中默认不启用。 [9]

参见

[编辑]

参考

[编辑]
  1. ^ Counter with CBC-MAC (CCM). September 2003. 
  2. ^ Housley, Russ. rfc4309. IETF. December 2005: 3 [2023-12-04]. (原始内容存档于2021-05-06). AES CCM employs counter mode for encryption. As with any stream cipher, reuse of the same IV value with the same key is catastrophic. 
  3. ^ Jakob Jonsson, On the Security of CTR + CBC-MAC (PDF). [2023-12-04]. (原始内容存档 (PDF)于2024-05-14). 
  4. ^ IEEE Standard for Local and metropolitan area networks--Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs) (PDF). IEEE Standards: 229. 2011-09-05 [2015-12-18]. (原始内容存档 (PDF)于2017-09-19). 
  5. ^ Crypto++ 5.6.0 Benchmarks. Crypto++. [6 September 2015]. (原始内容存档于2008-10-15). 
  6. ^ RFC 4309 Using Advanced Encryption Standard (AES) CCM Mode with IPsec Encapsulating Security Payload (ESP)
  7. ^ RFC 6655 AES-CCM Cipher Suites for Transport Layer Security (TLS)
  8. ^ Bluetooth Low Energy Security. [2017-04-20]. (原始内容存档于2016-04-02). 
  9. ^ Caswell, Matt. Using TLS1.3 With OpenSSL. OpenSSL blog. 2017-05-04 [2018-12-29]. (原始内容存档于2017-09-16). 

外部链接

[编辑]