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

时间:2013-02-10 09:29:19

标签: encryption hmac

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

我曾经问Why do I need HMACs when we do have public key signatures?,我想我得到了这个。更容易计算,等等......

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

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

  • 提供了一种确保消息未被篡改的方法,
  • 由一个秘密但对称的密钥“保护”。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:11)

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

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

因此,在处理解密内容的单个字节之前,验证没有攻击者篡改消息是非常重要的。由于使用ad-hoc验证或简单散列这样做有一些陷阱,因此需要MAC,其中HMAC就是一个例子。