Hash

為什麼 MAC 使用 nonce+message+hash(nonce+message+identifier) 不是標準?

  • July 23, 2014

鑑於我們知道nonce + message + hash(nonce + message + mac-key)所有內部加密都可以檢測攻擊者是否更改了消息的任何位(本質上是將可延展密碼轉換為不可延展密碼),為什麼他們仍然說先加密然後 MAC?

此外,添加像對稱密碼那樣分成對的mac-key是否不會通過證明其他不受密碼攻擊的材料是已知的(假設有足夠的長度)來驗證攻擊者的身份?

當然,如果我們完全不對稱,我們會先簽名然後加密,但這不是要問的問題。

編輯:我更喜歡的加密算法都具有沒有無效輸入的屬性,因為任何密文+任何密鑰->一些“明文”,通常是垃圾。不會存在對算法的攻擊會導致實現崩潰。

編輯:好的,由於大多數散列函式不合適,我得到關於 HMAC 不是散列(a + b)的部分。我更喜歡將散列函式替換為不適合任何用途,一旦它達到不適合該用途的狀態,但無論如何。我不明白為什麼我們關心密文是否已被更改。由於倒帶流,我的東西的設置方式在嘗試解密之前對 MAC 並不快。

如果存在加密方案,則存在這樣的加密方案,使得

人們可以輕鬆地修改單個密文,以便是否修改解密

結果以可預測且有用的方式取決於明文消息是什麼,例如:

修改後的加密操作輸出與原始加密算法的輸出連接的零。 $ : $ 如果輸入密文為空,則修改後的解密操作給出與原始解密算法相同的輸出。 $ : $ 如果輸入密文以零開頭,則修改後的解密操作在給定密文 的其餘部分時輸出原始解密算法的輸出。

如果輸入密文以 1 開頭,後跟自然數 的無前綴編碼
, 則修改後的解密操作將原始解密算法的輸出應用於

密文的其餘部分,並附加許多(可能為零)零使其

比自然數長,使

$$ natural number $$-th 位一個,並輸出結果。

否則,修改後的解密操作在給定空密文時

輸出原始 解密算法的輸出。 如果 MAC-then-encrypt 與允許此類密文修改的加密方案一起使用,這種修改

以可預測和有用的方式依賴於明文的實際消息組件,

那么生成的方案仍然是可延展的。

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