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(如何)
算法实现
子密钥生成:
- 从主密钥派生K1和K2
处理流程:
- 对消息进行分组
- 应用CBC模式加密
- 最后分组特殊处理
- 输出MAC值
应用方式
- 单独使用作为MAC
- 与加密算法结合使用
- 硬件实现加速
How Much(多少)
性能指标
- 计算速度:接近底层分组密码
- 内存占用:较小
- 带宽消耗:固定长度输出
- 密钥长度:与分组密码相同
安全强度
- 安全性依赖于底层分组密码
- 抗伪造攻击
- 抗长度扩展攻击
- 128位安全强度(使用AES-128)
实现成本
- 开发成本:低
- 部署成本:低
- 维护成本:低
- 兼容性好