Aes

以密文形式儲存鹽?

  • May 14, 2018

我在網上找到了密碼器加密文件,因為我一直在尋找有關 x) 的知識。我稍微改變了這個過程以適應“我的需要”/這樣我就沒有保險庫了,而是一個文件加密。我為你做了一個圖表: 加密圖

cryptomator 將 salt/ 參數儲存在配置文件中,但由於我想加密和解密單個文件,它們必須與文件一起儲存。 當我在密文中儲存密鑰派生的鹽(用於 MAC 和內容)時,它應該與 boxcryptor 加密一樣安全,是嗎?

另一個問題是:**我真的需要兩個鹽和鑰匙嗎?**根據此執行緒,SHA-256 和 AES 之間沒有已知的互動,但另一方面,對我來說,對兩者使用一個密鑰似乎很草率,而且可能存在未知的互動。我對你對此的看法很感興趣。

祝你有美好的一天,謝謝:)

當我在密文中儲存密鑰派生的鹽(用於 MAC 和內容)時,它應該與 boxcryptor 加密一樣安全,是嗎?

是的,這就是鹽的定義,鹽是公共的(否則通常稱為胡椒)。例如,bcrypt 的各種文本編碼將鹽儲存在散列旁邊(這與將其儲存在密文旁邊具有相同的安全後果)。


我真的需要兩個鹽和鑰匙嗎?

並且使用兩種鹽意味著多次派生密鑰。這很糟糕,特別是如果這是通過兩次使用密碼派生來完成的。這看起來像您的方案的情況。執行 PBKDF2 兩次或獲得比散列傳遞更多的輸出將使您必須做的工作量翻倍,而攻擊者只需執行一次 50K 操作(每次嘗試)。

在 PBKDF2 的輸出上使用 HKDF 或任何其他 KDF就足夠了,而且效率更高。您可以只為這兩個鍵使用兩個不同的標籤(標識符) - 如果需要兩個鍵。這也出現在您連結到的程式碼的答案中。

另一個技巧是從 PBKDF2 中提取 256 位輸出,然後將其拆分為兩個 128 位密鑰(或 PBKDF2 使用 HMAC/SHA-512 的兩個 256 位密鑰)。如果鹽總是不同的,您可能不需要提取 IV(因為派生的密鑰也總是不同的)。或者您可以生成一個單獨的 IV:您的選擇。


不,您也不需要兩把鑰匙。您可以使用經過身份驗證的加密模式,例如 AES-GCM。那麼你只需要一把鑰匙。如果您將 HMAC 與單個密鑰一起使用,那麼您可能無法證明它是安全的。但是您遇到實際安全問題的可能性很小。

如果您使用單個密鑰,請勿將 MAC 更改為 CBC-MAC 或其他基於 AES 的 MAC,因為這可能會使您的方案容易受到攻擊。使用單個密鑰和單獨的密碼和 MAC 的協議更加脆弱:如果實施不正確,它可能會發生災難性的破壞。

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