NIST SP 800-63B-4:閱讀密碼安全性的新標準(11 月 7 日,有重要新增內容)。

.

在數位時代,密碼仍然是使用最廣泛的驗證方式之一。但是您知道嗎?許多傳統的密碼政策其實是適得其反的?

美國國家標準與技術研究院 (NIST) 的 SP 800-63B-4 提供了密碼安全性的最新指導,並且其中包含推翻過去「常識」的內容。(長久以來專家們的常識……)。本文將以通俗易懂的語言,為企業中負責以密碼為基礎的使用者驗證系統的人員,以及負責決定此類政策的人員和管理階層,說明這份重要文件的核心內容。

.

兩類密碼

NIST SP 800-63B-4 將密碼分為兩種類型。

1. 密碼 在伺服器端驗證的秘密資訊。在登入時傳送至伺服器,並集中驗證。

.

2. 啟動秘密在裝置本機驗證的秘密資訊。例如,智慧型手機的解鎖密碼,不會傳送到伺服器。

.

推翻傳統「常識」的新要求

❌ 不該做的事.

不強制定期更改密碼

    <!-- /wp:list-item -->
      不再建議每 90 天更改一次密碼。
        只有在有侵權證據的情況下,才可要求變更。 <!
      • 理由:頻繁的變更會導致使用者選擇可預測的弱密碼
    <!
注意:有些顧問經常說 ISMS 等要求這樣做,但他們 「錯了」:ISO/IEC 27002 並沒有這樣說,而是說 「要求頻繁更改密碼可能會有問題 」。ISO/IEC 27002 並沒有這樣說,而是說「要求頻繁變更密碼可能會有問題 」(我不確定這是不是我一開始所指的文字。)(而我當初就是圍繞這一點寫的文字……)。我想是在 2013 年左右。請注意,另一方面,有些東西必須更改)。

.

不強加複雜性要求

.
    <!-- wp:list-item -->
  • 不得強制執行「永遠包含大小楷字母、數字和符號」等要求
  • <!
  • Stated to be rather harmful
  • .
  • 理由:這樣的要求會導致使用者使用可預期的模式,例如 “Password1!”
<!

無密碼提示

    <!-- /wp:list-item -->
      “What is your mother’s maiden name?” (您母親的娘家姓是什麼?)和其他提示和安全問題是禁止的。
    • “What is your mother maid name?
    • 這些都是攻擊者寶貴的資訊來源。或者說,這是多處地方都知道的資訊的可能性很高,因此,如果他們可以用這樣的東西重設認證手段,他們就會變成瞎子。
    . ✅ Recommended requirements.

    1. 密碼長度

    .
      <!-- /wp:list-item -->
    • 單一元素驗證:最少 15 個字元
    • 單一元素驗證:最少 15 個字元
      • 多因素認證的一部分:最少 8 個字元
      • 最大長度:應允許超過 64 個字元
長度是強度的關鍵。此外,如果您對這方面的細節有興趣,請參閱本文件末尾的 Annex A

. <!

注意:目前的 ISO/IEC 27002 包含一項聲明,其大意是字典中的字詞組合應該在 5.17 使用者責任中刪除 (C) 2)。這是我的疏忽。我必須在下一版中消除它們…

. 2. 字元類型的彈性

1.
    <!-- wp:list-item -->
  • 接受所有可列印的 ASCII 字元和空格
    • Unicode 字元 (日文、表情符號等) 也應該支援
      註解:老實說,我認為這有點難以接受,因為這會帶來 Unicode 標準化的問題。(順帶一提,進行 NFC 正規化應該是好事)。 .
    • 這可讓使用者建立易記、強大的密碼
<! 3. 區塊列表實作

<!

檢驗員必須針對包含下列內容的區塊清單進行檢查:

    <!-- /wp:list-item -->
      先前外洩的密碼 字典中的字詞 <!
    • 特定於上下文的資訊,例如服務名稱或使用者名稱
    • 通用密碼,如 “123456 「或 」password”。
    .
如果您屬於封鎖名單,請解釋拒絕的原因,並讓他們選擇其他密碼。

.

4.主動支援密碼管理器

    <!-- wp:list-item -->
  • 允許使用密碼管理器(必填)
  • 支援自動填寫功能
    注意:這是使用密碼管理器的必要條件。最近日本的網站泛濫,連這點都做不到,是怎麼了…

  • . 啟用貼上功能
    注意: 同上。 理由:密碼管理器允許使用者為每個服務使用強大、獨特的密碼
    注意:不僅如此,許多密碼管理器還會驗證提交的 URL。這對於抵抗網路釣魚非常重要。
