不知何故,我不理解HMAC。
我曾经问过“为什么我们需要HMAC,而我们已经拥有公钥签名?”(链接至Stack Overflow),我认为我懂了一些。更容易计算等等...
但是,我不明白的是为什么我们需要HMAC,或者说它们解决了什么问题。
从我的理解来看,HMAC...
现在,如果我可以以一种不被篡改的秘密方式交换此密钥,我也可以以完全相同的秘密方式交换消息,难道不是吗?
好的,现在你可能会争辩说你只需要交换密钥一次,但是你可能有多个消息。没问题。
但是,现在如果我们有一个必须由所有参与方保密的秘密密钥,我们也可以直接使用完全相同的秘密密钥进行对称加密来加密消息,难道不是吗?
当然,HMAC应该提供防篡改的解决方案,但是如果我只有一个加密的消息,没有秘密密钥和合理的加密算法,我无法以这样的方式更改该加密消息,即a)解密仍然有效,并且b)出现有意义的解密消息。
那么,我实际上需要HMAC用于什么? 或-我错过了什么要点?
我曾经问过“为什么我们需要HMAC,而我们已经拥有公钥签名?”(链接至Stack Overflow),我认为我懂了一些。更容易计算等等...
但是,我不明白的是为什么我们需要HMAC,或者说它们解决了什么问题。
从我的理解来看,HMAC...
- 提供了一种确保消息未被篡改的方法,
- 由秘密的对称密钥进行"保护"。
现在,如果我可以以一种不被篡改的秘密方式交换此密钥,我也可以以完全相同的秘密方式交换消息,难道不是吗?
好的,现在你可能会争辩说你只需要交换密钥一次,但是你可能有多个消息。没问题。
但是,现在如果我们有一个必须由所有参与方保密的秘密密钥,我们也可以直接使用完全相同的秘密密钥进行对称加密来加密消息,难道不是吗?
当然,HMAC应该提供防篡改的解决方案,但是如果我只有一个加密的消息,没有秘密密钥和合理的加密算法,我无法以这样的方式更改该加密消息,即a)解密仍然有效,并且b)出现有意义的解密消息。
那么,我实际上需要HMAC用于什么? 或-我错过了什么要点?