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

how to determine password strength
如何正確判斷密碼強度

真正決定密碼強度的是什麼

密碼強度不是一個單一數字——它是一小組屬性的集合,共同描述這個密碼在實際上有多難被猜中。一旦你為這些屬性命名,該如何為它們排序優先順序就顯而易見了。

長度是主導因素。根據 NIST SP 800-63B,作為唯一認證因素的使用者自選密碼應至少有十五個字元長;較短的值會被視為弱密碼,因為它們落在現代字典和憑證外洩攻擊的實際範圍之內。每增加一個字碼點都會倍增攻擊者必須考慮的候選數,而長度的擴展速度比任何你可能強制執行的組合規則都快。

獨特性與長度同等重要。帳號被盜用最大的單一驅動因素就是跨服務的重複使用:一次外洩就會暴露所有共用同一密碼的帳號。一個從未出現在外洩資料中、又長又獨特的密碼,比一個已存在於公開交易外洩語料庫中的較短密碼更難被攻破。

可預測性是第三個軸。像 abcabcabc 這樣的重複區塊,或像 abcd 這樣的單調遞增序列,會把有效的搜尋空間壓縮到攻擊者能在數秒內列舉完的程度。辨識這些狹窄的模式既廉價又明確;但要辨識每一種鍵盤走法、引文、歌詞、人名或外洩值卻做不到,這就是為什麼真實世界的驗證工具必須結合強度計、外洩資料來源和密碼管理工具。

大多數線上強度計的限制

瀏覽器式的強度計多年來已有所改進,但常見的那些仍然做出三項它們實際上無法兌現的承諾。

許多工具宣稱一個「破解時間」或「熵位元數」的數字,彷彿它是一項物理量測。NIST 本身就指出,估算使用者自選密碼的熵是困難的,因為其底層分佈是由人類行為所形塑,而非均勻的隨機性。一個帶三位有效數字的單一數字是表演,不是分析。

大多數強度計也強制執行組合規則——大寫、小寫、數字、符號——若缺少某個類別就扣分。已被證明的是,強制組合規則會把使用者推向像 P@ssw0rd1! 這樣可預測的替換方式,且無法取代長度或封鎖清單篩選。多樣性是資訊,不是規則。

最後,許多強度計會將密碼上傳到遠端伺服器以「檢查」它。即便操作者不記錄任何東西,該傳輸仍跨越了信任邊界並增加攻擊面。一個真正透明的強度計會把值保留在頁面中,並向你展示它所套用的規則,讓你能自行稽核輸出。

逐步進行本地、透明化的評估

要知道一個候選密碼是否合理,最快的方法是將它通過一個規則公開透明的本地強度計。Password Strength Checker 正是基於這個理念打造:什麼都不會離開瀏覽器,規則是明確的,輸出是描述性的而非預測性的。

  1. 在輸入欄位中輸入或貼上候選密碼。該欄位預設為遮罩顯示,因此可降低被窺視的風險。僅在單獨一人且需要核對特定字元時,才按「顯示」。
  2. 查看以字碼點計算的長度。由於強度計計算的是 Unicode 字碼點,一個表情符號算一個字元,而不是兩個 UTF-16 單位;帶有空格或非 ASCII 字母的密碼片語,其量測方式也與目標服務應該採用的方式一致。
  3. 檢視描述性的字元群組計數。強度計會分別註記小寫、大寫、數字、符號、空白字元和非 ASCII 字元,但並不要求每種都出現——這個計數是供你參考的資訊,不是強度計強制執行的規則。
  4. 查看模式旗標。檢查器會回報是否發現由一到四個字碼點組成、至少重複三次的短區塊,或長度為四個字碼點、以一為單位遞增或遞減的序列。乾淨的結果代表這兩項狹窄檢查未觸發,並不代表密碼不可猜測。
  5. 閱讀五級標籤以及每一項建議。將分數當作選擇更好密碼的回饋,接著確認目標服務實際接受這些字元,並仰賴帳號提供者的封鎖清單、你的密碼管理工具以及 MFA 來處理其餘事項。

解讀分數:門檻與其意義

