跳到主要內容

← 返回部落格

如何建立強密碼(以及真正管理好它們)

多數帳號外洩不是有人「破解」了強密碼,而是來自重複使用、太短或外洩的密碼。這篇談什麼才真正讓密碼變強,以及務實的管理方法。

密碼是隨機的,強度是你可以自己算的算術。 我們的密碼產生器預設長度 16,含大寫、小寫與數字 —— 字元池 62 個。熵 = 長度 × log₂(字元池),所以 16 × log₂(62) ≈ 95 位元,工具標成「Strong」。門檻寫死在程式裡:低於 45 位元弱、低於 75 普通、再上去強。兩個推論:加上符號會把字元池提到 87,只多約 8 個位元;而長度多加四個字元,大約多 24 個位元。

長度勝過複雜度

隨機密碼的強度來自它的 —— 大致是攻擊者必須嘗試的組合數。熵隨長度成長的速度,遠快於花俏的字元規則。一個 20 字元的密碼比 8 字元的難暴力破解太多,即使後者有 !@#$

強制的複雜度規則(「必須含大寫和符號」)常常適得其反:它把人推向 Password1! 這種可預測的模式。長而隨機優於短而花招。用密碼產生器可即時得到長、高熵的字串。

我們自己的產生器把這個算術攤開來。在預設值下 —— 長度 16、大寫加小寫加數字、字元池 62 個 —— 熵是長度 × log₂(字元池),所以 16 × log₂(62) ≈ 95 位元,它標成「Strong」。現在比較兩種改善方式:打開符號會把池提到 87,多約 8 個位元;而長度多加四個字元,多約 24 個。長度贏,而數字說出贏多少。

這個說法是算術,而我們自己的密碼產生器把算式攤開了。在頁面預設值下 —— 長度 16、只有字母與數字 —— 字元池是 62,強度顯示 Strong,因為 16 × log2(62) 大約是 95 位元。把符號集也打開,池就變成 87:我們的符號清單有 25 個不同字元,所以是 26 + 26 + 10 + 25。對一個 16 字元的密碼加上符號,買到大約五個位元;多加四個字元,買到大約二十個。「長度優先」這整個論點,一次比較就講完了。

通行短語:又強又好記

對於少數你真的得憑記憶輸入的密碼(裝置登入、密碼管理器的主密碼),用四個以上隨機單字組成的通行短語既強又好記 —— 遠優於短的「複雜」字串。關鍵字是隨機:選你不是因為意義而挑的字。

最重要的兩條規則

  1. 絕不重複使用密碼。 一個網站外洩,攻擊者會拿那組帳密到處試(稱為撞庫)。每站用不同密碼能把災情圍堵住。
  2. 用密碼管理器。 你記不住 100 組不同的 20 字元密碼 —— 也不該去記。管理器會幫你產生、儲存、自動填入,你只要記一組強的主通行短語。

加上兩步驟驗證(2FA)

再完美的密碼也可能被釣魚或外洩。2FA 多加一步 —— 驗證器 App 的代碼或硬體金鑰 —— 讓單靠偷來的密碼不夠用。email、銀行與任何重要帳號都該開啟。App 或硬體 2FA 比簡訊更安全。

快速檢查清單

  • 網站登入用長(16+ 字元)且隨機 → 用產生器。
  • 主密碼用好記的隨機通行短語
  • 每站唯一,存在密碼管理器裡。
  • 重要帳號開2FA
  • 絕不把密碼存在純文字筆記、試算表或聊天訊息。

現在就用免費的密碼產生器產生一個強隨機密碼 —— 它用瀏覽器的加密級亂數,不上傳、不儲存任何東西。

一份檢查清單只有在你真的能檢查時才有用,所以這裡給一個可以檢查的數字。我們的密碼產生器在長度 16、字元池 62 的情況下回報 Strong,大約 95 位元。把每一個字元類別都打開,池會到 87(26 + 26 + 10 + 25 個符號)。如果一個產生器不告訴你它的池有多大,你就沒辦法驗證它的強度宣稱 —— 而背後沒有池的「Strong」是一個顏色,不是一個量測。

熵一覽表

熵以位元(bit)計,每多一個位元,攻擊者要試的次數就翻倍。下表假設每個字元或單字都是均勻隨機挑選的;人為想出的「聰明」密碼,實際熵遠低於此。

密碼組成約略熵
8 字元大寫 + 小寫 + 數字~48 位元
12 字元再加符號(95 字元集)~79 位元
16 字元再加符號(95 字元集)~105 位元
4 個隨機單字取自 7,776 字的字表~52 位元
6 個隨機單字取自 7,776 字的字表~78 位元

低於約 50 位元算弱;達 75 位元以上,一個正確雜湊過的密碼就能從容抵擋離線破解。六個隨機單字的通行短語(約 78 位元)與 12 字元的符號大雜燴不相上下,卻好打得多。

那些門檻也不是意見 —— 它們寫死在工具裡:低於 45 位元說弱、低於 75 說普通、再上去說強。這就是為什麼預設的 16 個字元落在 95 位元、顯示「Strong」,而完全不需要符號。

關於那個 95 位元要補一句,因為這是最常被引用錯的數字:它是產生器的熵,不是密碼的熵。它假設每一個字元都是獨立且均勻抽出來的 —— 對我們的輸出來說為真,對任何你自己想出來的東西來說為假。一個由兩個字典詞加一個年份組成的人選 16 字元密碼,大概有 30 個位元,不是 95 —— 長度完全一樣,熵完全不一樣。這也是為什麼「它有多長」只有在「誰選的」這個問題的答案是「隨機數產生器」時,才是個有用的問題。

常見迷思

  • 「每 90 天強制換一次比較安全。」 現代指引(NIST SP 800-63B)持相反看法:定期到期只會逼出 Spring2026!Summer2026! 這種遞增密碼。只有在懷疑外洩時才該更換。
  • P@ssw0rd 有符號所以很強。」 破解工具會優先套用這些「字母換符號」的替換;字典單字加上顯而易見的替換,幾乎沒有加分。
  • 「密碼管理器是一個大的單點故障。」 它的保險庫是用你的主通行短語加密的,而且它消除了更大的風險 —— 重複使用。

這也順便處理掉最常見的誤解。把 a 換成 @ 不會增加熵,因為它沒有改變池:攻擊者的字典裡本來就同時有兩種拼法。會改變算術的是池和長度 —— 我們的預設值是 62 的 16 次方,或者用比較好讀的方式說,95 位元。多四個隨機字元,勝過你想得出來的任何聰明替換 —— 而這件事你可以用乘法核對。

你的密碼應該怎麼被儲存

這你控制不了,但值得知道「好」長什麼樣:好的服務絕不以明文存你的密碼,只會保存用 bcrypt、scrypt 或 Argon2 這類「慢」演算法做出的加鹽雜湊,絕不用單純的 MD5。如果某網站能把你的原始密碼用 email 寄回給你,那就是警訊;想知道為什麼快速雜湊在這裡不合格,可看MD5 還安全嗎?

小 FAQ

簡訊 2FA 沒用嗎? 不,遠比沒有好,但驗證器 App 或硬體金鑰能避開 SIM 卡調包攻擊,能用就優先用。

如果網站限制長度或禁用符號怎麼辦? 用它允許的最長長度,並保持唯一即可 —— 用密碼產生器就能在符合各站規則的同時維持隨機。