
密碼強度與熵:看懂 NIST SP 800-63B-4、長度和隨機生成的條件
密碼同時包含大小寫英文字母、數字和符號,不代表一定難以猜中。字元組成規則、隨機生成方式,以及整個驗證系統的安全性,是不同問題。
2025 年 7 月定稿的 NIST SP 800-63B-4,區分了驗證端的要求與字串生成器的功能。本文先說明均勻、獨立生成時的搜尋空間,再整理人類選擇、密碼儲存和帳號復原帶來的條件。
日文原文發布: 2026-04-23
熵的簡式以均勻、獨立選擇為前提
將 Shannon 的資訊量模型用在每個位置都從同一候選集合均勻、獨立選取字元的生成器,可得到:
熵(bits)= log₂(候選字元數^長度)
= 長度 × log₂(候選字元數)人類選擇密碼的機率分布並不均勻,因此不能直接套用這個公式,宣稱得到實際強度。以下數值只描述均勻生成時的模型:
表格若超出畫面寬度,可左右捲動。
| 候選集合 | 字元數 | 每字元位元數 | 長度 8 的位元數 |
|---|---|---|---|
| 數字 | 10 | 3.32 | 26.6 |
| 小寫英文字母 | 26 | 4.70 | 37.6 |
| 小寫字母與數字 | 36 | 5.17 | 41.4 |
| 大小寫字母與數字 | 62 | 5.95 | 47.6 |
| 上述字元與 32 個符號 | 94 | 6.55 | 52.4 |
候選數從 62 增為 94,每個既有位置約增加 0.60 位元;從 26 增為 52,每個位置增加 1 位元。長度多一個字元,則增加目前候選數 N 的 log₂(N) 位元。擴大集合的效果會乘上既有長度,所以哪一種變動增加得較多,要看原本的長度與集合。
94 字元模型指不含空白的可列印 ASCII,未必等於特定生成器提供的集合。NanToo 的實際候選數取決於符號選項與排除設定,不能直接以 94 代入。
搜尋空間不等於破解所需時間
只知道熵有幾位元,無法推算密碼一定能撐幾年。線上猜測會受到嘗試頻率限制、額外驗證、監控與服務端其他措施影響;不存在適用於所有網站的每秒猜測次數。
離線猜測則取決於外洩資料、鹽值(salt)、密碼雜湊方式、成本與記憶體參數、平行處理能力,以及攻擊者的硬體和預算。高速 SHA-256 測試或加密貨幣 ASIC 的速度,不能直接套用到密碼驗證。
位元數可以比較同一個均勻生成模型內的候選總數,但不能證明帳號安全,也不能畫出通用的安全/不安全分界。
儲存設計是另一道防線
驗證端應使用帶有鹽值和成本參數的適當密碼雜湊設計,而不是明文或未加強的快速雜湊。目標是提高資料外洩後,每次離線猜測的成本。
RFC 9106 說明 Argon2,並要求符合其互通性要求的實作支援 Argon2id。記憶體量、迭代次數和平行度是不同輸入,部署時要依資源和威脅模型選擇。
方式名稱本身不足以保證安全,還要考慮參數、實作品質、鹽值處理、遷移方式,以及額外秘密金鑰的分離保管。強化儲存也不能讓短密碼或重複使用密碼變成好做法。
分清 NIST 的必須要求與建議事項
以下節錄 SP 800-63B-4 對中央驗證密碼的要求。裝置本機的解鎖 PIN 等啟用秘密屬於不同範圍,不能直接套用。
必須遵守的要求(SHALL)
- 單因素驗證至少 15 個字元;僅作為多因素驗證一部分時,仍至少需要 8 個字元。
- 不得要求混合特定字元種類,也不得強制定期更換;有遭入侵或洩漏的證據時,必須要求更換。
- 選擇密碼時,不得要求安全問題等知識型驗證。
- 若接受 Unicode,計算長度時必須將每個 Unicode 碼位算作一個字元。
- 以完整密碼比對常見、可預測或已外洩密碼的封鎖清單,不是任意禁止其中出現的單字。
- 允許密碼管理器與自動填入,並實作驗證嘗試頻率限制及適當的加鹽密碼雜湊。
建議事項(SHOULD)
支援的最大長度建議至少達 64 個字元,並接受可列印 ASCII、空白與 Unicode,以及允許貼上。接受 Unicode 密碼時,雜湊前進行 NFC 正規化也是建議事項。
SHALL 表示必須、SHOULD 表示建議、MAY 表示允許。這些是服務驗證端的要求,與生成器讓使用者選擇的字串長度要分開評估。NIST 是美國技術指引,並非宣告所有地區、所有服務一律負有相同法定義務;部署時仍應閱讀完整規範。
通行片語也要看單字怎麼選
Diceware 以骰子或等效的均勻亂數,從詞表選取單字。獨立擲一顆六面骰五次,會得到 6⁵ = 7,776 種結果之一,再用該結果找到一個詞條。
若各詞條均勻、獨立選取,一個詞約提供 log₂(7776) ≈ 12.9 位元,六個詞約為 77.5 位元。自行挑喜歡的單字,或編一句自然語句,不會因為剛好有六個詞就符合這個模型。
還要確認使用的服務是否接受片語長度與分隔符號。NanToo 的密碼生成器從字元集合選取,不會產生 Diceware 單字或單字型通行片語。
將生成密碼移入管理器時要注意什麼?
每個服務使用不同隨機值,會帶來保管需求。採用密碼管理器時,請評估其儲存、同步、復原、分享和裝置遺失時的處理方式。
- 不同服務使用不同密碼,長度也要符合目的服務的限制。
- 管理器自身的驗證與復原設定,應依該產品的要求安排。
- 多因素驗證、復原碼及受信任裝置,要視為各自可能失效的環節。
複製生成值時,密碼也會進入裝置剪貼簿。關閉頁面、清除畫面或隱藏結果,不一定會清空剪貼簿。保管完成後,也要留意密碼可能殘留在哪裡。
多因素驗證與抗網路釣魚能力不同
多因素驗證(MFA)使用兩種以上不同類型的因素,例如知識、持有物與生物特徵。它不一定需要中央驗證的密碼:持有的密碼學驗證器搭配生物特徵啟用,也可以提供多個因素。
不同方式的威脅抵抗能力不同。手動輸入的 TOTP 與其他 OTP 可能被釣魚網站即時轉送;不能因為有一次性驗證碼,就認定具備 NIST 所指的抗釣魚能力。WebAuthn 等密碼學機制,也要在實作符合相關要求時,才能提供這種能力。
同步、裝置綁定、金鑰可否匯出和復原流程,都會影響可提供的保證。啟用 MFA 並不會自動解決密碼重複使用、端點遭入侵、工作階段遭竊或復原管道被接管等問題。
實際使用前的檢查清單
- 確認服務的長度和字元限制;適用 NIST 單因素驗證要求時,以至少 15 個字元為參考。
- 每個服務使用不同值,並採用可靠的保管方式。
- 分別檢查生成器的亂數來源、映射方式、候選集合和長度。
- 區分一般 MFA 選項與具抗網路釣魚能力的選項。
- 不要把真實密碼送到不明的檢查網站。
- 有外洩或遭入侵跡象時更換密碼,不依賴例行輪替來補足其他弱點。
- 一起評估儲存、嘗試頻率限制與帳號復原。
重點整理
- 長度 × log₂(候選字元數) 描述均勻、獨立生成的模型。
- 它不是人類自選密碼的直接強度指標,也不是固定破解時間。
- NIST 的最小長度要求、最大長度支援建議與其他建議事項,必須分開閱讀。
- 生成、保管、驗證與復原,各自有不同條件。
- 只看字元種類,無法評估整個帳號的安全性。
參考資料與來源
編輯說明
本文使用 AI 協助編輯,並於發布前由編輯確認。內容仍可能包含事實、解讀或時效上的錯誤;進行重要判斷前,請查閱所列的一手資料或官方文件。

