Hmac

生成 64 位 HMAC

  • August 11, 2016

給定 $ plaintext $ 及其各自的認證 $ tag $ 它是從 HMAC-MD5 生成的,因此 $ |tag| = 128 $ 位。

如果應用程序受到限制並且只能發送 $ 64 $ 位。可以嗎,如果我們異或第一個 $ 8 $ 字節和秒 $ 8 $ 的字節 $ tag $ 為了產生一個總 $ 64 $ 少量 $ tag $ ?

我相信強化實際上是關鍵大小,而不是某人做蠻力的輸出大小。更糟糕的是,如果我們執行上述操作,兩個不同的輸入可能具有相同的簽名?

或者這是否會以任何方式削弱強化?

密鑰和標籤長度是獨立的。短標籤允許隨機猜測更頻繁地有效,但不能幫助攻擊者找到密鑰。如果您需要更短的 MAC 標記,NIST 建議使用截斷而不是 XOR。SP 800-107 (pdf) 說至少使用 32 位:

當應用程序將 HMAC 輸出截斷以生成所需長度λ的MacTag時,HMAC 輸出最左邊的λ位應用作MacTag。但是,輸出長度λ應**不小於 32 位。

但是,建議使用至少 64 位:

MacTag通常可接受的長度是 64 位;不鼓勵使用長度小於 64 位的MacTag 。

除此之外,我不會使用 HMAC-MD5,儘管它沒有被破壞。HMAC-SHA256(或 HMAC-SHA512,如果更快的話)可以被截斷為相同的大小。

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