MAC算法

-- TOC --

MAC:Message Authentication Code

Hash算法只可以验证数据的完整性,但是无法保证数据没有被篡改。比如中间人截获了消息,篡改后,使用相同的Hash算法计算Hash值,即中间人同时篡改了消息内容和消息摘要,然后再发给接受者。此时的接受者,是无法判断消息有无被篡改的,无法判断此消息来自正确的发送者,因为Hash值正确。

MAC算法通过通信双方共享的一个key,解决的上述问题。(通过MAC算法只能证明消息是key生成的,如果key泄漏的话,并不能证明发送方是谁。)

在密码学中,MAC算法有两种形式,分别是CBC-MAC算法和HMAC算法。在HTTP中应用最多的MAC算法是HMAC算法。

HMAC(Hash-based Message Authentication Code)算法使用Hash算法作为加密基元,HMAC结合Hash算法有多种变种,比如HMAC-SHA-1、HMAC-SHA256、HMAC-SHA512。因此MAC算法也经常被称作HMAC算法。关于hmac算法的详情可以参看RFC2104,这里包含了HMAC-MD5算法的C语言实现。

同公私钥体系相比,因为MAC的密钥在发送方和接收方是一样的,所以发送方和接收方都可以来生成MAC,而公私钥体系因为将公钥和私钥分开,所以增加了不可抵赖性。

前述已经提到了MAC算法的两个缺陷

  1. 通过MAC算法验证的消息,只能证明消息有key生成,如果key泄漏,不能证明谁;
  2. 消息的验证只与key绑定,通信双方都有key,无法提供不可抵赖性。

本文链接:https://cs.pynote.net/se/jjm/202304151/

-- EOF --

-- MORE --