Hash

使用類似於密碼和固定密鑰的 IV 來利用 AES

  • June 12, 2017

在查看同事制定的“安全通信協議”時,我注意到 AES-128 CBC 的使用引起了我的注意。我認為他們正在嘗試實施 HMAC,但做出了一些非常可疑的決定。

步驟如下所示:

  1. IV 被初始化為與使用者(明文)密碼相同,僅更改一個字節。
  2. AES CBC 將密碼、此 IV 和密鑰作為輸入,但每次都使用相同的密鑰。
  3. 然後將此加密的輸出與原始密碼進行異或,給出使用者的密碼雜湊。

現在假設我有密鑰和一些散列密碼,是否有可能獲得原始明文密碼,以便向我的同事證明這個系統被嚴重破壞了?

似乎完全有可能打破這個計劃。讓我們使用一些確定性的填充方案來獲取 2 個密碼。現在請記住,IV 在加密之前與明文進行了異或運算:

在此處輸入圖像描述

現在看來,這個異或運算的輸出只會相差一個字節。因此,如果您有足夠的雜湊密碼,那麼塊密碼的輸入和輸出可能會重複。由於生日綁定重複很可能在 16 次嘗試後有 0.5 的機會。

作為攻擊者利用這一點的一種方法是創建幾個具有不同密碼的帳戶。密碼的輸出可以使用密碼雜湊的輸出來檢索,稍後恢復。它可以簡單地將這個值與給定的密碼進行異或,這將導緻密碼的輸出。然後,攻擊者可以將此值與其他密碼散列進行異或,直到找到看起來像有效密碼字元串的內容(例如,通過檢測輸出中是否沒有控製字元)。這樣,如果不是所有密碼,大多數密碼都應該是可檢索的。

這種攻擊的有趣之處在於您甚至不需要密鑰。對手只需要一個散列預言機(伺服器本身)和(部分)散列數據庫。

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