消息认证码 —— 消息被正确传送了吗

介绍:

消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC

消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值

根据任意长度的消息输出固定长度的数据,这一点和单向散列函数很类似。但是单向散列函数中计算散列值时不需要密钥,相对地,消息认证码中则需要使用发送者与接收者之前共享的密钥。

要计算MAC必须持有共享密钥,没有共享密钥的人就无法计算MAC值,消息认证码正是利用这一性质来完成认证的。此外,和单向散列函数的散列值一样,哪怕消息中发生1比特的变化,MAC值都会产生变化, 消息认证码正是利用这一性质来确认完整性的。

消息认证码的使用步骤

(1)  发送者与接收者事先共享密钥。
(2)  发送者根据消息计算MAC值。
(3)  发送者将消息和MAC值两者发送给接收者。
(4)  接收者根据收到的消息计算MAC值(使用相同的密钥)。
(5)  接收者将自己计算的MAC值和收到的MAC值进行对比。
(6)  如果两个MAC值一致,接收者就可以判断出消息是没有被篡改过的。

消息认证码的密钥配送问题

发送者和接收者需要共享密钥,因此对称密码的密钥配送问题在消息认证码中也同样会发生。要解决密钥配送问题,我们需要像对称密码一样使用一些共享密钥的方法,例如公钥密码、 Diffie-Hellman密钥交换、密钥分配中心,或者使用其他安全的方式发送密钥。
+