【发布时间】:2013-02-10 17:50:45
【问题描述】:
不知何故我没有得到 HMAC。
我曾经问过Why do I need HMACs when we do have public key signatures?,我想我得到了这个。更容易计算,等等...
但是,我不明白为什么我们需要 HMAC,它们分别解决了什么样的问题。
据我了解,HMAC ...
- 提供一种方法来确保消息未被篡改,
- 由一个秘密但对称的密钥“保护”。
因此,为了计算 HMAC(无论是初始还是验证),我都需要知道密钥。
现在,如果我可以在不被篡改的情况下以秘密方式交换此密钥,我也可以在不被篡改的情况下以相同的秘密方式交换消息,不是吗?
好的,现在您可以争辩说您只需要交换一次密钥,但您可能有多个消息。没关系。
但是,如果我们现在有一个必须由各方保密的密钥,我们也可以直接使用对称加密,使用相同的密钥来加密消息,不是吗?
当然,HMAC 应该提供防止篡改的解决方案,但是如果我只有一条没有密钥和合理加密算法的加密消息,我无法以 a) 解密仍然有效的方式更改该加密消息, b) 出现有意义的解密消息。
那么我需要 HMAC 究竟是为了什么? 或者 - 我错过的重点在哪里?
【问题讨论】:
-
我认为一种可能的用途是,如果您要交换大量信息,并且不希望对所有信息进行加密和解密的计算开销 - 特别是对于移动和嵌入式设备,这可能会成为一个问题.
-
我很高兴这个问题得到了正确回答,但这个问题应该在crypto.stackexchange.com 提出(如果尚未提出)。
标签: encryption hmac