MAC 基元可用于验证没有人篡改您的数据。与接收者共享对称密钥的发送者可以计算指定消息的身份验证标记,让接收者验证消息是否来自预期的发送者且未经修改。
MAC 具有以下属性:
- 真实性:创建可验证的 MAC 标记的唯一方法是知道密钥。
- 对称:计算和验证代码需要同一密钥。
MAC 可以是确定性的,也可以是随机的,具体取决于算法。Tink 目前未实现不确定性 MAC 算法。您只能将 MAC 用于消息身份验证,而不应将其用于其他目的,例如生成伪随机字节(如需了解详情,请参阅 PRF)。
如果您需要非对称基元,请参阅数字签名。
选择密钥类型
我们建议在大多数情况下使用 HMAC_SHA256,但您也可以使用其他选项。
一般来说,以下情况是正确的:
- HMAC_SHA512 的速度更快,具体取决于您的消息大小以及所用硬件的具体情况。
- HMAC_SHA512 是最保守的模式,可用于几乎不限数量的消息。
AES256_CMAC 在支持 AES-NI 硬件加速的系统上速度最快。
最低限度的安全保证
- 至少 80 位身份验证强度
- 防范所选明文攻击下的存在伪造行为
- 针对密钥恢复攻击提供至少 128 位的安全性,适用于多用户场景(攻击者的目标不是特定密钥,而是一组最多 232 个密钥中的任意密钥)
示例用例
请参阅我希望保护数据免遭篡改。