Skip to content

消息认证码

Message authentication code · MAC

用共享密钥生成并验证消息完整性标签的机制。

条目类型
模型

形式陈述

消息认证码方案由

(Gen,Tag,Vrfy)

组成。kGen(1λ),标签 tTagk(m),验证 Vrfyk(m,t){0,1}。正确性要求诚实生成的标签被接受。典型的EUF-CMA 实验允许攻击者自适应查询消息标签;计算安全要求每个 PPT 攻击者为此前未查询的消息 m 输出有效标签 t 的概率都可忽略。

直觉

MAC 用共享密钥为消息生成标签,接收者据此验证“知道共享密钥的一方认可了这条消息”,并检测传输后的篡改。它不隐藏消息,也通常不能向第三方提供可验证的不可否认性,因为共享密钥双方都能生成标签。安全目标允许攻击者先查询许多消息的标签,再要求不能为新消息伪造有效标签。

例子与边界

MAC 是带秘密密钥的完整性原语,验证者凭密钥区分合法标签与伪造;密码哈希函数是公开、无密钥的压缩映射,只靠抗碰撞等性质不能证明消息来自某个共享密钥方。HMAC 正是把哈希嵌入有密钥构造,而不是把裸哈希改名为 MAC。

标签 t=H(m) 不使用秘密密钥,任何人都能伪造,不是安全 MAC。把普通哈希直接写成 H(km) 也可能受具体哈希结构攻击;HMAC 等构造有专门分析。重放一条旧的合法 (m,t) 不一定违反基本 EUF-CMA,因为消息并非新鲜;防重放需序号、nonce 或协议状态。

HMAC 对哈希函数采用内外两层 keyed 结构,避免直接前缀哈希的长度扩展问题。接收端应对完整协议字段、长度和上下文计算标签,并在处理消息前验证;截断标签会把通用猜测成功率提高到约 2t

复用一次性 MAC 密钥或 Wegman–Carter 中的 nonce 可泄露关系。只比较标签前几个字节、使用非恒定时间比较或在失败时返回不同错误,都可能扩大攻击面;MAC 也不阻止旧的合法消息被重放。

推论与应用

MAC 用于消息完整性、协议认证和认证加密构造。安全结论依赖查询模型与伪造定义;强不可伪造还禁止为已查询消息产生新的有效标签,比普通 EUF-CMA 更强。

它与 对称加密结合得到 认证加密,底层可由 伪随机函数构造;通用哈希配合一次性掩码还可给出 Wegman–Carter 类信息论或几乎通用 MAC。这里使用的是随机函数族的碰撞界与密钥/nonce 规则,不是把剩余哈希引理的提取结论重复当作认证证明。网络报文、API 请求、软件包元数据和密钥确认都使用 MAC;公钥可验证场景则需要数字签名。

参考资料
  • Dan Boneh and Victor Shoup, A Graduate Course in Applied Cryptography, version 0.6, 2023,Chs. 6–7。
  • Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 3rd ed., CRC Press, 2020,Ch. 4。
关系图谱10 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系