使用方法
- 用滑塊或數字輸入框設定長度。存放在密碼管理器中的密碼,建議使用 16 位或更長。
- 選擇字元型別:大寫字母、小寫字母、數字和符號。「每種所選型別至少一個」預設開啟,可確保每個密碼都包含所選的每種字元。
- 根據需要排除 l、1、O 等相似字元、易混淆的符號,或網站不接受的特定字元。
- 點選「生成」,檢視強度和熵,然後複製單個密碼或全部複製。
怎樣的密碼才算強
對於隨機生成的密碼,強度用熵來衡量:長度 × log2(字元池大小) 位,字元池就是可供選取的字元集合。熵每多 1 位,攻擊者需要嘗試的次數就翻一倍。長度直接與熵相乘,而擴大字元池只能讓每個字元多提供一點熵,所以長度更重要:16 位純小寫密碼的可能組合數,大約是混合四種字元的 8 位密碼的 1100 萬倍。
| 長度 | 字元型別 | 字元池 | 熵 |
|---|---|---|---|
| 4 | 數字(PIN 碼) | 10 | 13.3 位 |
| 8 | 小寫字母 | 26 | 37.6 位 |
| 8 | 四種全選 | 89 | 51.8 位 |
| 12 | 字母和數字 | 62 | 71.5 位 |
| 16 | 小寫字母 | 26 | 75.2 位 |
| 16 | 四種全選 | 89 | 103.6 位 |
| 20 | 四種全選 | 89 | 129.5 位 |
在本工具中,四種字元全選時字元池共 89 個:26 + 26 + 10 + 27 個符號。工具顯示的熵會向下取整為整數位。這些數字只適用於隨機密碼,人為想出來的密碼,實際熵遠低於其長度所暗示的水平。
NIST SP 800-63B 的建議
NIST SP 800-63B 是美國聯邦政府的數字身份認證指南,其規則針對的是負責校驗密碼的服務方。當前版本 SP 800-63B-4 規定:
- 密碼作為唯一認證因素時必須要求至少 15 個字元,與其他因素組合使用時至少 8 個字元,並且應允許至少 64 個字元;
- 不得強制「必須包含大寫字母、數字和符號」之類的組成規則,也不得要求定期更換密碼,但在有證據表明密碼洩露時必須要求更換;
- 必須將新密碼與常用、可預測或已洩露密碼的黑名單進行比對;
- 應接受所有可列印 ASCII 字元和空格,並允許貼上,以便使用密碼管理器。
對普通使用者來說道理相同:重要的是長度和隨機性,P@ssw0rd1 這類可預測的替換技巧並沒有幫助。
密碼管理器與口令短語
重複使用的密碼往往比短密碼更危險:某個網站發生資料洩露後,攻擊者會拿洩露的郵箱和密碼組合去嘗試登入其他網站,這就是「撞庫」。請為每個賬戶使用不同的隨機密碼,並交給密碼管理器記憶,這樣 20 位密碼和 8 位密碼用起來一樣省事。
少數必須憑記憶輸入的密碼,例如密碼管理器的主密碼,更適合使用口令短語,即隨機挑選的幾個單詞,比如擲骰子從 EFF 長詞表中選詞。該詞表共 7776 個詞,每個詞約提供 12.9 位熵,六個詞約 77.5 位。本工具生成的是字元密碼,而不是口令短語;如需 API 金鑰等供程式使用的機密,請使用隨機 Base64 生成器。
本生成器的工作原理
密碼由你裝置上的 JavaScript 呼叫 crypto.getRandomValues() 生成,這是瀏覽器內建的加密安全隨機數生成器,密碼不會被髮送或儲存。直接取模會讓部分字元出現的機率略高,因此工具採用拒絕取樣:32 位隨機數如果不小於字元池大小在該範圍內的最大整數倍,就丟棄並重新抽取,從而保證每個字元出現的機率完全相同。
排除相似字元會去掉 i l 1 L o 0 O,適合需要朗讀或照著紙條輸入的密碼,例如 Wi-Fi 密碼。排除易混淆符號會去掉各種括號、斜槓、波浪號以及 , ; : .,它們在某些表單、命令列和配置檔案中容易出問題,剩下的符號是 ! @ # $ % ^ & * - _ = + ?。兩者都會讓字元池變小,可以多加一兩位長度來彌補。
常見問題
密碼應該設多長?
僅靠密碼保護的賬戶至少 15 位,這也是 NIST SP 800-63B-4 對單因素密碼規定的最低長度。如果使用密碼管理器,16 到 24 位隨機字元不會增加任何負擔。對於經常需要手動輸入的密碼,可以考慮由五六個隨機單片語成的口令短語。
使用網站生成的密碼安全嗎?
crypto.getRandomValues(),密碼不會被傳輸、記錄或儲存。建議把需要的密碼直接複製到密碼管理器中。以位為單位的熵是什麼意思?
它是當前設定下可能生成的密碼總數以 2 為底的對數。80 位意味著理論上有 2 的 80 次方種可能,每多 1 位,猜測的工作量就翻一倍。熵描述的是密碼的生成方式,因此只適用於隨機密碼。
需要定期更換密碼嗎?
不需要按固定週期更換。NIST SP 800-63B-4 要求服務方不得強制定期更換密碼,因為使用者往往會採用可預測的變化規律。當服務方通知資料洩露、密碼出現在洩露資料中,或你懷疑他人已知道密碼時,再進行更換。
要求包含每種字元型別會讓密碼更強嗎?
不會。該選項預設開啟,作用只是確保密碼能通過網站的組成規則。工具會丟棄缺少某種所選字元的密碼並重新生成,這會排除一部分組合,反而讓實際熵略微降低,密碼越短越明顯,所以顯示的數值是一個上限。想提高強度,增加長度才是更好的辦法。