我正在开发一个定期传输少量数据(16/18 字节)的系统,其中唯一会改变的部分是一个 4 字节计数器,每次传输都会递增。数据本身不敏感,因此加密不是强制性的,但接收方必须使用 MAC 算法验证数据,我选择了 HMAC-SHA。鉴于对于连续传输,只有少数数据有效负载会发生变化(计数器增量),在没有数据加密的情况下使用 HMAC-SHA 是否安全,或者这种实现可能导致攻击者生成错误的 MAC?
带或不带数据加密的 HMAC?
信息安全
加密
验证
hmac
2021-09-05 11:05:49
2个回答
为了建立消息完整性,是的,HMAC-SHA 应该没问题。
您可能担心的一个问题是在中间人攻击的情况下,消息可能被截获、计数器更改、HMAC 重新生成并将修改后的消息传递给原始收件人。在这种情况下,您可以考虑使用公钥算法对 HMAC 哈希(实际上是数字签名)进行签名,以验证发件人的身份。
编辑:除非您的钥匙落入坏人之手,否则这不是问题。
对加密的攻击不是对 MAC 的攻击,因为它们是用于不同目的的两个独立实体。你自己回答了这个问题。由于您不认为数据对嗅探敏感,因此您不需要加密。
但是,对于 MAC,您确实会遇到以下可能需要加密其他数据的问题:
密钥共享:共享产生哈希的“密钥”
向第三方证明(不可否认性)#1 中的数据或非对称密钥确实来自您,而不是您向其发送数据的人。因为他们现在可以使用与他们共享的密钥来冒充您...... MAC 具有对称性,因为它是“键控”哈希
要解决 #1 非对称加密,需要传输用于 HMAC 数据的密钥。要解决 #2 和/或验证 #1 中的非对称密钥,必须设置一些 PKI,无论是证书还是信任网络。