7-Zip 加密:缺鹽的實際效果
之前關於 Cryptography StackExchange 的討論讓我了解到 7-Zip 不使用 salt 從密碼中派生加密密鑰以使用其 AES-256 加密;這是一個潛在的嚴重缺陷;並且它的影響是使破解多個 .7z 文件變得相對容易。
我的問題是,這在實踐中意味著什麼?可能的推論或混淆點:
(1) 幾乎所有其他著名的 AES-256 文件加密工具(例如,AES Crypt、Gpg4win、Cryptomator)都使用鹽;因此它們比 7-Zip 安全得多。
(2)不加鹽對暴力破解密碼方法沒有任何實際影響,否則Elcomsoft不會說.7z仍然比RAR5更難破解。
(3) 僅當破解者試圖訪問多個 .7z 文件時,沒有鹽是一個嚴重的缺點。但為什麼會有所作為呢?如果所有這些文件都使用相同的密碼,那麼是的,暴力破解將打開它們。如果他們使用不同的密碼,那麼沒有鹽可能沒有任何區別。
(4) 如果我使用其他一些帶有鹽的 AES-256 工具來創建 .7z 文件,那麼 7-Zip 中沒有鹽是沒有意義的。
僅當破解者尋求訪問多個 7z 文件時,沒有鹽是一個嚴重的缺點。但為什麼會有所作為呢?
如果有密碼驗證方式且沒有加鹽,則可以批量搜尋密碼。計算一個雜湊並測試所有目標。如果您認為 7Zip 使用 SHA-256 $ 2^{19} $ 迭代這是攻擊時間的巨大減少。
批處理通常是通過預先為包括已知密碼在內的小規模密碼建構彩虹表來執行的。如果目標密碼在桌面上,這將大大減少攻擊時間。
如果攻擊者只有一個文件,那麼這無關緊要;而不是建立表格,只需搜尋。對於進一步的用途,最好使用建構表。
7zip好像沒有使用密碼驗證方式。必須解密和解壓縮文件。如果在此過程中出現格式錯誤,該過程將停止。這嚴重影響了批處理的性能。儘管如此,攻擊者仍然可以生成密碼的雜湊並測試所有目標,這比每個文件一個接一個要快。
在任何情況下,使用強度較高的密碼,例如從 dicewire 或 Bip-39 生成的密碼。如果您的密碼強度 > 128,那麼即使是批次,您也可以安全地抵禦攻擊者。
請注意,沒有關於使用 Elcomsoft 進行的實驗的詳細資訊。它是單個密碼還是多個密碼搜尋。這似乎是一個單一的搜尋。從這個意義上說,這篇文章寫得不好。
密碼嘗試次數較少是由於迭代次數所致。
如果我使用其他帶有鹽的 AES-256 工具來創建 7z 文件,那麼 7-Zip 中沒有鹽是沒有意義的。
對於高級使用者來說,缺鹽並不是真正的問題。只需生成鹽並將其與 7zip 文件一起攜帶。在密鑰生成期間,將鹽添加到您的密碼中。
對於普通使用者,必須使用鹽來對付批量攻擊者。
不是 7zip 的專家,我會嘗試一個通用的答案,我相信它是適用的:
缺乏鹽可能是一個嚴重的問題,使用自製密鑰派生函式也不能讓我對他們如何管理加密貨幣充滿信心。
雖然我不確定大多數無鹽攻擊對 7zip 的適用性如何。
如果您缺少鹽,但仍然有不同的 IV,並且該格式在解密完成之前不允許驗證密碼(驗證解密而不是密碼雜湊)。您可能沒問題,因為您仍然無法建構彩虹表,甚至無法驗證兩個文件使用相同的密鑰。
如果在解密文件之前有一種有效的方法來驗證密碼(特別是沒有徹底混合 IV 和/或數據)。例如,如果保存了密鑰的雜湊值。您可以判斷兩個文件是否共享相同的密碼,並且您可以提前建構彩虹表以幫助您在獲取雜湊時有效地破解密碼。
自製密鑰派生函式幾乎肯定會受到各種側通道攻擊。這可能適用於您,也可能不適用於您。如果您可以使密碼所有者根據命令解密該系統上的文件並監視它們(定時/電源/記憶體記憶體……),您可能會找到密碼。