1.介绍
消息认证码(message authentication code)是一种确认完整性并进行认证的技术,简称MAC。
输入:任意长度的消息和发送者和接收者的共享密钥,输出:固定长度的数据,称为MAC值。
消息认证码是一种与密钥相关联的单向散列函数。
2.消息认证码使用步骤
以Alice银行向Bob银行发送消息为例
3.消息认证码的密钥配送问题
消息认证码的共享密钥需要事先发送给接收者,所以有密钥配送问题。
4.应用实例
- SWILT(环球银行金融电信协会)
- IPsec(互联网基本通信协议)
- SSL/TLS(网上购物等场景中使用的通信协议)
5.消息认证码的实现方法
- 使用单项散列函数实现(HMAC)
- 使用分组密码实现
分组密码秘钥作为消息认证码的共享密钥,使用CBC模式将消息全部加密。由于消息认证码不需要解密,只用来认证,所以只保留最后一个分组的密文,而且最后一个分组的密文受消息与秘钥的双重影响,所以可以将他作为消息认证码。
6.HMAC详细介绍
6.1 介绍
HMAC是使用单向散列函数实现消息认证码的一种方式,其中H指的是hash.可以使用任何高强度的单项散列函数。
6.2 步骤
7.攻击
7.1 重放攻击
mallory截取MAC值和信息,将该信息重复发送.
防御方式
- 序号——需要记住序号
- nonce——通讯的数据量增加
- 时间戳——通讯延迟
7.2 密钥推测攻击
和单项散列函数一样,消息认证码也可以进行暴力破解和生日攻击。
伪随机数生成器必须是高强度的
8.消息认证码无法解决的问题
- 对第三方证明
- 防止否认