消息身份验证代码 (MAC)

MAC 基元可用于验证没有人篡改您的数据。与接收者共享对称密钥的发送者可以计算指定消息的身份验证标记,让接收者验证消息是否来自预期的发送者且未经修改。

MAC 具有以下属性:

  • 真实性:创建可验证的 MAC 标记的唯一方法是知道密钥。
  • 对称:计算和验证代码需要同一密钥。

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

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

选择密钥类型

我们建议在大多数情况下使用 HMAC_SHA256,但您也可以使用其他选项。

一般来说,以下情况是正确的:

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

最低限度的安全保证

  • 至少 80 位身份验证强度
  • 防范所选明文攻击下的存在伪造行为
  • 针对密钥恢复攻击提供至少 128 位的安全性,适用于多用户场景(攻击者的目标不是特定密钥,而是一组最多 232 个密钥中的任意密钥)

示例用例

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