密码学
消息认证码(MAC)
别称: MAC, 密码学校验值
定义
使用对称密钥计算的短标签,用于对消息进行认证并检测篡改,计算与验证使用同一个共享密钥。
消息认证码(Message Authentication Code,MAC)是对消息使用对称密钥计算得到的定长标签,验证时必须使用相同的密钥。它提供完整性与真实性,但因为双方共享同一密钥,无法提供不可否认性。常见构造包括 HMAC(基于哈希,RFC 2104)、CMAC(CBC-MAC,NIST SP 800-38B)、GMAC(用于 GCM)、Poly1305(与 ChaCha20 组合形成 ChaCha20-Poly1305)以及基于 Keccak/SHA-3 的 KMAC。MAC 是 TLS 记录认证、IPsec AH、JWT HS256、API 请求签名以及各类 AEAD 模式的核心组件,标签比较必须采用常数时间方式以避免时序侧信道。
示例
- AWS Signature Version 4 请求采用 HMAC-SHA-256 进行认证。
- TLS 1.3 中使用的 ChaCha20-Poly1305 AEAD 通过 Poly1305 对密文进行认证。
相关术语
HMAC
基于密码学哈希函数的带密钥消息认证码结构,由 RFC 2104 与 FIPS 198-1 定义。
密码学哈希函数
将任意长度输入映射为固定长度摘要的确定性单向函数,具备抗碰撞、抗原像和抗第二原像三大安全性质。
数字签名
一种公钥密码学机制,用于证明消息或文档的真实性、完整性以及不可否认性。
对称加密
加密和解密使用同一个秘密密钥的加密方案,在密钥安全分发的前提下提供高速度和强机密性。
ChaCha20
由 Daniel J. Bernstein 设计的现代流密码,使用 256 位密钥和 96 位 nonce,常与 Poly1305 组合为 AEAD 算法 ChaCha20-Poly1305 广泛部署。
TLS (Transport Layer Security)
TLS (Transport Layer Security) — definition coming soon.