Hmac

如果你知道消息,以及 HMAC(key, message) 的結果,你能找到密鑰嗎?

  • August 30, 2020

如果攻擊者有 10 億條 4KB(隨機雜訊)消息和這些消息的 sha256-HMAC(都使用相同的密鑰),他們能否在宇宙消亡之前計算出所使用的密鑰?

不,這應該是不可能的,至少如果你有一把好鑰匙的話。

只要 SHA-256 仍然是一種安全的雜湊算法並且沒有被破壞,所有這些都是有效的。準確地說,只要 HMAC-SHA-256 沒有被破壞。

攻擊者是否有關於消息的任何資訊(除了長度和它們是“隨機雜訊”)?如果他/她沒有:不,攻擊者不可能在現實生活中獲得密鑰。他們將不得不暴力破解 HMAC-SHA-256,如果您使用具有不可忽略機率的普通電腦,這是不可能的。每條消息的熵都比暴力破解的任何東西都高得多。

如果敵人知道所有資訊:嗯,這都是關於你的鑰匙的。過去,散列需要有一個密鑰,但散列的常見結構不適合只將密鑰放在消息之前。HMAC就是為了解決這個問題而發明的。它有一些很好的安全證明,基本上說“只要散列函式仍然安全並且密鑰足夠好,就不可能獲得密鑰。” - RFC 2104有更多解釋和一些連結以獲得更多資訊。

那麼,你的鑰匙夠好嗎?如果您的密鑰長度低於 64 位並且攻擊者至少知道一條消息,那麼您就已經失去了。暴力破解 64 位並不容易,但可行。如果您的密鑰長於 64 位(例如 80 位或更好的 128 位或更高位),那麼您必須考慮熵。如果您的密鑰是完全隨機的並且攻擊者不知道它的任何模式,那麼熵與比特長度一樣高,但是如果您的密碼類似於“password1234”,那麼它很容易暴力破解,儘管有 96 位(每個字元 8 位)。好的密碼本身就是一個非常複雜的話題,所以我不會將它們包含在這個答案中。如果您需要了解有關安全密碼的更多資訊,請使用您最喜歡的搜尋引擎搜尋“好密碼”或“

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