2013-01-17 172 views
3

序言:我對HMAC很陌生,所以請原諒我,如果問題有點愚蠢。爲什麼我們需要公鑰簽名時需要HMAC?

就我所知,HMAC用於確保消息沒有被篡改。所以基本上,它作爲一個哈希碼。但是,由於散列算法是已知的,攻擊者可以很容易地爲消息的篡改版本計算新的散列碼。

這是HMAC試圖解決的問題:它們提供的散列不僅基於應該散列的消息,而且也基於密碼密鑰。通過這種方式,無法在不知道密鑰的情況下計算消息的有效性。

這是正確的嗎?

我現在的問題是:如果我們可以使用公鑰簽名實現相同的目標,我們需要什麼HMAC? IIRC簽名的工作方式完全相同:計算哈希並簽名以確保沒有人篡改郵件或哈希。

那麼HMAC有什麼意義?

回答

4

HMAC的規模較小,所需計算和驗證的CPU比任何已知的可比較安全級別的公鑰操作要少得多。

+0

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

+1

不,不是真的。公鑰簽名將身份與簽名關聯起來,簽名可以由沒有共享密鑰的人檢查。 HMAC只允許您與您共享密鑰的人檢測到篡改。 –

+0

然後我還沒有理解他們的意思。如果我有共享密鑰,爲什麼不使用AES進行加密/解密? –