Hash

簡單的 KMAC-128 或 KMAC-256 雜湊作為 KDF 是否安全?

  • October 28, 2022

語境

**我正在嘗試為密鑰派生建構一個簡單的協議。**我想使用SHA-3系列雜湊函式,(據我所知)不應與HMAC結合使用,因為它們的安全屬性使 HMAC 變得多餘。因此,使用 HMAC 的HKDF也不適合使用 SHA-3 系列散列函式進行密鑰派生。

提議的協議

假設 Alice 和 Bob 得到一個共享秘密(例如,通過ECDH)R一個乙 $ R_{AB} $ ,但他們想根據這個秘密推導出一些適用於對稱密碼的密鑰材料。在我提出的協議中,Alice 想與 Bob 通信,所以她生成了一個隨機序列n $ n $ 有長度256 $ 256 $ 比特並將這個序列發送給 Bob(假設 Bob 和 Alice 已經擁有彼此的公鑰,因此可以導出一個共享的秘密)。愛麗絲計算 小號一個乙=KMAC256(n,R一個乙,256,“KDF”)$$ S_{AB} = \operatorname{KMAC256}\left(n,R_{AB},256,\text{“KDF”}\right) $$ 其中參數按照NIST SP 800-185 §4.2 中的描述進行排序。

由於 Bob 還擁有n $ n $ 並且可以推導出R一個乙 $ R_{AB} $ ,他也可以執行這個計算得到小號一個乙 $ S_{AB} $ .

如果需要新密鑰,Alice 或 Bob 都可以重新生成n $ n $ ,以及小號一個乙 $ S_{AB} $ 將更改為(看似)不相關的值。


問題

  1. 是小號一個乙 $ S_{AB} $ 用作加密密鑰或 MAC 的密鑰是否安全?
  2. 是否有任何簡單的改進可以使該算法更安全?
  3. 我在解釋中的邏輯是否有意義?
  1. 我在解釋中的邏輯是否有意義?

HMAC 是一種從密碼散列函式構造**偽隨機函式 (PRF)的技術。**它通過使用密鑰來實現這一點,這被鬆散地稱為鍵控雜湊。

HKDF在擴展和提取步驟中使用HMAC作為PRF可以很容易地導出多個密鑰。基於PRF的擴展步驟的安全性和任何安全隨機提取器都可以用於提取步驟。

前綴 PRF 函式Fķ:米↦H(ķ‖米) $ F_k\colon m \mapsto H(k \mathbin| m) $ 推測為 PRF,這就是 SHA-3 的設計目標。NIST 將 KMAC 設計為帶有一些域分離的 MAC。

KMAC 是一種 PRF(推測),因此可以將 HMAC 替換為 KMAC。KMAC 更快地實現 PRF,因為它不需要像在 HMAC 中那樣使用雙重雜湊(記住對前綴構造的長度擴展攻擊)

此外,橢圓曲線的點的編碼並不統一。要從 ECDH 的輸出中導出加密密鑰,始終建議使用加密散列函式進行散列。

  1. 是小號一個乙 $ S_{AB} $ 用作加密密鑰或 MAC 的密鑰是否安全?

好吧,正如評論中所說,通過連接向散列/PRF 添加更多上下文,包括上下文;公鑰、時間戳、目的、應用程序等。

  1. 是否有任何簡單的改進可以使該算法更安全?

1 中的上下文建議並將 HKDF 與 KMAC 一起使用。現在,HKDF 在 TLS 1.3 中。它已經確立。此外,可以使用 ECDH+KDF 導出初始密鑰,然後只需更改info參數即可使用 HKDF 導出多個密鑰。只需在初始鍵上一次又一次地呼叫 expand 。

這可以通過小號 $ S $ KMAC 的參數。我認為那裡沒有危險。

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