Hash HTTP请求的真实性和完整性

Hash HTTP请求的真实性和完整性,hash,http-post,digital-signature,integrity,authenticity,Hash,Http Post,Digital Signature,Integrity,Authenticity,我有一个API端点,外部网站可以在这里提交POST请求。 什么是确保请求是真实的、不被篡改的最好方法,这样它们就尊重了完整性原则 因为数据没有价值,比如信用卡信息,所以我不需要HTTPS集成 我已经看了HMAC和数字签名,我相信第二种选择会更好,但我不确定这是否是一种方式 同样,对请求进行散列并在我的服务器上验证是否足够?HMAC和数字签名都提供完整性和身份验证: 完整性-因为它们都基于散列。HMAC是基于哈希的消息身份验证代码。数字签名对某些消息的哈希进行加密 身份验证-因为HMAC使用对称

我有一个API端点,外部网站可以在这里提交POST请求。 什么是确保请求是真实的、不被篡改的最好方法,这样它们就尊重了完整性原则

因为数据没有价值,比如信用卡信息,所以我不需要HTTPS集成

我已经看了HMAC和数字签名,我相信第二种选择会更好,但我不确定这是否是一种方式


同样,对请求进行散列并在我的服务器上验证是否足够?

HMAC和数字签名都提供完整性和身份验证:

  • 完整性-因为它们都基于散列。HMAC是基于哈希的消息身份验证代码。数字签名对某些消息的哈希进行加密
  • 身份验证-因为HMAC使用对称密钥,而数字签名使用非对称私钥。机密/私钥只能与知道它的人一起使用=身份验证。在HMAC中检查接收方的秘密/私钥-接收方也知道秘密,这就是我们称之为对称的原因。在数字签名中检查接收方的秘密/私钥-接收方还可以获得可在可信第三方上检查的公共证书
主要区别-HMAC消息不能由第三方检查/验证,只有知道秘密的人才能验证消息。数字签名消息具有公共证书,任何人都可以通过解密带有附加公钥的消息、计算散列并在特定的受信任端检查公钥来检查消息所有者

结论-如果您不需要任何人能够检查某些邮件是否确实属于发件人,请使用HMAC

类似地,散列请求并在我的服务器上验证它就足够了吗


不。中间的人可以修改您的邮件并附加修改邮件的哈希。散列提供了完整性,这意味着消息修改也会改变散列,但黑客不担心散列相等,因为他只是用内容和散列完全替换消息!HMAC中的一些秘密用法阻止了这样的消息替换:中间的人仍然可以更改消息,但他无法重新计算哈希,因为他不知道这个秘密。

您能解释一下黑客如何用内容和哈希替换消息吗?我的意思是计算新消息的散列。黑客难道不需要共享秘密吗?@saintlyzero,我相信TC在这里指的是没有秘密的简单散列——因为秘密的用法指的是HMAC。我关于替换消息和散列的回应就是这样的(没有秘密)。