密碼強度與熵:看懂 NIST SP 800-63B-4、長度和隨機生成的條件
LLIFESTYLE
生活發布: 7 分鐘閱讀

密碼強度與熵:看懂 NIST SP 800-63B-4、長度和隨機生成的條件

密碼同時包含大小寫英文字母、數字和符號,不代表一定難以猜中。字元組成規則、隨機生成方式,以及整個驗證系統的安全性,是不同問題。

2025 年 7 月定稿的 NIST SP 800-63B-4,區分了驗證端的要求與字串生成器的功能。本文先說明均勻、獨立生成時的搜尋空間,再整理人類選擇、密碼儲存和帳號復原帶來的條件。

日文原文發布: 2026-04-23

熵的簡式以均勻、獨立選擇為前提

將 Shannon 的資訊量模型用在每個位置都從同一候選集合均勻、獨立選取字元的生成器,可得到:

熵(bits)= log₂(候選字元數^長度)
          = 長度 × log₂(候選字元數)

人類選擇密碼的機率分布並不均勻,因此不能直接套用這個公式,宣稱得到實際強度。以下數值只描述均勻生成時的模型:

表格若超出畫面寬度,可左右捲動。

候選集合字元數每字元位元數長度 8 的位元數
數字103.3226.6
小寫英文字母264.7037.6
小寫字母與數字365.1741.4
大小寫字母與數字625.9547.6
上述字元與 32 個符號946.5552.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 並不會自動解決密碼重複使用、端點遭入侵、工作階段遭竊或復原管道被接管等問題。

實際使用前的檢查清單

  1. 確認服務的長度和字元限制;適用 NIST 單因素驗證要求時,以至少 15 個字元為參考。
  2. 每個服務使用不同值,並採用可靠的保管方式。
  3. 分別檢查生成器的亂數來源、映射方式、候選集合和長度。
  4. 區分一般 MFA 選項與具抗網路釣魚能力的選項。
  5. 不要把真實密碼送到不明的檢查網站。
  6. 有外洩或遭入侵跡象時更換密碼,不依賴例行輪替來補足其他弱點。
  7. 一起評估儲存、嘗試頻率限制與帳號復原。

重點整理

  • 長度 × log₂(候選字元數) 描述均勻、獨立生成的模型。
  • 它不是人類自選密碼的直接強度指標,也不是固定破解時間。
  • NIST 的最小長度要求、最大長度支援建議與其他建議事項,必須分開閱讀。
  • 生成、保管、驗證與復原,各自有不同條件。
  • 只看字元種類,無法評估整個帳號的安全性。

參考資料與來源

編輯說明

本文使用 AI 協助編輯,並於發布前由編輯確認。內容仍可能包含事實、解讀或時效上的錯誤;進行重要判斷前,請查閱所列的一手資料或官方文件。

相關文章