Hmac

如果我有一系列完整的 HMAC 前綴字元串,我的 HMAC 是否安全

  • April 12, 2016

假設我有一個很長的句子,比如“敏捷的棕色狐狸跳過了懶惰的狗”。讓我們進一步說我需要對這個字元串進行加密,所以我使用 HMAC。讓我們進一步說我希望能夠對此字元串進行前綴搜尋,因此我還儲存了該字元串的所有可能前綴,例如:

$ \operatorname{HMAC}_K(\text{“T”}) $ , $ \operatorname{HMAC}_K(\text{“Th”}) $ , $ \operatorname{HMAC}_K(\text{“The”}) $ , $ \operatorname{HMAC}_K(\text{“The “}) $ 等,其中 $ K $ 是關鍵。

我認識到這裡的行之間存在一些涉及重疊的弱點,但我感興趣的是擁有這一行的一組 HMAC 值是否足以使事情變得不安全。給定輸入的所有前綴值的一系列 HMAC 值,攻擊者能否計算出密鑰或明文的任何部分?

如果它可以幫助您辯稱存在弱點,請隨意使用任何口味的 HMAC。

我將首先假設您的 HMAC 實例是一個安全的MAC函式,這歸結為對其實例化的散列函式做出各種假設。

如果這個假設成立,那麼對手實際上將無法恢復密鑰,即使他們可以訪問大量 MAC 和相應的明文,或者即使他們可以選擇自己的明文——如果有可能的話他們獲得密鑰,他們將能夠計算自己的 MAC,從而進行存在偽造,這與假定的安全屬性相矛盾。

至於明文恢復,一般來說,沒有什麼可以阻止 MAC 功能防止存在偽造洩露有關輸入明文的一些資訊,並且確實不難刻意建構此類 MAC 的範例(如 Ricky Demer 的回答所示)。

然而, Bellare 給出的 HMAC 的安全證明實際上證明了一個更強的屬性,即 HMAC 是一個PRF,只要它實例化的雜湊的壓縮函式也是一個 PRF(或者,更一般地說,比 HMAC 是一個隱私保留Bellare 定義的 MAC(PP-MAC),只要壓縮函式也是 PP-MAC 並且散列函式本身在計算上幾乎是通用的(cAU);參見引理 4.2 的註釋)。這是一個相當強的安全屬性,它確實表明,只要雜湊函式滿足證明的假設,HMAC 就不會將明文資訊洩露給不擁有密鑰的對手。

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