2013-01-17 125 views
3

序言:我对HMAC很陌生,所以请原谅我,如果问题有点愚蠢。为什么我们需要公钥签名时需要HMAC?

就我所知,HMAC用于确保消息没有被篡改。所以基本上,它作为一个哈希码。但是,由于散列算法是已知的,攻击者可以很容易地为消息的篡改版本计算新的散列码。

这是HMAC试图解决的问题:它们提供的散列不仅基于应该散列的消息,而且也基于密码密钥。通过这种方式,无法在不知道密钥的情况下计算消息的有效性。

这是正确的吗?

我现在的问题是:如果我们可以使用公钥签名实现相同的目标,我们需要什么HMAC? IIRC签名的工作方式完全相同:计算哈希并签名以确保没有人篡改邮件或哈希。

那么HMAC有什么意义?

回答

4

HMAC的规模较小,所需计算和验证的CPU比任何已知的可比较安全级别的公钥操作要少得多。

+0

好的,但概念上它是一样的? –

+1

不,不是真的。公钥签名将身份与签名关联起来,签名可以由没有共享密钥的人检查。 HMAC只允许您与您共享密钥的人检测到篡改。 –

+0

然后我还没有理解他们的意思。如果我有共享密钥,为什么不使用AES进行加密/解密? –