Skip to content

cmac

约 407 字大约 1 分钟

2025-04-15

What(是什么)

CMAC 是一种基于分组密码的消息认证码算法,是 CBC-MAC 的改进版本。

核心要素

  • 基于分组密码(如AES)
  • 使用两个子密钥K1和K2
  • 填充方式:ISO/IEC 9797-1 Padding Method 2
  • 输出长度:与分组密码相同

Why(为什么)

解决问题

  • CBC-MAC的安全性问题
  • 需要固定长度的MAC值
  • 需要高效的消息认证机制

技术优势

  • 安全性高于CBC-MAC
  • 支持任意长度消息
  • 计算效率高
  • 实现简单

When(何时)

适用场景

  • 需要消息认证的通信协议
  • 固件/软件完整性验证
  • 金融交易安全
  • 物联网设备认证

发展历程

  • 2002年:NIST提出
  • 2005年:成为标准
  • 现在:广泛用于各种安全协议

How(如何)

算法实现

  1. 子密钥生成:

    • 从主密钥派生K1和K2
  2. 处理流程:

    • 对消息进行分组
    • 应用CBC模式加密
    • 最后分组特殊处理
    • 输出MAC值

应用方式

  • 单独使用作为MAC
  • 与加密算法结合使用
  • 硬件实现加速

How Much(多少)

性能指标

  • 计算速度:接近底层分组密码
  • 内存占用:较小
  • 带宽消耗:固定长度输出
  • 密钥长度:与分组密码相同

安全强度

  • 安全性依赖于底层分组密码
  • 抗伪造攻击
  • 抗长度扩展攻击
  • 128位安全强度(使用AES-128)

实现成本

  • 开发成本:低
  • 部署成本:低
  • 维护成本:低
  • 兼容性好

贡献者