【发布时间】:2015-03-06 04:23:39
【问题描述】:
我一直在考虑将 HMAC 添加到 PHP mcrypt 加密中。
这是否只是简单地使用 hash_hmac 使用加密密钥对加密数据进行哈希处理并将其附加到加密数据中?然后在解密时分离出 HMAC,再次使用密钥 hash_hmac 其余数据并检查它是否与 HMAC 匹配。
我很困惑,因为在这个 SO 问题 When authenticating ciphertexts, what should be HMACed? 中它说:
您必须在 HMAC 输入中包含影响解密过程的所有内容,即不仅包括加密结果本身,还包括用于该加密的 IV,并且,如果整个协议支持算法敏捷性,您应该还要输入加密算法的规范(否则,攻击者可能会更改您的消息的标头以将“AES-256”的标签替换为“AES-128”的标签,您会在不知不觉中使用错误的算法解密)。
是这样吗?如果这是真的,为什么仅对加密数据使用 hash_hmac 不够?
【问题讨论】:
标签: php encryption