消息身份验证代码 (MAC)

借助 MAC 基元,您可以验证是否有人篡改了您的数据。与收件人共享对称密钥的发件人可以为给定消息计算身份验证标记,以便收件人验证消息是否来自预期的发件人且未经修改。

MAC 具有以下属性:

  • 真实性:知道密钥是创建可验证 MAC 标记的唯一方法。
  • Symmetric:计算和验证标记需要使用相同的密钥。

MAC 可以是确定性的,也可以是随机的,具体取决于算法。Tink 目前未实现非确定性 MAC 算法。您应仅将 MAC 用于消息身份验证,而不要用于生成伪随机字节等其他用途(如需了解,请参阅 PRF)。

如果您需要使用非对称基元,请参阅数字签名

选择密钥类型

对于大多数用途,我们建议使用 HMAC_SHA256,但也有一些其他选项。

一般来说,以下情况成立:

  • HMAC_SHA512 的速度可能快也可能不快,具体取决于消息大小和您使用的硬件的具体情况。
  • HMAC_SHA512 是最保守的模式,几乎可以用于无限数量的消息。
  • 在支持 AES-NI 硬件加速的系统上,AES256_CMAC 的速度最快。

最低安全保障

  • 身份验证强度至少为 80 位
  • 在选择明文攻击下防范实存伪造
  • 至少 128 位安全性,可防范密钥恢复攻击,以及多用户场景(当攻击者不是针对特定密钥,而是针对最多 232 个密钥中的任意密钥时)

用例示例

请参阅我想保护数据免遭篡改