MAC vs Digital signature

时间:2024-03-30 09:01:33

MAC algorithm和数字签名的区别

MAC(Message Authentication Code)验证消息的完整性(防篡改)以及辨认是否来自于正确的来源(防伪造)。

防篡改(Integrity):从算法层面认为是完整的,消息并没有被修改过。

防伪造(Authentication):即使消息是完整的(仅仅从算法层面认为是完整的),但是整个消息确是被伪造的。

MAC  : { message being transmitted, Hash(original message + secret key) } 是否相等 Hash(message being transmitted + secret key)


这个secret key的存在同时保证了防篡改和防伪造,

如果没有secret key,那么message和hash值可以同时被修改,此时这个消息是被伪造的。

由于secret key的保密,attacker虽然可以篡改message,但是却无法生成对应的hash值,由此保证了【防篡改】。只要hash值不能伪造,那么那么整个消息也不能伪造,保证了【防伪造】。


上面的特性和数字签名的特性很相近,但是MAC只是针对于互相信任的双方(发送方和接收方,只有这两方具有secret key)而已,但是数字签名不仅仅限于双方,可以一方发送,多方接收(Non-repudiation),因为数字签名是不对称加密,公钥可以公开。

MAC vs Digital signature

参考文献:

https://crypto.stackexchange.com/questions/5646/what-are-the-differences-between-a-digital-signature-a-mac-and-a-hash