news 2026/2/8 18:02:02

消息认证码(MAC)与HMAC的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
消息认证码(MAC)与HMAC的关系

作者:chen-true@qq.com

仅供学习交流,如有错误恳请指出!

===========================================

一、消息认证码(MAC)的概念

密码学上的MAC是指消息认证码(Message Authentication Code),是一种用于保证消息的完整性和认证性的密码学技术。它的核心目标是解决以下两个问题:

·完整性:消息在传输过程中是否被篡改?

·认证性:这个消息是否确实来自正确合法的发送方?

注意:我们在前面讲到过哈希函数,但是单纯的哈希函数只能提供消息的完整性,而无法对消息进行认证。

1)MAC的工作原理

1、通信双方(Alice和Bob)共享一个相同的密钥K(这是一个关键点,MAC是对称密码学的技术)。

2、发送方(Alice)对要发送的原始消息M, 使用密钥K和一个特定的MAC算法进行计算,生成一个固定长度的短数据块,称为MAC值或标签,记为Tag = MAC(K, M)

3、Alice将原始消息M和计算出的Tag一起发送给Bob。

4、接收方(Bob)收到M和Tag后,使用自己持有的相同密钥K和相同的MAC算法对收到的消息M重新计算一次Tag,记为Tag_calculated= MAC(K, M)

5、Bob将自己计算出的Tag_calculated与收到的Tag进行比较,如果两者完全相同,则证明:

·消息是完整的:M没有被篡改(因为任何对M的修改都会导致MAC值完全不同)。

·消息是认证的:发送者确实拥有密钥K,所以很可能是合法的发送方Alice。

关键特性:

·密钥依赖性:没有密钥,无法伪造有效的MAC。

·抗碰撞性:很难找到两个不同的消息产生相同的MAC值。

·不可逆性:无法从MAC值反推出原始消息或密钥。

图 MAC验证流程

2)MAC的实现

消息认证码(MAC)本质上是一种密码学的设计思想或安全目标(而不是某种具体的算法),其核心目的是解决“消息完整性和认证”问题。

为了实现这一思想,密码学家设计了许多具体的算法。主要可以分为以下几大类:

1基于哈希函数的MAC(Hash-based MAC,HMAC

这是最常见、使用最广泛的一类,利用密码学哈希函数(如SHA-2,SHA-3)来构造MAC。

2基于分组密码的MAC(Block Cipher-based MAC)

利用AES等分组密码算法来构造。

·CBC-MAC:最古老的一种,在CBC加密模式下,取最后一个密文块作为MAC。但原始CBC-MAC对变长消息不安全。

·CMAC:由CBC-MAC改进而来,是NIST的标准。它通过处理最后一个分组并应用子密钥来避免长度扩展攻击,安全性高。比如基于AES的CMAC(即AES-CMAC)。

3、认证加密模式中的MAC(MAC within AEAD)

在现代密码学中,MAC思想常与加密功能集成,形成“认证加密”模式,一次性同时提供保密性、完整性和认证。

·GCM:Galois/Counter Mode。它使用CTR模式加密,同时利用一个在伽罗瓦域上的通用哈希函数快速生成认证标签(GMAC)。比如AES-GCM,这是目前TLS和许多协议中最主流的认证加密模式。

·CCM:先将消息用CBC-MAC认证,然后用CTR模式加密。相对GCM更保守,但性能稍差。

二、HMAC

HMAC是基于哈希函数的消息认证码(MAC),简单来说,HMAC是MAC的一种具体、安全、广泛使用的实现方式。

它并不是一个全新的概念,而是使用密码学哈希函数(如MD5,SHA-1,SHA-256)来构造MAC算法的一种标准化方案。

以“交通工具”和“汽车”的关系作为对比:

·MAC就像“交通工具”:它的功能是将人或物从A点运送到B点。

·HMAC就像“汽车”:它是一种具体、高效、广泛使用的实现“交通工具”功能的方式。

·但是除了“汽车”,还有其他实现“交通工具”的方式,比如“自行车”(CBC-MAC,GMAC等)。

1)HMAC的计算公式

早期人们尝试直接用MAC = Hash(K+M)的方式构造MAC,但存在一些安全弱点(如长度扩展攻击)。后来人们提供了一个更安全、更结构化的方法来利用哈希函数构建MAC,那就是HMAC。

公式:HMAC(K, M) = H( (K ⊕ opad) || H( (K ⊕ ipad) || M ) )

其中:

·H是具体选用的底层哈希函数(如MD5、SHA-256)。

·K是共享密钥。

·M是消息。

