HMAC相对于对称加密有什么好处?

Gol*_*den 8 encryption hmac

不知怎的,我没有得到HMAC.

我曾经问过,为什么在我们有公钥签名时我需要HMAC?,我想我得到了这个.更容易计算,等等......

但是,我没有得到的是为什么我们需要HMAC,分别是他们正在解决的问题.

根据我的理解,HMACs ......

  • 提供一种方法来确保消息没有被篡改,
  • 被一个秘密但对称的密钥"保护".

因此,为了计算HMAC(最初或用于验证),我确实需要知道密钥.

现在,如果我可以秘密地交换这个密钥而不用它被篡改,我也可以用同样的秘密方式交换信息,而不会被篡改,不是吗?

好的,现在你可以争辩说你只需要交换一次密钥,但是你可能有多条消息.没关系.

但是,如果我们现在拥有一个必须由所有各方保密的密钥,我们也可以使用相同的密钥直接使用对称加密来加密消息,不是吗?

当然,HMAC应该提供防止篡改的解决方案,但如果我只有一个没有密钥和合理加密算法的加密消息,我就不能以a)解密仍然有效的方式改变该加密消息,并且b)出现一个有意义的解密消息.

那么我真的需要一个HMAC呢?或者 - 我失踪的地方在哪里?

小智 11

您假设在不知道用于加密的密钥的情况下无法篡改加密邮件.事实并非如此,这是一个危险的假设.即使您只能访问密文,也有几种可能的方法:

  • 消息后缀的损坏:这可能通过错误消息,时间和可能的其他方式泄漏有关内容的信息.
  • 某些模式(ECB,CFB和可能的其他模式)的消息范围损坏:与上述相同,但攻击者有更多方法可以触发所需行为.
  • 在单个块中翻转任意位(虽然不知道它们的初始值)和后续块(CFB)的损坏:如果攻击者知道某些位,他可以将它们设置为他想要的值.
  • 为流密码翻转整个消息中的任意位或为分组密码提供流密码等效模式:这可以完全避免损坏.

因此,在处理解密内容的单个字节之前,验证没有攻击者篡改消息是非常重要的.由于使用ad-hoc验证或简单散列进行此操作再次存在一些缺陷,因此需要MAC,其中HMAC是一个示例.