Hmac

HMAC-sha256 的結果能否與隨機雜訊區分開來?

  • April 1, 2016

HMAC-sha256 的結果是否可以與隨機雜訊區分開來?

如果是這樣,給定:

  • 1000 個鍵的集合,以及
  • 1000 條隨機雜訊消息,100 條由其中 10 個密鑰中的每一個簽名

是否可以找到關於 1000 個密鑰中的哪一個對哪些消息進行簽名的任何線索。


編輯:

假設 4KB 消息與隨機雜訊無法區分,而 32 字節密鑰也與隨機雜訊無法區分。

如果知道密鑰和消息,是的,您可以區分使用了哪些 - 因為您可以全部測試它們。如果不是,那麼這是“稍微難一點”(=實際上不可能有足夠大的值)。任何進一步的答案都將假定攻擊者不知道密鑰或消息。

HMAC 的定義如下所示: $ HMAC(K, m) = H(K \oplus opad || H((K \oplus ipad) || m)) $ 和 $ k $ 作為關鍵和 $ m $ 作為消息。 $ opad $ 和 $ ipad $ 是恆定的,不同的值,而 $ H() $ 是使用的雜湊函式-在您的情況下為 SHA-256。我們可以看到最終結果是雜湊函式的輸出。如果函式內部的密鑰或消息沒有發生什麼特別的事情,那麼關於雜湊的所有安全特性也應該適用於 HMAC。找到原始消息(同時具有散列函式的輸出)應該很難 - 這稱為原像電阻。只要密鑰和消息足夠長,就不可能(以不可忽略的機率)在合理的時間內找到原始消息。好的散列函式也不應該與真正的隨機輸出區分開來,所以這也應該沒問題。

即使您使用每個密鑰對每條消息進行 HMAC 雜湊處理,仍然無法說出哪些 HMAC 是使用相同的密鑰/相同的消息計算的。攻擊者只會看到 $ 1,000,000 $ 看起來隨機的位串( $ 1000 $ 按鍵時間 $ 1000 $ 消息)並且不知道如何處理它們。

只要密鑰或消息中存在模式,就更容易攻擊雜湊。 $ 80 $ 一點熵(來自消息和密鑰)應該足以抵禦任何暴力攻擊。如果消息足夠小,則沒有雜湊是安全的。

用於消息認證的密鑰雜湊函式文件有更多資訊和 HMAC 的安全證明。您可以在那裡閱讀為什麼實際上不可能在您的方案中找到使用過的消息和密鑰——如果它們足夠大的話。

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