不知怎的,我没有得到HMAC。
我曾经问Why do I need HMACs when we do have public key signatures?,我想我得到了这个。更容易计算,等等......
但是,我没有得到的是为什么我们需要HMAC,分别是他们正在解决的问题。
根据我的理解,HMACs ......
因此,为了计算HMAC(最初或用于验证),我确实需要知道密钥。
现在,如果我能以秘密的方式交换这个密钥而不会被篡改,我也可以用同样的秘密方式交换信息而不会被篡改,不是吗?
好的,现在你可以说你只需要交换一次密钥,但是你可能有多条消息。没关系。
但是如果我们现在有一个必须保密的密钥,我们也可以使用相同的密钥直接使用对称加密来加密消息,不是吗?
当然,HMAC应该提供防止篡改的解决方案,但是如果我只有一个没有密钥和合理加密算法的加密消息,我就不能以a)解密仍然有效的方式改变该加密消息, b)出现有意义的解密信息。
那么我真的需要一个HMAC呢? 或者 - 我失踪的地方在哪里?
答案 0 :(得分:11)
您假设在不知道用于加密的密钥的情况下无法篡改加密邮件。事实并非如此,这是一个危险的假设。即使您只能访问密文,也有几种可能的事情:
因此,在处理解密内容的单个字节之前,验证没有攻击者篡改消息是非常重要的。由于使用ad-hoc验证或简单散列这样做有一些陷阱,因此需要MAC,其中HMAC就是一个例子。