2018 年推薦的線上密碼最小熵
假設一個簡單的情況,攻擊者知道密碼創建方案,並且我們沒有與狀態參與者打交道,也沒有與以純文字形式保存密碼的網站打交道。我們正在嘗試防禦對受損密碼雜湊數據庫的離線暴力攻擊。我們希望我們的絕大多數密碼能夠在十年內抵禦攻擊。
從軼事證據來看,即使是應該知道更好的網站,也似乎只將密碼散列一次。(還有其他明文,但與這些無關。)
所以看起來答案將取決於以下內容:
- 單迭代雜湊數據庫真的很常見嗎?如果不是,哪種方法最不安全且最常見?(包括迭代次數、雜湊類型等)
- 以及破解這些方法需要多長時間。(包括常見的雜湊破解硬體,這些數據庫是否公開,然後被最好的硬體破解(想想ASICs),…)
- 攻擊者在放棄密碼之前花了多少時間(假設唯一鹽)?
- 更多參數?
僅僅說我們永遠不會有足夠的資訊來做出明智的決定是不夠的。我們需要一些想法。我們都使用密碼,並不是每個人都使用密碼管理器。(我並不是說這不是一個好主意。這只是一個事實。)
(我最初在 上問過這個問題
security.stackexchange
,認為這樣會更合適,但沒有得到答案。事實上,起初我收到了質疑密碼儲存等基礎知識的評論。(後來被 mods 編輯掉了。)所以我’我在這裡問這個,希望這裡的人群已經問過自己這個問題。)
如果密碼是加鹽的,則從 $ {\geq}2^{128} $ 可能性。
- 範例:來自 7776 個單詞的 diceware 列表中的 10 個單詞序列。
- 範例:由 20 個圖形 US-ASCII 字元組成的序列。
如果密碼未加鹽,則從 $ {\geq}2^{256} $ 可能性。
- 範例:來自 7776 個單詞的 diceware 列表中的 20 個單詞序列。
- 範例:40 個圖形 US-ASCII 字元的序列。
如果你這樣做,評估密碼雜湊的成本——無論是 MD5、PBKDF2-HMAC-SHA256、scrypt 還是 argon2id——都是無關緊要的:對手必須執行預期的 $ {>}2^{127} $ 位操作來嘗試足夠多的猜測,以便在海量的可能性中找到你的針。沒有人能負擔得起,而且在可預見的未來,不可能全人類都能負擔得起。
**細節。**假設每一個 $ t $ 使用者從 $ n $ 可能性。
如果密碼是加鹽的,那麼至少找到其中一個密碼的攻擊的預期成本 $ t $ 密碼是 $ O(n) $ 密碼雜湊的試用評估。如果密碼是未加鹽的,則攻擊至少要找到其中一個的預期成本 $ t $ 密碼是 $ O(n/t) $ 密碼雜湊的試用評估。
如果攻擊者花錢上電,預期時間可能會更快 $ p $ 並行電腦:如果加鹽, $ O(n/p) $ ; 如果不加鹽, $ O(n/(pt)) $ . 但是,為 60 台電腦供電一分鐘並不比為一台電腦供電一小時便宜——無論是以焦耳、盧布還是比特幣計算。
總是少於 $ 2^{128} $ 使用者,所以只要 $ n \geq 2^{128} $ , 上面的建議保證了對手的期望成本總是至少 $ 2^{127} $ 密碼雜湊的評估。
使用像 argon2id 這樣的密碼散列會增加評估密碼散列的成本,而不是像 SHA-256 這樣的散列函式,它不是為散列密碼而設計的。對於設計處理密碼的系統的工程師來說,重要的是要負責使用合法使用者可用的資源來提高攻擊者的成本,並使用密碼雜湊。但從使用者的角度來看,上述建議使得工程師選擇什麼密碼雜湊無關緊要,無論是 argon2id 還是 MD5——攻擊的代價是人類無法克服的。