安全指南
密碼熵值解析
了解密碼熵值、搜尋空間、字母集大小、長度,以及為何理論位元數僅為上限估計。
摘要
密碼熵值是用來描述攻擊者需要探索的搜尋空間大小。對於均勻隨機的密碼,一個有用的上限公式為:
bits = length × log2(alphabet size)
使用密碼破解時間計算器來比較不同假設。
字母集大小
字母集大小是可能字元的數量。小寫字母提供26種選擇。大寫加小寫提供52種。加上數字則有62種。符號可以進一步增加字元池,但前提是服務接受這些符號,且生成器隨機選取它們。
長度
長度會倍增搜尋空間。較長的隨機密碼通常比以可預測符號裝飾的短密碼提供更大的實際改進。
上限警告
該公式假設每個位置都是從字母集中均勻選取的。它不適用於人類短語、重複使用的密碼、字典單詞、日期、鍵盤路徑、外洩憑證或編輯過的輸出。它也不模擬服務端的雜湊或線上速率限制。
實用建議
- 將熵值視為比較工具,而非保證。
- 偏好隨機生成的值。
- 對於受限字母集,使用更長的長度。
- 確保每個密碼都是獨一無二的。
- 安全地儲存結果。
詳細指南
本指南專注於在不誇大的情況下解讀密碼熵值。它為比較長度、字母集大小和密碼短語詞彙表的讀者而寫,因此實際目標並非提出戲劇性的安全主張。目標是選擇一個能在日常使用中存活的密碼習慣:登入表單、密碼管理器、行動鍵盤、帳戶恢復、共享設備,以及偶爾出現具有奇怪驗證規則的服務。只有當真實的人能夠持續遵循時,安全的建議才有用。
最安全的起點是隨機性加上獨特性。隨機性意味著該值是從一個大型空間中由密碼學上合適的隨機源選取的,而不是從生日、寵物名、鍵盤模式或喜愛的名言中發明的。獨特性意味著同一個密碼不會在其他地方使用。一個長但重複使用的密碼可能在一次無關的洩漏後迅速失效,而一個獨特的隨機密碼則將損害限制在使用該密碼的單一帳戶。
對於這個主題,一個實用的預設是對於均勻隨機的密碼,長度乘以字母集大小的log2。你可以使用密碼強度檢查器來應用該預設,然後將最終值儲存在可信賴的密碼管理器中。PwdGen在瀏覽器中使用Web Crypto在本機生成值;生成的密碼不會發送到PwdGen伺服器。這種本機設計減少了伺服器端的暴露,但並不能防範所有威脅。惡意的瀏覽器擴充功能、受感染的設備、釣魚頁面或不安全的剪貼簿處理仍然可能在生成後洩露秘密。
最常見的應避免問題是將簡單公式應用於人類選擇的密碼、忽略重複使用,以及將估計視為保證。這些問題之所以重要,是因為當人類習慣為攻擊者提供捷徑時,攻擊者很少需要暴力破解所有可能的密碼。憑證填充、釣魚、外洩密碼列表和帳戶恢復濫用通常比純數學搜尋更現實。這就是為什麼最佳建議將密碼品質與帳戶層級控制(如MFA、通行金鑰、恢復代碼儲存,以及定期檢查恢復電子郵件或電話設定)相結合。
在應用建議時,請使用此檢查清單:
- 僅對隨機生成使用熵值。
- 對人類輸入使用zxcvbn風格的檢查。
- 當字母集受限時增加長度。
- 記住儲存雜湊會影響攻擊速度。
如果網站拒絕理想設定,請不要手動將密碼強行改為較弱的模式。一次調整一個變數。如果符號被拒絕,保留大寫、小寫和數字,並增加長度。如果最大長度較低,使用可接受的最大長度,並確保該值是唯一的。如果密碼必須大聲朗讀、列印或在電視或路由器螢幕上輸入,考慮排除容易混淆的字元,並增加長度以補償較小的字母集。
最後,記住密碼建議的邊界。強密碼是一層防禦,而非保證。它無法使釣魚頁面安全、修復惡意軟體,或補償儲存憑證不當的服務。有用的習慣是無聊但持久的:生成唯一值、安全儲存、保護恢復路徑,並在懷疑暴露時迅速更換。
安全的下一步
閱讀本指南後,進行一次小型帳戶審計,而不是試圖一次修復所有問題。選擇一個如果被接管會造成最大麻煩的帳戶,確認其密碼是唯一的,並檢查恢復電子郵件、恢復電話、MFA方法和備份代碼儲存。如果該鏈中的任何部分薄弱,在轉向低風險帳戶之前先改進該部分。這個順序使工作易於管理,並保護攻擊者最可能用作跳板的帳戶。對於密碼熵值解析,最好的結果是一個可重複的習慣:在本機生成、小心儲存、避免重複使用。
常見問題
簡單的熵值公式是什麼?
對於均勻隨機字元,一個常見的上限公式是長度乘以字母集大小的log2。
為什麼熵值只是估計?
它假設均勻隨機選取,不考慮重複使用、洩漏、人為編輯、受感染設備或目標儲存。
符號總是增加熵值嗎?
符號在隨機選取時會增加字母集大小,但增加長度通常能提供更大且更易於使用的好處。