0
我知道在數據庫中存儲密碼時,最好使用慢散列函數,如bcrypt,scrypt或argon2。我讀過的有關選擇參數(如時間和內存成本)的大多數文檔都建議儘可能設置最高值,以便在攻擊者訪問數據庫時阻止密碼破解嘗試。我的問題是,在Web應用程序中對用戶進行身份驗證時,可以接受哪種資源消耗?我知道這個問題的答案會因爲諸如執行身份驗證的服務器的規格,身份驗證的發生頻率等因素而有所不同,但我希望得到一些一般性建議,指出哪些是合理的,噸。密碼認證需要一秒多的時間?如果我的服務器有8GB的內存,使用1GB的散列內存成本太高?我期望有問題的應用程序只會偶爾執行密碼驗證,因爲它對大多數請求使用基於令牌的驗證。密碼認證需要多長時間?
感謝您的評論。 Argon2是一種內存硬件功能,除了時間成本和並行性之外,還允許您指定內存開銷參數,這就是爲什麼我想知道我可以合理地致力於多少內存散列。 – user3607758
啊,如果你正在挑選一個任意數量的內存來使用,那麼「多少太多」將取決於其他因素,例如你在最高負載下可以節省多少內存。 1GB似乎過度。它看起來像Argon2的CLI默認值是4096KiB。 –