当我们有公钥签名时,为什么需要HMAC?

Gol*_*den 4 cryptography hmac public-key-encryption

序言:我对HMAC很新,所以如果问题有点愚蠢,请原谅我.

据我所知,HMAC用于确保消息未被篡改.所以基本上,它充当哈希码.但是,由于哈希算法已知,攻击者可以轻松地为消息的篡改版本计算新的哈希码.

这就是HMAC试图解决的问题:它们提供的哈希不仅基于应该被散列的消息,还基于加密密钥.这样,在不知道密钥的情况下无法计算消息的有效性.

到目前为止这是对的吗?

我现在的问题是:如果我们能够使用公钥签名实现相同的目标,我们需要什么样的HMAC?IIRC签名的工作方式完全相同:计算哈希并对其进行签名,以确保没有人篡改消息或哈希.

那么HMAC有什么意义呢?

Dav*_*rtz 5

与可比较的安全级别的任何已知公钥操作相比,HMAC的尺寸更小并且计算和验证的CPU更少.

  • @GoloRoden加密提供机密性,mac提供身份验证并防止修改.在实践中,您应该使用某种经过身份验证的加密,它结合了密码和mac. (3认同)
  • 不,不是真的。公钥签名将身份与签名关联起来,而与您没有共享秘密的人可以检查该签名。HMAC 只允许与您共享秘密的人检测到篡改。 (2认同)