開發者工具

怎麼設定安全的密碼?強密碼原則、密碼片語與密碼管理器入門

用可以自己驗算的例子說明為什麼密碼長度比複雜度重要、每個網站為何要用不同密碼、密碼片語的優缺點,以及如何搭配密碼管理器與兩步驟驗證。

#密碼#資訊安全#密碼產生器

「密碼至少 8 碼,要有大小寫、數字和符號」是很多人對安全密碼的印象。於是我們把名字的第一個字母改成大寫、在後面加上生日和一個驚嘆號,看起來符合規定,實際上卻很好猜。這篇文章用幾個可以自己驗算的數字,說明什麼樣的密碼才真正難猜,以及日常可以怎麼做。如果只想馬上拿到一組好密碼,可以直接使用密碼產生器,密碼只在你的瀏覽器內產生,不會上傳。

密碼為什麼會被猜到?

攻擊者很少真的「從 aaaa 試到 zzzz」。更常見的做法有兩種:一是拿常見密碼、人名、日期、鍵盤順序以及它們的變化(把 a 換成 @、結尾加 123)去試;二是拿其他網站外洩的帳號密碼,直接到別的網站登入。

這代表兩件事。第一,只要密碼是人想出來的,就有規律可循,表面上再複雜也可能很快被猜中。第二,就算密碼本身很強,只要在好幾個網站重複使用,其中一個網站出事,其他網站也會跟著遭殃。

用「熵」衡量隨機密碼的強度

如果密碼的每個字元都是隨機抽出來的,就可以用「熵」來估計它有多難猜,單位是 bits:

熵 = 密碼長度 × log₂(字元集大小)

熵每多 1 bit,可能的組合數就變成 2 倍。以密碼產生器的預設值為例,字元集包含:

  • 大寫字母 26 個
  • 小寫字母 26 個
  • 數字 10 個
  • 符號 23 個

合計 26+26+10+23=85 種字元,log₂(85)≈6.409。長度 16 的密碼,熵=16×6.409≈102.5 bits。工具把未滿 40 bits 列為弱、40–59 為普通、60–79 為強、80 以上為很強,所以這組密碼屬於「很強」。

要特別提醒的是,這個公式只適用於隨機產生的密碼。自己想的密碼不是每個字元都獨立隨機,套用這個公式會嚴重高估它的強度。

為什麼長度比複雜度重要?

從公式可以看出,長度是用乘的,而字元種類只影響 log₂ 裡面的數字。比較下面三種隨機密碼:

密碼組成 計算 熵
8 個字元,只有小寫 8×log₂(26)≈8×4.700 約 37.6 bits
8 個字元,大小寫+數字+符號 8×log₂(85)≈8×6.409 約 51.3 bits
16 個字元,只有小寫 16×log₂(26)≈16×4.700 約 75.2 bits

把字元種類從 26 種增加到 85 種,8 個字元的密碼多了大約 13.7 bits;但只要把長度從 8 加到 16,就算只用小寫字母也多了 37.6 bits。也就是說,與其在短密碼裡塞符號,不如直接把密碼加長。

這也解釋了為什麼遇到「不能用符號」或「只能用英數」的網站不用太擔心:把長度再拉長幾個字元就能補回來。

每個網站都要用不同的密碼

再強的密碼,重複使用就會變成弱點。網站的資料庫有可能外洩,一旦你的帳號密碼流出,攻擊者會自動拿去各大網站嘗試登入。如果你的電子信箱、購物網站和社群帳號用的是同一組密碼,等於一次全部失守。

每個網站用不同的密碼,損害就會被限制在出事的那一個網站。其中電子信箱最重要,因為大部分網站的「忘記密碼」都是寄信到信箱,信箱被拿走,其他帳號也守不住。

用密碼管理器記住所有密碼

每個網站一組 16 個字元的隨機密碼,沒有人背得起來,也不需要背。密碼管理器會把所有密碼加密保存,登入時自動填入,你只需要記住一組主密碼。瀏覽器與手機系統多半內建這類功能,也有獨立的密碼管理器可以選擇。

使用密碼管理器之後,設定密碼的流程會變得很簡單:

  1. 註冊或修改密碼時,用密碼產生器或密碼管理器內建的功能產生一組隨機密碼。
  2. 複製貼上到網站,並存進密碼管理器。
  3. 之後登入由密碼管理器自動填入,不必再看到這組密碼。