·opad(外填充)和 ipad(内填充)是固定的常量。

·|| 表示连接操作。

·⊕ 表示异或操作。

这种两次哈希加密钥混合的结构,有效地将密钥与消息在哈希过程的开始和结束都绑定起来,安全性得到了严格证明。

注意:HMAC是有固定的计算公式的,只是可以选用不同的底层哈希函数。

图 常见HMAC算法

2)MAC是否具有单向性的解释

HMAC的核心构造基于密码学哈希函数(如SHA-256),而哈希函数的核心属性之一就是单向性,因此HMAC也具有单向性。

但对于另一类MAC,例如基于分组密码的CBC-MAC,其底层是AES这样的可逆(加解密)函数。从纯函数角度看,如果知道密钥,AES的解密过程就是“逆运算”。因此,CBC-MAC的构造块本身不是数学单向函数。

从密码学安全目标看,评价一个MAC是否安全,并不严格要求其底层是数学单向函数,而是要求它满足以下实用安全属性,这些属性的综合效果在功能上等同于“单向”:

1、计算上不可伪造:这是MAC最核心的目标。不知道密钥 K 的攻击者,即使能获取任意数量(M,Tag)对,也无法为一条新的消息计算出有效的MAC。这被称为“存在性不可伪造”。

2、密钥隐藏性:从MAC值无法恢复出密钥K。这是HMAC单向性直接保证的,也是所有安全MAC必须有的。

3、抗碰撞性:很难找到两条不同的消息产生相同的MAC值。

因此对于CBC-MAC这类基于加密的MAC:虽然AES本身可逆,但密钥K是保密的。攻击者不知道K,就无法利用AES的可逆性来进行逆向计算。因此,在不知道密钥的前提下,一个安全的CBC-MAC对于攻击者来说,表现得就像一个单向函数——他们无法从输出推导出任何有用信息(密钥或有效的新MAC)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 11:28:33

最新主流 WMS 厂商排名,好用的 WMS 仓储管理系统推荐

在供应链数字化转型加速的 2025 年,仓储管理系统(WMS)已成为企业控制物流成本、提升运营效率的核心基础设施。QYResearch 数据显示,2024 年全球 WMS 市场销售额达 29.54 亿美元,预计 2031 年将增至 74.93 亿美元&#…

作者头像 李华
网站建设 2026/2/8 11:27:57

Anaconda安装TensorFlow-GPU详细教程

Anaconda 安装 TensorFlow-GPU 详细教程 在深度学习项目中,时间就是生产力。当你面对一个包含百万参数的神经网络模型时,使用 CPU 训练可能意味着连续几天的等待——而同样的任务,在一块支持 CUDA 的 NVIDIA 显卡上,或许只需几小…

作者头像 李华
网站建设 2026/2/7 2:11:41

FaceFusion:领先的人脸融合技术平台使用指南

FaceFusion:开启高精度人脸融合的全新可能 在数字内容创作飞速发展的今天,AI 驱动的人脸处理技术正以前所未有的方式改变着影视、直播与创意表达。无论是虚拟偶像的实时换脸,还是老照片修复中的面部重建,用户对“真实感”和“自然…

作者头像 李华
网站建设 2026/2/4 17:07:01

Lostlife2.0下载官网钓鱼网站识别技巧

Lostlife2.0下载官网钓鱼网站识别技巧 在智能视觉系统日益普及的今天,工程师们常常需要快速部署像YOLO这样的高性能目标检测模型。为了节省时间,很多人会直接搜索“Lostlife2.0 下载”或“YOLO预训练模型 官网”,点击排在前面的链接&#xff…

作者头像 李华
网站建设 2026/2/7 0:38:05

Qwen3-VL-30B实现航空航天器高精度识别

Qwen3-VL-30B实现航空航天器高精度识别 在一张模糊的高空侦察图像中,仅凭机翼的一角、尾喷口的轮廓,就要判断出这是哪款战斗机——这不仅是情报分析员日复一日面对的挑战,更是现代国防体系中最关键的认知瓶颈之一。 而在一段低帧率的红外视频…

作者头像 李华
网站建设 2026/2/7 17:59:11

16、Linux系统下外设使用指南

Linux系统下外设使用指南 1. Linux与数字成像设备通信概述 在掌握了GIMP基本操作和数字图像处理技巧后,如何让数字成像设备与GIMP进行通信成为新的关注点。使用数字扫描仪和相机能让GIMP的使用更加有趣。本文的快速提示主要以Linux为中心,在其他UNIX变体系统中,部分步骤可…

作者头像 李华