<! 5. 改善使用者體驗

    <!-- wp:list-item -->
  • 提供密碼顯示選項 (打字時可見)
  • <!
  • This reduces typing errors and user frustration
    Note: This is important mainly on smartphones.

.

伺服器端需求:安全儲存

對於密碼的儲存也有嚴格的要求:

Requirements

    <!-- wp:list-item -->
  • 使用適當的密碼雜湊方案
  • 使用適當的密碼雜湊方案
  • 至少使用 32 位鹽值。
  • 同時儲存鹽值和哈希值
  • Stored in a format resistant to offline attacks
  • .
<!

建議

. .
    <!-- /wp:list-item -->
      使用僅驗證者知道的私人金鑰的額外加密操作。
      • 將此私人密碼匙與散列密碼分開儲存
    <!

    啟動密碼 (PIN) 要求

    對於裝置中使用的秘密也有要求,例如智慧型手機的解鎖密碼:

      <!-- /wp:list-item -->
        最少 4 個字元 (建議最少 6 個字元)。
        • 可以完全是數字
        • Limit consecutive failed attempts to 10 or less
        • . <!
        • 常見 PIN 碼(例如 123456)的建議封鎖清單實作
        • 在 AAL3 層級,必須在硬體保護環境(例如安全元件、TPM、TEE)中進行驗證。
      <!

      實施影響

      這些要求同時影響服務供應商和使用者:

      適用於服務供應商

        <!-- wp:list-item -->
      • 現有的密碼政策需要檢討
        • 實作區塊列表功能
        • 確保密碼管理器支援。 重組使用者教育

      For the user

        <!-- wp:list-item -->
      • 更多可記憶的密碼選擇
        • 建議使用密碼管理器
        • 建議使用密碼管理器
        • 建議使用密碼管理器
        • 免於不必要的定期變更。
        • 更好的用戶體驗
        .

        摘要

        <!

        NIST SP 800-63B-4 提出了一套以科學為基礎的密碼政策,強調安全性與可用性之間的平衡。重點包括:

          <!-- wp:list-item -->
        1. 長度決定強度 – 長度優先於複雜度
        2. 不需要定期變更 – 除非有證據顯示侵權,否則不會強制變更
        3. Utilise blocklist – 主動封鎖已知的弱密碼
        4. 推薦使用密碼管理器 – 協助使用者使用技術。 專注於使用者體驗 – 安全性與可用性可以相輔相成。
        <!

        密碼將繼續在數位身分的管理中扮演重要的角色,透過遵循 NIST SP 800-63B-4 中的指引,您可以建立一個更安全、更方便使用的系統。

        您的組織或服務的密碼政策是否符合這些最新標準?現在可能是檢討的時候了。

        (此外,我正計劃製作一個獨立的非簡短 YouTube 視訊,提供更多的技術說明。請繼續收看)

        <!

        最後我沒辦法說得太詳細,但我做了一個 YouTube 影片。請看一下。(我也認為在現場串流或其他方式接受提問時做會比較好,但我在 @ West Coast 時差有點大)

. .
.

附件 A 密碼強度

@yunishio 在推文中向我指出了這一點(帖子 X),我認為這一點確實有誤導之嫌,因此我在文中添加了 下劃線,還在下面描述了細節。

.
. <!

首先,作為先決條件,文中提到的 「正確的馬電池釘 」在美國網絡漫畫 xkcd 的第 936 集 「密碼強度」(2011 年 8 月)中被用來作為 「長的、人類可記憶的口令 」的例子,該集旨在提高人們對密碼強度的認識。該短語被用作「長的、人類可記憶的口令」的具體例子。在密碼強度的爭論中,這個短語已經成為了半標誌性的詞彙,而且它實際上是歷史性的,因為它啟蒙了密碼方案。反過來說,在註冊密碼時,這個口令當然必須在封鎖清單上。

.

現在,正如我在正文中所補充的,我在 SP 800-63-4 中的意思是,如果您需要符號和數字的組合,請不要這樣做,因為它已經證明,它會導致一個應用了傳統替換規則的傳統字。熵就是在此基礎上計算出來的。

. <!

讓我們從密碼開始。

計算一個詞組的熵

讓我們從前提公式開始。

Entropy (bits) = log2(試用空間大小)。
如果有 X 個試用空間,資訊量就是 log2(X) bits。

