第八章 消息认证码
对消息认证码的攻击
1.重放攻击
并不破解消息认证码,而是将正确的MAC值保存下来重复利用
防御重放攻击的方法
①序号:约定每次都对发送的消息赋予一个递增的编号(序号),并且在计算MAC值时将序号也包含在消息中;
②时间戳:约定在发送消息时包含当前的时间,如果收到以前的消息,即便MAC值正确也将其当作错误的消息来处理;
③nonce:在通信之前,接收者先向发送者发送一个一次性的随机数,这个随机数一般称为nonce。发送者在消息中包含这个nonce并计算MAC值。
2.密钥推测攻击
和对单向散列函数的攻击一样,对消息认证码也可以进行暴力破解以及生日攻击;
例如HMAC中利用单向散列函数的单向性和抗碰撞性来保证无法根据MAC值推测出密钥。
消息认证码无法解决的问题
由于发送方和接收者共享相同的密钥
1.对第三方的证明
无法向第三方证明是对方计算了MAC值而不是自己
2.防止否认
无法防止发送方或接收方否认其发送的消息