目录
简介
在密码学中,消息认证码(Message authentication code,缩写为MAC),又译为消息鉴别码、文件消息认证码、讯息鉴别码、信息认证码,是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过,不管更改的原因是来自意外或是蓄意攻击。同时可以作为消息来源的身份验证,确认消息的来源。
消息认证码的算法中,通常会使用带密钥的散列函数(HMAC),或者块密码的带认证工作模式(如GCM,CCM)。
信息鉴别码不能提供对信息的保密,若要同时实现保密认证,同时需要对信息进行加密。
(以上来自维基百科)
MAC 代表消息认证码(Message Authentication Code),是一种用于确保消息完整性和认证的安全工具。MAC 结合了一段消息和一个秘密密钥,生成一个固定长度的认证码。这个认证码在传输或存储消息时一起发送或存储,以便接收者可以验证消息的完整性和来源。
MAC的工作原理
- 消息和密钥输入:MAC 算法接受两种输入:消息(数据)和一个秘密密钥。
- 生成认证码:使用消息和密钥,通过 MAC 算法生成一个固定长度的输出,即认证码。
- 发送消息和认证码:将消息和生成的认证码一起发送给接收者。
- 验证:接收者使用相同的密钥和收到的消息,通过相同的 MAC 算法生成一个认证码,然后将其与发送的认证码进行比较。如果两个认证码匹配,则消息被认为是完整且未被篡改的。
常见的MAC算法
- HMAC (Hash-based Message Authentication Code):
使用哈希函数(如 SHA-256)和一个密钥来生成认证码。
公式:HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))
其中,H 是哈希函数,K 是密钥,m 是消息,opad 和 ipad 是填充常量。
CMAC (Cipher-based Message Authentication Code): - 基于分组加密算法(如 AES)生成认证码。
比 HMAC 更适合硬件实现,因为它使用了对称加密的基本构件。
MAC 的用途
完整性验证:确保消息在传输或存储过程中没有被修改。
认证:验证消息的来源,确保发送者是合法的。
防重放攻击:结合时间戳或序列号,可以防止消息被重放。