不知何故,我没有得到 HMAC。
我曾经问过,当我们确实有公钥签名时,为什么我需要 HMAC?,我想我得到了这个。更容易计算,等等......
但是,我不明白为什么我们需要 HMAC,它们分别解决了什么样的问题。
据我了解,HMAC ...
- 提供一种方法来确保消息未被篡改,
- 由秘密但对称的密钥“保护”。
因此,为了计算 HMAC(无论是初始还是验证),我都需要知道密钥。
现在,如果我可以在不被篡改的情况下以秘密方式交换此密钥,我也可以以相同的秘密方式交换消息而不会被篡改,不是吗?
好的,现在您可以争辩说您只需要交换一次密钥,但您可能有多个消息。没关系。
但是,如果我们现在有一个必须由各方保密的密钥,我们也可以直接使用对称加密,使用相同的密钥来加密消息,不是吗?
当然,HMAC 应该提供防止篡改的解决方案,但是如果我只有一条没有密钥和合理加密算法的加密消息,我无法以 a) 解密仍然有效的方式更改该加密消息,并且 b)出现有意义的解密消息。
那么我实际上需要一个 HMAC 是为了什么?或者 - 我错过的重点在哪里?