Key-Derivation

將 scrypt 與其他雜湊算法結合起來安全嗎?

  • June 4, 2021

我目前正在編寫一個文件加密程序,我設計了這個方案來從使用者輸入密碼中派生一個密鑰:

layer1 = sha256(sha256(...sha256(password ,salt1), salt1), salt1)

我重複 layer1 過程大約 10000 次或更多次,之後,我將 layer1 傳遞給隨機鹽 scrypt:

layer2 = scrypt(base64(layer1), salt2)

然後我用另一種隨機鹽將layer2傳遞給shake256:

key = shake256(base64(layer2), salt3)

我不是密碼設計師或密碼分析家,所以我不知道這是否會導致弱點。

通常散列其他散列值是可能且安全的。這包括密碼雜湊或基於密碼的密鑰派生方案(這就是它的樣子)。請注意,安全性顯然不會超過任何散列的最小輸出大小 - 這通常是可以的,因為輸出大小通常為 256 位或更高。

但是,這並不一定意味著您的方案有意義。第一層散列似乎是嘗試創建您自己的密碼散列方案。那麼問題就變成了為什麼你不會使用/實現一個已知的 PBKDF,比如 scrypt(或者,如果你不需要記憶體保護,只需要底層的 PBKDF2)。

類似地,密鑰的計算似乎是 KBKDF 或基於密鑰的密鑰派生方案的實現。相反,您可以使用 HKDF,它也可能需要鹽。或者您可以按照 Red Sun 的建議將其省略,因為它只是添加了一個迭代。

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