密碼的強度取決於三項可測量的屬性:以字碼點計算的長度、是否重複或呈現明顯的序列模式,以及你所使用的服務是否直接將它封鎖。目前的 NIST 指引將短於十五個字元的密碼視為脆弱(當密碼是唯一的身分驗證因素時),因為攻擊者不會逐一列舉每個字元——他們會使用外洩語料庫、字典、鍵盤走法、特定服務的詞彙,以及機率模型來對抗輸入。強度與其說在於字元的抽象多樣性,不如說在於你所選擇的密碼是否能從那些可預測的、大量外洩且常見的值中脫穎而出。一個本機、透明化的強度計能在不將密碼上傳、或估算一個誤導性的破解時間的前提下,檢視這三項屬性——這正是像 Password Strength Checker 這類工具的設計目的:計算字碼點、標記簡單的重複與單調序列,並回報一個你能採取行動的五級標籤。

真正決定密碼強度的是什麼
密碼強度並非單一數字——它是一小組屬性的集合,共同描述這個密碼在實務上有多難被猜中。一旦你為這些屬性命名,該如何為它們加權的順序就變得顯而易見。
長度是主導因素。根據 NIST SP 800-63B,作為唯一身分驗證因素的使用者自選密碼,長度應至少十五個字元;較短的值會被視為脆弱,因為它們落在現代字典攻擊與外洩攻擊的實際範圍之內。每多一個字碼點,攻擊者必須考慮的候選數就會倍增,而長度的擴展速度比你能強制執行的任何組合規則都快。
獨特性與長度同樣重要。帳號被盜用的最大單一驅動因素是跨服務重複使用:一個外洩事件就會暴露所有共用同一組密碼的帳號。一組從未在外洩中出現的長且獨特的密碼,比一組已經存在於公開交易的外洩語料庫中的較短密碼更難被攻擊。
可預測性是第三個軸。例如 abcabcabc 這類重複片段,或像 abcd 這種單調遞增的序列,會將實際的搜尋空間壓縮到攻擊者幾秒鐘內就能列舉完的程度。辨識這些狹窄的模式既便宜又明確;但要辨識每一種鍵盤走法、引文、歌詞、人名或外洩值則不然,這就是為什麼真實世界的驗證工具必須結合強度計、外洩資料來源與密碼管理工具。
多數線上強度計的限制
多年來,瀏覽器型的強度計已有改善,但常見的那些仍然做出三項它們實際上無法兌現的承諾。
許多工具會宣稱「破解時間」或「熵位元數」這類數字,彷彿它是一項實體量測。NIST 本身便指出,對使用者自選密碼估算熵是困難的,因為底層分佈是由人類行為所塑造,而非均勻的隨機性。一個帶三位有效數字的單一數字是表演,而非分析。
多數強度計也強制執行組成規則——大寫、小寫、數字、符號——若缺少某個類別就扣分。強制組成規則已被證明會將使用者推向像 P@ssw0rd1! 這類可預測的替換,也無法取代長度或封鎖清單篩選。多樣性是資訊,而不是規則。
最後,許多強度計會將密碼上傳到遠端伺服器以進行「檢查」。即便操作者不記錄任何東西,該傳輸本身就跨越了信任邊界並增加了一個攻擊面。一個真正透明的強度計會將值保留在頁面中,並向你展示它套用的規則,讓你能自行稽核輸出結果。
逐步進行本機、透明化的評估
要知道一個候選密碼是否合理,最快的方法是將它通過一個規則有文件記載的本機強度計。Password Strength Checker 正是圍繞這個理念打造:資料不離開瀏覽器、規則明確、輸出是描述性的而非預測性的。
- 在輸入欄位中輸入或貼上候選密碼。該欄位預設為遮罩狀態,因此可降低被旁人窺視的風險。只有在獨處且需要核對某個特定字元時,才按下「顯示」。
- 查看以字碼點計算的長度。由於此強度計計算的是 Unicode 字碼點,一個 emoji 算一個字元(而非兩個 UTF-16 單位),而帶有空格或非 ASCII 字母的 passphrase,也會以目標服務應該採用的相同方式進行計算。
- 檢視描述性的字元群組計數。強度計會分別註記小寫、大寫、數字、符號、空白字元與非 ASCII 字元,但並不要求每類都要出現——該計數是供你參考的資訊,而非強度計強制執行的規則。
- 查看模式旗標。檢查器會回報是否發現一到四個字碼點的短片段被重複至少三次,或發現四個字碼點依序遞增或遞減的序列。乾淨的結果代表這兩項狹窄檢查未被觸發,而非代表該密碼不可猜測。
- 閱讀五級標籤與每一項建議。將分數當作挑選更好密碼的回饋,然後確認實際服務接受這些字元,並仰賴帳號提供者的封鎖清單、你的密碼管理工具以及 MFA 來處理其餘部分。
解讀分數:門檻與其意義
這個五級標籤是由明確的回饋規則所建立,而非來自熵的估算。了解這些界線有助於你在將密碼提交到任何地方之前,決定要更改什麼。
| 標籤 | 觸發條件 |
|---|---|
| 空 (Empty) | 未輸入任何字碼點。 |
| 弱 (Weak) | 少於八個字碼點。 |
| 尚可 (Fair) | 八至十四個字碼點,或任何長度但觸發了重複或單調序列模式檢查。 |
| 良好 (Good) | 十五至十九個字碼點且未偵測到模式。 |
| 強 (Strong) | 二十個或更多字碼點且未偵測到模式。 |
有兩個界線值得注意。首先,一旦觸發重複或序列檢查,無論長度為何,密碼最高只會被評為尚可,這是刻意發出的訊號,表示該密碼含有攻擊者可利用的結構。其次,十五個字元以下的門檟比其上方的標籤更嚴格,因為 NIST 將短於十五個字元的使用者自選密碼(作為唯一因素時)視為脆弱。這個分數是一條已公布的規則,而非對密碼實際可被破解速度的宣稱。
超越強度計:封鎖清單、管理工具與 MFA
本機強度計無法包辦一切,而它留下的空隙,正是在實際環境中最可能讓你受害的地方。
強度計不會查詢外洩語料庫。它無法知道這個確切字串是否曾出現在外洩資料中,因此無法告訴你:一段著名引文的十五字元 passphrase,實際上就是字典裡的一個條目。為此,帳號提供者的完整封鎖清單檢查才是正確的工具——即使本機強度計回報為強,仍應遵循其警告,因為封鎖清單看見了強度計所看不見的東西。
組成規則是描述性的,不是強制的。強度計只回報出現了哪些字元群組,然後就此打住;你並不需要在每組密碼中都放入大寫字母、數字與符號。長度、獨特性與封鎖清單篩選的份量,勝過強制的多樣性;而為每個服務產生一組全新的隨機密碼,則能完全消除這個取捨。將強度計與本機 Password Generator 及密碼管理工具搭配使用,就是標準作業流程:產生一次、儲存一次、永不重複使用。
多因素身分驗證補上了最後一塊拼圖。一組既長又獨特且通過封鎖清單的密碼,仍然能從電子郵件、金融、雲端與系統管理員帳號上的第二因素,以及服務所支援的任何抗網路釣魚 passkey 中受益。強度是多層次的:強度計涵蓋長度與明顯的模式,封鎖清單涵蓋已知外洩,管理工具涵蓋儲存與獨特性,MFA 則涵蓋當其他某一層失守時的情況。
當「強」標籤仍隱藏著脆弱的密碼
有三種常見情境會產生「強」結果,卻依然讓帳號暴露在外;預先辨識這些情境,能避免你換錯密碼。
一段很長的引文、歌詞或著名台詞。強度計只會抓出狹窄的重複與單調序列。一句結構完美的英文句子會因長度與模式而得到「強」,卻仍可能是攻擊者最先嘗試的項目之一,因為它出現在歌詞、書籍與社群媒體自介中。OWASP Authentication Cheat Sheet 便明確警告:由常見詞組建構的 passphrase 會在字典式攻擊下淪陷。
來自其他網站的已重複使用密碼。強度計沒有你其他帳號的紀錄,因此一組重複使用的二十八個字元 passphrase 會得到「強」,即便任何其他服務發生一次外洩,都會在你使用過的所有地方將其攻破。將重複使用、外洩與疑似遭到破解視為立即更換的觸發條件,而不是排在任意行事曆上的待辦事項。
一個存在於強度計尚未看過的外洩語料庫中的值。此頁面不會發出任何網路查詢,也不會下載外洩資料庫,因此無法告訴你該密碼是否曾出現在外洩中。遵循帳號提供者的外洩警告,更換密碼,並撤銷該帳號的有效工作階段或權杖。
誠實的說法是:「強」標籤是一項檢查的終點,而非整個流程的終點。將強度計與密碼管理工具、服務的封鎖清單、MFA,以及對長而好記的詞組保持合理懷疑結合起來,你實際使用的密碼將比分數本身所暗示的更接近真正的強。
若你正在權衡選項,如何判斷 ROT47 編碼解碼器是否適合你 對此有詳細說明。
若你正在權衡選項,為 PDF 加上密碼:本地產生並套用 對此有詳細說明。