五級標籤是根據明確的回饋規則所建構,而非來自熵的估算。了解邊界有助於你在將密碼提交到任何地方之前,決定該修改什麼。

標籤觸發條件
空 (Empty)未輸入任何字碼點。
弱 (Weak)少於八個字碼點。
尚可 (Fair)八至十四個字碼點,或任何長度但觸發重複或單調序列模式檢查者。
良好 (Good)十五至十九個字碼點,且未偵測到任何模式。
強 (Strong)二十個以上字碼點,且未偵測到任何模式。

有兩個邊界值得注意。首先,觸發重複或序列檢查的密碼上限為「尚可」,不論長度為何;這是一項刻意的訊號,表示該密碼含有攻擊者可利用的結構。其次,十五個字元以下的門檻比其上方的標籤更嚴格,因為 NIST 將短於十五個字元、且作為唯一因素的使用者自選密碼視為弱密碼。這個分數是一條公開的規則,而非關於密碼實際上能多快被破解的宣稱。

強度計之外:封鎖清單、管理工具與 MFA

本地強度計無法包辦所有事情,而它留下的缺口正是實際部署中最可能咬你一口的地方。

強度計不會查詢外洩語料庫。它無法知道這個確切的字串是否曾出現在外洩資料中,因此它無法告訴你:由知名引文組成的十五字元密碼片語,實際上就是字典裡的一個條目。為此,帳號提供者的完整封鎖清單檢查才是正確的工具——即使本地強度計回報為「強」,仍應遵循它的警告,因為封鎖清單看得到強度計看不到的東西。

組合規則是描述性的,不是必要的。強度計僅回報出現的字元群組並就此打住;你並不需要在每個密碼中都放入大寫字母、數字和符號。長度、獨特性與封鎖清單篩選的權重大於強制的多樣性,而為每個服務產生一個全新的隨機密碼,則能徹底消除這個取捨。將強度計與本地 Password Generator 以及密碼管理工具搭配使用,是標準的工作流程:產生一次、儲存一次、永不重複使用。

多因素驗證補上了最後一塊拼圖。一個長、獨特、通過封鎖清單的密碼,在電子郵件、金融、雲端和管理員帳號上仍然受惠於第二個因素;在服務支援之處,更受惠於抗網釣的 passkey。強度是多層次的:強度計涵蓋長度與明顯模式,封鎖清單涵蓋已知外洩,管理工具涵蓋儲存與獨特性,MFA 則涵蓋當其他某一層失效時的情況。

當「強」標籤仍隱藏著弱密碼時

有三個常見的情境會產生「強」結果,卻仍使帳號暴露於風險之中;預先辨識它們能讓你避免換錯密碼。

一段很長的引文、歌詞或知名句子。強度計只會捕捉狹窄的重複和單調序列。一段文法完全正確的英文句子,在長度與模式上都會拿到「強」,卻仍可能是攻擊者首先嘗試的項目之一,因為它出現在歌曲歌詞、書籍和社群媒體的個人簡介中。OWASP Authentication Cheat Sheet 明確警告:由常見詞組構成的密碼片語會在字典式攻擊下淪陷。

來自其他網站的已重複使用密碼。強度計沒有你其他帳號的紀錄,因此一個重複使用的二十八字元密碼片語仍會拿到「強」,即使任何一個其他服務發生一次外洩,都會在所有你曾用過該密碼的地方造成帳號被攻陷。應將重複使用、外洩和疑似遭破解視為立即更換密碼的觸發條件,而非排在任意行事曆上的待辦事項。

一個存在於強度計未見過之外洩語料庫的值。本頁面不會發出任何網路查詢,也不會下載外洩資料庫,因此它無法告訴你這個密碼是否曾出現在外洩中。請遵循帳號提供者的外洩警告、更換密碼,並撤銷該帳號的作用中工作階段或權杖。

誠實的說法是:「強」標籤是一項檢查的終點,而非整個流程的終點。將強度計與密碼管理工具、服務的封鎖清單、MFA,以及對冗長易記詞組保持合理的懷疑結合起來,你實際使用的密碼將比分數本身所暗示的更接近真正的強。

如果你正在權衡各種選項,如何判斷 ROT47 編碼解碼器是否適合你 對此有詳細說明。