相對地,請不要把密碼存在沒有加密的記事本、試算表、便利貼或聊天訊息裡,也不要把密碼傳給別人。這些地方只要裝置借給別人、帳號被登入或畫面被看到,密碼就一起外流。真的需要和家人或同事共用帳號時,使用密碼管理器的分享功能會比直接傳訊息安全。

再加一道鎖:兩步驟驗證

兩步驟驗證是在密碼之外,登入時再多確認一件事,例如驗證 App 產生的一次性驗證碼,或是實體安全金鑰。開啟之後,即使密碼不小心外洩,對方少了第二道驗證也不容易登入。

建議優先替電子信箱、網路銀行、社群帳號和密碼管理器本身開啟兩步驟驗證。開啟時記得把網站提供的備用碼保存好,避免手機遺失時連自己都登不進去。

密碼片語:好記,但單字數要夠

有些密碼還是得親手輸入,例如密碼管理器的主密碼、電腦的登入密碼。這時候可以考慮密碼片語:由幾個隨機挑選的單字組成,例如用連字號把幾個常見英文單字接起來。它的優點是好記、好唸、在手機上也好輸入。

密碼片語的熵算法是:

熵 = 單字數 × log₂(單字表大小)

關鍵在於單字表有多大。本站密碼產生器內建 300 個常見英文單字,log₂(300)≈8.229:

  • 4 個單字:4×8.229≈32.9 bits(弱)
  • 5 個單字:5×8.229≈41.1 bits(普通)
  • 6 個單字:6×8.229≈49.4 bits(普通)
  • 8 個單字:8×8.229≈65.8 bits(強)

如果勾選「結尾加一個數字」,會再增加 log₂(10)≈3.3 bits,例如 4 個單字加數字約 36.2 bits。

誠實地說,4 個單字的片語熵值並不高。建議至少使用 5–6 個單字並搭配兩步驟驗證;保護重要帳號時用到 8 個單字,或是改用隨機字元密碼。單字表越大,每個單字提供的熵越多:例如單字表若有 7776 個單字,每個單字約 12.9 bits,6 個單字就有約 77.5 bits。

另外有兩個常見的誤解:

  • 片語必須隨機挑選。自己挑喜歡的單字、用名言或歌詞,都不算隨機,強度遠低於公式算出來的數字。
  • 首字大寫與分隔符號幾乎不增加強度。因為攻擊者可以假設你用了固定的格式,這些選項主要是為了符合網站的密碼規定,或讓片語比較好讀。

小結

  • 密碼要由工具隨機產生,不要自己想。
  • 長度比複雜度重要:隨機密碼建議至少 16 個字元。
  • 每個網站用不同的密碼,並交給密碼管理器保存。
  • 重要帳號開啟兩步驟驗證。
  • 密碼片語適合需要親手輸入的場合,但單字數要夠多。
  • 不要把密碼存在未加密的記事本,也不要傳給別人。

現在就可以打開密碼產生器,先替最重要的電子信箱換一組新的隨機密碼,再慢慢把其他帳號換掉。

常見問題

密碼一定要包含大小寫、數字和符號嗎?

不一定。對隨機產生的密碼來說,長度的影響比字元種類更大。只用小寫字母的 16 個字元隨機密碼約有 75.2 bits,比包含四種字元的 8 個字元密碼(約 51.3 bits)還強。網站有規定時照規定設定即可。

4 個單字的密碼片語夠安全嗎?

要看單字表大小。從 300 個單字的單字表隨機選 4 個只有約 32.9 bits,並不高。建議至少 5–6 個單字並搭配兩步驟驗證,重要帳號用 8 個單字或改用隨機字元密碼。

線上密碼產生器安全嗎?

要看它在哪裡產生密碼。在瀏覽器本機用 crypto.getRandomValues 產生、不上傳也不儲存的工具,密碼不會離開你的裝置。使用前可以先確認頁面有沒有清楚說明這一點。

喜歡這篇文章嗎?

你的支持能幫助 Alan 工具箱持續維護,並新增更多免費工具與教學內容。

支持 Alan 工具箱 ↗