Password-Hashing
使用 Scrypt 和 Argon2 的密碼散列安全性
我正在開發一個應用程序,其中將安裝以下加密系統:
- 橢圓曲線密鑰交換(曲線:secp521r1)
- 用不同的鹽對共享的秘密進行雙重加密
- 將此結果通過 Argon2 與另一種鹽
- 使用 AES 256 和來自 Argon2(和 IV)的密鑰加密數據
我想知道在密碼散列和 KDF 階段是否存在使用雙 Scrypt 然後 Argon2 的任何弱點?如果是這樣,提高雜湊安全性的解決方案是什麼?謝謝
這種自製的結構毫無意義且不必要地複雜,複雜性通常是漏洞的根源。例如,在這種情況下,我敢打賭,當您將多個密碼雜湊連結在一起時,您沒有安全地處理中間變數。
只需僅使用 argon2 並增加工作因數。“Double scrypt”相當沒有意義,因為 scrypt 也有可以簡單地增加的工作因子參數。
**您使用的 KDF 錯誤。**Argon2 和 scrypt(以及 bcrypt 和 PBKDF2 等相關結構)的唯一目的是減緩對人類創建的密碼的字典和暴力攻擊。在使用 ECC 交換的隨機生成的密鑰上使用它是不合適的,因為密鑰很強大。
**你用錯了鹽。**salt 的目的是減輕彩虹表攻擊,並使針對多個使用者密碼的並行攻擊更加困難。你撒在你的密碼系統上以使其更安全並不是神奇的灰塵。對於隨機生成的密鑰,您不需要鹽。
這就是為什麼使用現成的庫來為您完成所有這些工作如此重要的原因。