图解密码技术 - 消息认证码
Contents
消息认证码(Message Authentication Code)
是一种确认完整性并进行认证的技术。
对于单向散列函数
来说,主要的作用是为了确保消息的完整性
。但对于消息认证码
,主要作用是认证
,指的是消息来自正确的发送者
这一性质。
消息认证码
的输入包括任意长度的消息和一个发送者与接收者之间的共享密钥
,输出为一个固定长度的数据,称为MAC值
。
却别如下所示:
其实也就是不对比公开的单向散列函数
计算的散列值,而是换成了对比私有的单向散列函数
计算的“散列值”。
由于密钥只有收发消息的双方含有,所以第三方无法判断消息的来源,导致了消息认证码无法防止否认
。
消息认证码
的使用步骤可以简单的描述成下面这种形式:
消息认证码
主要存在的问题在于密钥的配送
。如果攻击者在密钥配送过程中获取了密钥,那么就能伪造消息认证码,从而进行攻击。
对消息认证码的攻击
重放攻击
假设攻击者Eve从Alice银行向Bob银行汇款100元,通过消息认证码计算后,将消息发送给Bob银行。攻击者Eve从中间劫持了这段数据,然后重复发送这一段数据给Bob银行。
在这种攻击方式中,Eve并不知道Alice和Bob之间的共享密钥。
解决方式可以是添加一个时间戳
,或者每个消息都给予一个唯一的序列号
。