密碼熵值解析:什麼才是真正的強密碼
當網站告訴你密碼「弱」或「強」時,它其實在衡量熵值——也就是密碼的數學隨機性。理解熵值能幫助你建立真正安全的密碼,而不只是打起來很麻煩的密碼。
什麼是熵值?
熵值以位元(bits)為單位,量化密碼的不可預測性。每增加一位元的熵值,攻擊者必須嘗試的密碼數量就翻倍。計算公式如下:
Entropy = log₂(C^L)
其中:
- C = 字元集的大小
- L = 密碼的長度
或者寫成:熵值 = L × log₂(C)
各字元集的熵值
| 字元集 | 字元池大小 (C) | 每字元位元數 |
|---|---|---|
| 僅數字 (0-9) | 10 | 3.32 |
| 小寫字母 (a-z) | 26 | 4.70 |
| 小寫字母 + 數字 | 36 | 5.17 |
| 大小寫字母 (a-z, A-Z) | 52 | 5.70 |
| 大小寫字母 + 數字 | 62 | 5.95 |
| 所有可列印 ASCII 字元 | 95 | 6.57 |
範例計算:
password(8 個小寫字母):8 × 4.70 = 37.6 位元 — 數秒內即可破解P@ssw0rd(8 個混合字元):8 × 6.57 = 52.6 位元 — 數小時內可破解correct-horse-battery-staple(28 個小寫字母與符號):由於長度優勢,實際有效熵值遠高於此
長度 vs. 複雜度
以下是一個違反直覺的事實:長度對熵值的貢獻比複雜度更大。
| 密碼 | 長度 | 熵值 | 破解時間(每秒 10 億次猜測) |
|---|---|---|---|
Xy7! | 4 | 26.3 位元 | < 1 秒 |
Xy7!Qp2$ | 8 | 52.6 位元 | 142 年 |
mysimplepassword | 16 | 75.2 位元 | 12 億年 |
correct horse battery | 22 | 103 位元 | 宇宙熱寂之後 |
一個 16 字元的純小寫密碼比一個包含所有字元類型的 8 字元密碼更強。這就是為什麼現代安全指引(NIST SP 800-63B)建議使用長密語而非短而複雜的密碼。
「複雜度規則」的問題
傳統密碼政策(必須包含大寫、小寫、數字、符號)其實適得其反:
- 可預測的模式:使用者會把第一個字母大寫,在末尾加
1!→Password1! - 記憶困難:複雜密碼最後都被寫在便利貼上
- 虛假的安全感:8 字元的「複雜」密碼,熵值其實不如 16 字元的簡單密碼
NIST 的現代指引:
- 最少 8 個字元,建議 15 個以上
- 不設組成規則(不要求大寫、符號等)
- 比對已洩露密碼資料庫
- 允許所有可列印字元,包括空格
- 不強制定期更換密碼
密語策略
密語使用隨機單字代替隨機字元:
method: pick 4-6 random words from a dictionary
example: "timber quantum spoon velocity"
entropy: 4 words × ~12.9 bits/word (from 7,776-word list) ≈ 51.7 bits
better: 6 words ≈ 77.5 bits
Diceware 方法使用 7,776 個單字的列表(6^5,對應五顆骰子的擲法)。每個單字增加 12.9 位元的熵值。
優點:
- 容易記憶(你可以想像這些單字的畫面)
- 夠長(自然達到 20-35 個字元)
- 足夠的單字數即可獲得高熵值
- 容易輸入
使用我們的密碼產生器來生成安全的隨機密碼和密語。
實際攻擊速度
熵值只有在與攻擊速度相比時才有意義:
| 攻擊類型 | 速度 | 40 位元密碼 | 60 位元密碼 | 80 位元密碼 |
|---|---|---|---|---|
| 線上攻擊(有速率限制) | 1,000/秒 | 12.7 天 | 36,559 年 | 3,800 萬年 |
| 離線攻擊(CPU) | 10 億/秒 | 1.1 秒 | 36.5 年 | 38,334 年 |
| 離線攻擊(GPU 叢集) | 1 兆/秒 | < 1 秒 | 13 天 | 38 年 |
| 國家級攻擊 | 1P/秒 | < 1 秒 | < 1 秒 | 14 天 |
對於有速率限制和鎖定機制的線上帳號,40 位元以上就足夠了。對於離線攻擊(被竊取的密碼雜湊值),至少需要 80 位元以上。這就是為什麼 Argon2 和 bcrypt 等密碼雜湊演算法存在的原因——它們讓每次猜測都變得昂貴。
密碼管理器的數學
密碼管理器徹底改變了這個等式:
- 一組強主密碼:80 位元以上的熵值(6 個以上的單字密語)
- 所有其他密碼:隨機生成,128 位元以上,每個網站獨立使用
- 不重複使用:某個網站的資料外洩不會影響其他帳號
支持密碼管理器的數學論證是壓倒性的。一組被重複使用的密碼,無論多強,都比每個網站使用獨立弱密碼更危險,因為一次外洩就會讓所有帳號被攻陷。
衡量你的密碼
評估密碼強度時,請考慮:
- 它是否已被洩露? — 即使「強」密碼,如果已經洩露就是弱的(可在 haveibeenpwned.com 檢查)
- 它是隨機的嗎? — 人為選擇的密碼熵值遠低於隨機密碼
- 它如何被儲存? — 使用 cost factor 12 的 bcrypt 比純 MD5 增加約 22 位元的有效熵值
想了解更多關於安全密碼生成的資訊,請參閱我們完整的密碼生成指南。
常見問題
我需要多少位元的熵值?
對於有速率限制的線上帳號:至少 40-50 位元。對於保護加密資料(磁碟加密、密碼管理器主密碼)的密碼:80 位元以上。對於密碼金鑰:128 位元以上。正確的答案取決於你保護的是什麼,以及誰可能會發動攻擊。
在密碼中加一個符號會顯著增強強度嗎?
加一個符號會將字元池從 62 擴大到 95,每個字元約增加 0.6 位元。對於 8 字元的密碼,大約多了 5 位元——相當於多加一個小寫字母。長度幾乎總是比增加字元類型更值得投資。