Hash

提高此標籤的安全性

  • November 15, 2016

所以我們有協議:

[Math Processing Error] $ Bob \to Alice \Rightarrow m\ ||\ h(m, ``secretTag") $

在上述場景中,一條帶有身份驗證標籤的消息被傳遞給 Alice,以證明該消息是由 Bob 發送的。

做標籤的更好方法是什麼?我怎樣才能將密鑰合併到其中?

有人建議使用數字簽名或 HMAC,這些如何更好?

請閱讀有關 HMAC 的文章。您正在嘗試的正是章節設計原則中描述的內容:

HMAC 規範的設計是由於存在對將密鑰與散列函式相結合的更簡單機制的攻擊。例如,可以假設 HMAC 提供的相同安全性可以通過 $ MAC = H(key ∥ message) $ . 然而,這種方法有一個嚴重的缺陷:對於大多數散列函式,很容易在不知道密鑰的情況下將數據附加到消息中並獲得另一個有效的 MAC(“長度擴展攻擊”)。…

您的想法只有兩個不同:

  • 顛倒消息和鍵/標籤的順序
  • 有一個“標籤”的想法,我只能假設它是密碼的常見情況:低熵,不適合用作加密密鑰。

所以基本上你應該只使用 HMAC(如果這符合你的需要),但首先將你的標籤放入基於密碼的密鑰派生函式中,例如PBKDF2scryptbcrypt。然後該密鑰可用於 HMAC。

另一方面,數字簽名也提供不可否認性,而 HMAC 不提供,因為發送者和接收者都知道相同的對稱密鑰,因此都可以創建 HMAC。

引用自:https://crypto.stackexchange.com/questions/41499