Symmetric

加密文件以進行隨機訪問,但僅在初始讀取整個文件之後

  • August 4, 2021

我正在對稱加密一個文件(使用隨機鹽和使用者提供的帶有 PKCS5S2 的密碼,即沒什麼特別的),我需要能夠隨機訪問它。因此我使用流密碼。這很好用,但它允許攻擊者在僅讀取文件的一小部分時驗證錯誤的密碼(亂碼數據很容易辨識)。

IIRC 有一個加密模式,無法單獨讀取數據的任何部分,您必須全部閱讀(我忘了它是如何呼叫的)。這似乎與我的隨機訪問要求相衝突,但是我總是需要先讀取整個文件*,然後才*需要隨機訪問。

是否有允許這樣做的加密模式,即

  • 要獲得任何資訊,必須首先解密所有數據
  • 之後,數據的任何部分都可以單獨解密

是的,你可以這麼做。首先生成一個隨機密鑰並在該密鑰下加密數據。現在,您反過來使用您的密碼派生密鑰加密該密鑰。不同之處在於您將已經加密的文件包含在您的 PBKDF 中。所以你生成一個隨機密鑰 $ k $ 然後將其封裝為 $ \mathcal{E}_{k’}(k) $ , 在哪裡 $ k’ = H(PBKDF(\text{password}) | \mathcal{E}_k(\text{file}) $ . 這樣,要解密,您必須讀取整個加密文件並對其進行雜湊處理,以獲得包裝密鑰,從而為您提供解密文件本身的密鑰。獲得該密鑰後,您可以進行隨機訪問,但是對於每次密碼嘗試,您都必須再次讀取和散列整個文件。

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