密码学初级教程(五)消息认证码MAC-Message Authentication Code
密码学家工具箱中的6个重要的工具:
- 对称密码
- 公钥密码
- 单向散列函数
- 消息认证码
- 数字签名
- 伪随机数生成器
MAC能识别出篡改和伪装,也就是既可以确认消息的完整性,也可以进行认证。
消息认证码的输入包括任意长度的消息和一个发送者与接受者之间共享的密钥,它可以输出固定长度的数据,这个数据就是MAC。
消息认证码是一种与密钥相关联的单向散列函数。
消息认证码的应用实例
- SWIFT(Society for Wordwide Interbank Financial Telecommunication,环球银行金融电信协会)
银行和银行之间是通过SWIFT来传递交易消息的。而为了确认消息的完整性以及对消息进行验证,SWIFT中使用了消息认证码。
- IPsec
IPsec是对互联网基本通信协议-IP协议(Internet Protocol)增加安全性的一种方式。
- SSL/TLS
我们在网上购物等场景中所使用的通信协议。
消息认证码的实现方法
- 使用单向散列函数实现
使用SHA-1、MD5之类的单向散列函数可以实现消息认证码,其中一种实现方法称为HMAC。
- 使用分组密码实现
使用DES、AES之类的分组密码可以实现消息认证码。
- 其他实现方法
使用流密码和公钥密码等也可以实现消息认证码。
HMAC
HMAC是一种使用单向散列函数来构造消息认证码的方法,其中H为Hash的意思。
使用SHA-1、MD5、RIPEMD-160所构造的HMAC,分别称为HMAC-SHA-1、HMAC-MD5和HMAC-RIPEMD。
对消息认证码的攻击
- 重放攻击
- 防御重放攻击的方式
- 序号
- 时间戳
- nonce
- 密钥推测攻击