Passwords

僅使用 bcrypt 或 SRP 哪個更安全?

  • May 27, 2019

好的,這是我考慮對登錄事物進行身份驗證以安全地儲存密碼的兩種不同方式。

第一個是以下。

客戶端雜湊密碼 bcrypt(username.static_salt.password)(成本為 7)

這主要是為了讓某人在其他地方重複使用密碼時更難遇到麻煩/讓我感覺更好。

然後他們將其發送到伺服器。然後伺服器再次使用 bcrypt 對其進行散列(成本為 7),每個使用者都有一個鹽,它被附加到使用者的密碼並一起散列。儲存在程式碼中的另一個靜態鹽(即 bcrypt 本身)在那裡。我們在伺服器上儲存了另一個鹽(即沒有數據庫)。

另一種是使用 srp6a 除了對 H() 使用 bcrypt(與上述相同的成本)。一旦攻擊者獲得數據庫,從長遠來看,其中哪一個更安全。N 將是 2048 位。

還假設所有這些都是通過 TLS/SSL 完成的。我個人傾向於第一個,但在我承諾其中一個之前我想確定一下。

編輯:現在每個人都應該使用 scrypt 或 argon2 進行具有唯一鹽的密碼散列。

SRP 的目的是消除對 SSL/TLS 證書的需求。通過將 SRP 集成到 SSL/TLS(根據RFC 5054),您可以獲得基於客戶端/伺服器密碼的相互身份驗證,並且無需任何可怕的證書業務;然而,該協議仍然能夠抵禦離線字典攻擊。

如果您的 SSL/TLS 仍然使用伺服器證書,那麼使用 SRP 就沒有什麼意義了;客戶端已經知道它與正確的伺服器通信,並且可以在隧道內以明文形式發送密碼(如果您確實需要在晚上睡覺,則可以發送密碼雜湊)。

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