Password-Hashing

使用 PBKDF2 散列鹽 + 5 - 8 數字密碼的風險

  • February 24, 2020

我的任務是在使用者輸入他們的 ID 和 5 到 8 的數字值作為密碼或 PIN 的地方提供簡單的登錄體驗,就像這裡所說的那樣。

我正在使用 ASP .NET Core 並使用 Identity Server 4 作為發布令牌的核心實現。我必須實現登錄頁面並了解製作安全頁面/雲系統的要求。

根據我的研究,Bcrypt 是用於執行此任務的事實上的雜湊機制,但我有幾個擔憂:

  1. 如果/當他們在安全行業中所說的系統受到損害時,使用如此短的 PIN,即使我們使用大量鹽,計算所有 PIN 也將非常容易,因為從技術上講,只有少量結果與自由文本密碼相比。
  2. .NET 中沒有經過驗證的 Bcrypt 實現 - ASP.NET Core 使用 PBKDF2,因為它是框架的一部分,所以我認為我在這裡獲得了可信度。

在這些情況下,我的預設答案是使用 Auth0/Azure AD B2C 或其他一些每天都在做這些事情並強制執行複雜密碼的大公司,但要求非常具體,無法由運營商滿足。

我已經對此進行了風險分析,並將其送出給他們接受的企業,但這裡的瑣碎問題是:

  1. 有沒有比 PBKDF2 更現代並驗證我應該使用的東西?
  2. 如果儲存的系統數據被洩露,我是否擔心密碼很容易被破解?
  3. 在這樣的系統中,您會推薦哪些審計機制?
  1. 是的,看看這裡的例子。例如,考慮使用 Argon2。
  2. 是的,您的擔憂是有道理的。密碼派生應該足夠慢。但實際上,如果登錄時間超過 1 秒,使用者將無法接受。因此密碼推導時間不應超過 1 秒。如果 PIN 由 5 位數字組成,則意味著 100 000 個不同的 PIN。如果每個人花費的時間不超過 1 秒,那麼攻擊者需要不超過 100 000 秒的時間來使用單核 CPU 進行暴力破解,這意味著大約 28 小時。如果是 4 核 CPU,大約需要 7 個小時。使用 8 位 PIN 碼需要更長的時間。單核 CPU 大約需要 28000 小時 = 4 核 CPU 需要 7000 小時 = 這樣的 CPU 需要 292 天。意思是,如果你有 10 個 CPU,用不到 1 個月的時間就可以破解它。有了更多的 CPU,暴力破解將花費更少的時間。
  3. 關於審計的問題超出了本網站的範圍。最好在資訊安全網站上詢問。但無論您將實施何種審計,如果攻擊者獲取帶有密碼雜湊的數據庫,他將暴力破解它,檢索明文密碼,然後應用它們。當一些使用者抱怨他的帳戶有問題時,審計可能有助於跟踪攻擊者。但可能即使找到攻擊者也無助於減輕造成的損害。

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