好密碼的條件
- 夠長:每多一個字元,被猜中的難度就乘上好幾倍。長度比「一定要有符號」更重要。
- 真的隨機:人想出來的密碼,不管多複雜,都有跡可循,例如把 a 換成 @、生日加在後面,這些套路破解工具都會試。用亂數產生才沒有規律。
- 每個網站都不一樣:同一組密碼用在多個網站,其中一個外洩,其他帳號全部連帶被試。
- 用密碼管理工具存:長又隨機的密碼人腦記不住,交給密碼管理工具記,你只需要記一組很強的主密碼。
- 重要帳號加兩步驟驗證:就算密碼外洩,對方還是需要第二道驗證。
強度(熵)怎麼看
熵的單位是位元,意思是「要猜幾次才猜得中」的對數:每多 1 位元,猜中所需的次數大約多一倍。隨機字元密碼的熵是「長度 × log₂(字元池大小)」。例如 16 個字元、從 87 個字元(大小寫、數字、符號)裡隨機抽,約 103 位元。頁面上的強度分級只是方便判讀的粗略參考:
| 熵(位元) | 頁面標示 | 適合用在 |
|---|---|---|
| 低於 40 | 弱 | 不建議使用 |
| 40 到 59 | 普通 | 不重要、有登入次數限制的場合 |
| 60 到 79 | 強 | 一般網路帳號 |
| 80 以上 | 很強 | 金融、主要信箱、密碼管理工具主密碼 |
這個數字假設每個字元都是獨立隨機抽出的。因為本工具會確保勾選的每一類字元至少出現一次,實際的熵比公式算出來的略低,但差距很小。
「好記的密語」是什麼
密語(passphrase)是用幾個隨機英文單字串起來當密碼,例如 Lunchbox-Cactus-Frozen-Hazy-Zippy。單字比一串亂碼好記、也好在手機上輸入,只要字是隨機抽的,強度也很夠:本工具的字表有 7,776 個單字,每個字約 12.9 位元,抽 5 個字約 64 位元,抽 7 個字約 90 位元。這很適合需要「自己記住」的密碼,例如電腦開機密碼、密碼管理工具的主密碼。
字表來源與授權:使用的是電子前哨基金會(Electronic Frontier Foundation,EFF)於 2016 年公開的 Large Wordlist for Random Passphrases,原本設計給擲骰子選字用。依 EFF 網站著作權政策(https://www.eff.org/copyright),原創內容採 CC BY 4.0 授權。姓名標示:EFF Large Wordlist, © Electronic Frontier Foundation, CC BY 4.0,未修改(只是轉成瀏覽器可直接讀取的格式)。字表原始頁面:eff.org/deeplinks/2016/07/new-wordlists-random-passphrases。
怎麼用這個工具
- 選「隨機字元」或「好記的密語」。
- 調整長度與要用的字元(或單字數與分隔符號),結果會即時更新。
- 要一次產生多組,改「一次產生幾組」。按「重新產生」會全部重抽。
- 按每組旁邊的「複製」,直接貼到要設定的地方。建議馬上用密碼管理工具存起來。
常見問題
在網頁上產生密碼安全嗎?你們會看到我的密碼嗎?
密碼是在你的瀏覽器裡用 crypto.getRandomValues 產生的,產生後只存在這個頁面的記憶體裡,不會送到任何伺服器,我們沒有記錄,也看不到。你可以在產生完之後把網路斷掉再試,功能照常運作。建議複製後直接貼進密碼管理工具或要設定的網站,不要另外存在記事本、截圖或聊天軟體裡。
密碼要多長才夠安全?
長度比花樣重要。一般帳號建議 16 個字元以上,銀行、主要信箱和密碼管理工具的主密碼建議 20 個字元以上,或用 5 個字以上的「好記的密語」。頁面會顯示這組密碼的熵(以位元計),數字越大,被暴力猜中的難度越高:低於 40 位元算弱,60 位元以上一般用途夠用,80 位元以上很強。
「排除易混淆字元」是什麼?要勾嗎?
數字 0 和大寫 O、數字 1 和小寫 l 與大寫 I,在很多字型裡長得非常像。如果密碼需要用眼睛看著輸入,例如設定電視、印表機、Wi-Fi 或唸給別人聽,建議勾選,可以避免輸入錯誤;代價是字元池少了幾個字元,熵會稍微降低,把長度多加一兩位就補回來了。純粹用複製貼上的帳號,不勾也沒問題。
「好記的密語」模式是什麼?安全嗎?
它是從 EFF(電子前哨基金會)公開的 7,776 個英文單字表裡,隨機抽出幾個字用符號接起來,像是 Lunchbox-Cactus-Frozen-Hazy-Zippy。每個字貢獻約 12.9 位元的熵,5 個字約 64 位元,比一般 8 到 10 個字元的混合密碼強,又比較容易記,也容易用手機輸入。前提是這幾個字完全是隨機抽的,不能自己挑「好記的」字組合。
密碼產生好之後,要怎麼管理?
每個網站用不同的密碼,並用密碼管理工具(瀏覽器內建的、手機系統內建的,或獨立的密碼管理軟體都可以)儲存。重要帳號再加開兩步驟驗證。不要把同一組密碼用在多個網站,因為其中一個網站外洩,其他帳號就會被拿去試。
運作原理
密碼全部在你的瀏覽器裡產生,不會經過伺服器,也不會儲存。亂數來源是 Web Crypto API 的 crypto.getRandomValues,這是作業系統提供、瀏覽器內建的密碼學等級亂數。把亂數換算成字元池或字表裡的位置時,程式用拒絕取樣,丟掉會造成偏差的尾端數值,確保每個字元、每個單字被抽到的機率完全相同。沒有使用 Math.random。