. <!

從字典大小 N 中隨機選取 k 字時:

H = k log2(N)

.

.

.

. <!
    <!-- wp:list-item -->
  • N=3,000: log2(3000)≈11.55 bits per word
    -> 4 word: 4 x 11.55≈46.20 bits
  • . . N=25,000 (粗略的劍橋簡明英語字數): log2(25000)≈14.61 bits per word
    → 4 word: 4×14.61≈58.44 位元。
<!

,大約是 46.20 到 58.44 位元。

<!

另一方面,如果您要從 62 個字母數字類型(a-z、A-Z、0-9)中隨機選擇 8 個字元,

    <!-- /wp:list-item -->
  • log2(62)
  • log2(62)≈5.9542 bits/character
  • → 8×5.9542≈47.63≈47.63 位元.
. . ,這是有可比性的,兩個字母數字字符的資訊含量是 2×log2(62) ≈ 11.912 位元,一個字(3,000 字均等)的資訊含量是 ≈ 11.55 位元,確實如 @yunishio 所說「差不多兩個字」。

這些與原文的位元數相同。

.

但這裡的重點是,這不是 62 個隨機選取的字元和密碼之間的比較。

<!

如上文所述,NIST 指出,強制執行混合大小寫往往會導致使用一般密碼替換規則處理的密碼,而這正是比較的目的。

/wp:paragraph –>. <!

現在讓我們來考量一般密碼替換程序版本的強度。

“P@ssw0rd “類型模型(當攻擊者嘗試使用字典 + 替換規則時)

模擬攻擊者使用的嘗試次數:

試驗次數 = B x S x C

.
    <!-- /wp:list-item -->
      B:要考慮的基礎字數(例如前 1、前 100、前 1,000、前 10,000)。 . S:替代模式(例如 leet 變換)的數量(例如 5、10、30、100)。 . C:案件變更模式的數量(例如 1、2、4)。

以典型的組合來計算 (log2 擴充如下):

.
    <!-- wp:list-item --> Very limited (targeted: only that word, fewer replacements) <!-- wp:list -->
  1. B=1,S=10,C=2 → 嘗試次數 = 1 x 10 x 2 = 20
    log2(20) ≈ 4.32 bits
  2. . <!
  3. 攻擊者使用常用術語的小清單 <!-- wp:list -->
      <!-- wp:list-item -->
    • B=100,S=10,C=2 → 嘗試次數 = 2,000
      log2(2000)=log2(2×1000)=1+log2(1000)≈1+9.96578=10.97 bits
    • .
  4. <!
  5. 更寬但更現實的字典 + 更多的替換 <!-- /wp:list -->
      <!-- wp:list-item -->
    • B=1000,S=30,C=2 -> 嘗試次數 = 60,000
      log2(60,000)=log2(1000+log2)sub>(30)+log2(2)≈9.96578+4.90689+1=15.87 bits
    • .
  6. <!
  7. 如果攻擊者嘗試一個相當大的列表 + 取代 <!-- wp:list -->
      <!-- wp:list-item -->
    • B=10,000,S=30,C=4 –> 嘗試次數 = 1,200,000
      log2(1,200,000) ≈ 20.19 bits
  8. <!
  9. Extreme wide replacement pattern (worst case) <!-- /wp:list --> <!-- wp:list-item -->
  10. B=10,000,S=100,C=4 -> 嘗試次數 = 4,000,000
    log2(4,000,000)≈21.93 bits
  11. .
<! 而在大多數情況下,在任何現實的模型中,「P@ssw0rd 系統變形」只會延伸 至約 20-22 位元(通常會少很多)。

.

也就是說,四字密碼詞組的熵46.20-58.44 位元 > 像「P@ssw0rd」這樣的字元取代模式的熵4.32-21.93 位元,與這裡的重點是短語的熵比 字元取代模式的熵大幾倍。

. <!

請注意,passphrases 是需要記憶的情況,即使在這種情況下,您也需要從足夠大的詞彙群中隨機選擇。如果您使用字典,您會隨機打開字典,閉上眼睛,指著頁面,抽出標題詞彙,並根據需要重複多次。嗯,這樣做很麻煩,所以讓具有密碼詞組生成功能的密碼管理器幫您選擇會比較容易。

.

我們建議使用密碼管理器,為那些(=大部分)您不需要記住的密碼提供至少 15 個字元的隨機字串。總而言之,使用密碼管理器,讓密碼遷移更容易

.