Hash

為什麼散列函式的不同應用需要散列函式的不同屬性?

  • July 3, 2016

一個強大的密碼散列函式通常必須保證幾個屬性,包括:抗原像性、抗二次原像性和抗碰撞性。然而,事實證明,某些應用程序只需要屬性的一個子集,而其他應用程序則需要所有這些屬性。下表總結了哪些應用程序需要哪些屬性(來自 Stalling 的書)。有人可以解釋每個應用程序所需的屬性嗎?例如,單向密碼需要抗原像性是有道理的,因為我們不希望人們從散列中計算密碼。但我不明白為什麼單向密碼不需要防碰撞(即,如果兩個不同的密碼給出相同的雜湊值,那麼冒名頂替者可以更容易地闖入)。有人對不同的屬性有解釋嗎?該表來自該地區的一本權威教科書(Stalling 的書)。 不同數據完整性應用程序所需的雜湊屬性

雜湊+數字簽名

如果散列不是抗衝突的,攻擊者可以產生兩條具有相同散列的消息。他們會要求在第一個上簽名並在第二個上出示簽名,這是偽造的。

當第二個原像抵抗被破壞時,這種攻擊變得更加嚴重,因為現在攻擊者不需要控制兩個消息,他們可以簡單地使用他們觀察到的任何(簽名,消息)對。

不直接要求第一前圖像電阻,因為簽名不承諾隱藏消息,但是對於常見的定義,第一前圖像電阻暗示第二前圖像電阻。

IDS/病毒檢測

如果違反了第二前映像抵抗,攻擊者可以為其惡意軟體提供與現有良性軟體相同的雜湊值,從而防止將惡意軟體列入黑名單,而不會因將良性軟體列入黑名單而造成附帶損害。

如果違反了抗碰撞性,攻擊者可以創建一個良性軟體和一個惡意軟體。這可能沒什麼大不了的,因為黑名單只會影響誘餌軟體,不會影響其他人開發的軟體。儘管如此,我還是強烈建議您使用抗衝突雜湊,這樣您就可以在雜湊和執行檔之間擁有清晰的一對一映射,從而防止混淆和誤解。

密碼雜湊

顯然,攻擊者必須不了解密碼輸入的任何內容,這與第一原像抗性密切相關。

缺乏抗碰撞性僅允許攻擊者構造兩個不同但等效的密碼,這些密碼對他們自己的帳戶有效。第二前映像抵抗需要知道正確的密碼,因此也是無害的。流行的 PBKDF2 密碼雜湊受到某些瑣碎的衝突和第二個原像的影響。

蘋果電腦

MAC 是鍵控的,普通的散列不是。因此,您需要指定如何從散列構造 MAC。標準選擇是 HMAC,它不需要抗碰撞性。例如,HMAC-MD5 仍然像 MAC/PRF 一樣安全,而 MD5 的抗碰撞性完全被破壞了。

密鑰恢復與第一個原映像有關,因此您可能需要該屬性。您也不希望有任何關鍵的獨立碰撞,但是建構簡單的碰撞要困難得多*。*

有關 HMAC 安全性的充分條件的詳細描述,您可以查閱 HMAC 安全性證明。

雜湊+對稱加密

如果您想要完整性和機密性,我們使用經過身份驗證的加密。標準方法是首先加密消息,然後在密文上計算 MAC。這稱為 Encrypt-then-MAC,需要與上述 MAC 相同的安全屬性。

對於許多流行的加密算法來說,加密消息的散列是不安全的,無論散列有多強。不要那樣做,除非你真的知道你在做什麼。

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