選擇語言

基於偽隨機數產生器(PRNG)的安全密碼產生器

本研究提出一種使用HMAC、CMAC或KMAC為基礎之PRNG的安全密碼產生器,並透過NIST SP 800-90B熵值與IID測試進行驗證。
computationalcoin.com | PDF Size: 0.5 MB
評分: 4.5/5
您的評分
您已經為此文檔評過分
PDF文檔封面 - 基於偽隨機數產生器(PRNG)的安全密碼產生器

目錄

1. 緒論

本研究旨在解決密碼外洩與個人資料暴露風險的持續性問題。雖然網站安全性是一個因素,但密碼本身的固有強度至關重要。常見的弱點包括基於關鍵字、流行短語、使用者資訊的密碼,以及密碼重複使用。人工智慧與大型語言模型的興起,進一步增強了攻擊者猜測密碼的能力。

為此,本文提出一個建構在安全偽隨機數產生器(PRNG)之上的安全密碼產生器。核心PRNG使用如HMAC、CMAC或KMAC等密碼學原語來建構,以產生高品質的隨機數,進而用於建立密碼。系統允許選擇性輸入使用者訊息(待雜湊訊息,TBHM)作為種子。主要貢獻如下:

2. 文獻探討

2.1. 基於線性同餘產生器的偽隨機數產生器

常見的程式語言(C、Java)使用線性同餘產生器(LCG)。給定一個種子 $k$,序列產生方式為:$f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$ 和 $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$。此方法不安全,因為其狀態可被逆推:$f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$,從而暴露種子與整個序列。

2.2. 安全的偽隨機數產生器

安全的PRNG基於NIST SP 800-108 Rev. 1中概述的密碼學原語。

2.2.1. 基於HMAC

其安全性依賴於雜湊函數(例如SHA2、SHA3)的單向特性。對於金鑰 $k$ 和訊息 $M$,HMAC計算方式為:$r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$。為了產生長度為 $L$ 的隨機位元流,使用計數器模式:$M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$,產生輸出 $r_{hmac,i}$。

2.2.2. 基於CMAC

其安全性依賴於CBC模式下的AES區塊加密法。訊息 $M$ 被分割成區塊 $M'_1, M'_2, ...$。迭代過程為:$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$,其中 $c_0 = Pad0(0)$。最終輸出 $r_{cmac}$ 來自經過特定填充(Pad1)後的最後一個密文區塊。

2.2.3. 基於KMAC

利用KECCAK海綿函數(SHA-3的基礎),提供一個靈活且穩健的MAC函數,適合產生確定性的隨機位元。

2.3. 隨機性驗證方法

本文採用NIST SP 800-90B框架,這是驗證熵源的事實標準。它包含兩個關鍵的驗證套件:

3. 提出的安全密碼產生器

所提出的系統架構簡單而強大:

  1. 輸入/種子: 接受一個可選的使用者提供的TBHM。若提供,則對其進行處理;否則,使用系統產生的安全種子。
  2. 安全PRNG核心: 將TBHM/種子輸入三種密碼學PRNG建構方式之一(基於HMAC、CMAC或KMAC),以產生密碼學上強健的偽隨機位元序列。
  3. 密碼建構: 將隨機位元映射到使用者定義或系統定義的字元集(例如字母數字+符號),以產生所需長度的密碼。

安全性分析: 本文主張,所產生密碼的安全性直接取決於PRNG輸出的熵值與字元集的大小。其進行了比較分析,結果顯示,假設PRNG輸出是真正隨機的,則透過此方法從94個字元的集合中產生的16字元密碼,其暴力破解抵抗力可媲美甚至超過AES-128或AES-256金鑰。

4. 實驗結果與分析

實驗驗證是本文的一大優勢。

圖表描述(隱含): 長條圖能有效比較三種PRNG方法的最小熵估計值(單位:位元/位元)與理想值1.0。所有長條都將非常接近1.0。第二張圖表可以顯示關鍵IID測試(例如卡方檢定、Kolmogorov-Smirnov檢定)的p值,所有值都遠高於典型的顯著性閾值(例如0.01),表示通過測試。

5. 結論與未來工作

本研究成功展示了一個基於密碼學PRNG的安全密碼產生框架。所提出的方法能產生具有足夠隨機性的密碼,並通過NIST標準的嚴格驗證。未來的工作方向包括:

6. 原創分析與專家見解

核心見解: 本文並非發明新的密碼學原語;而是關於對現有、經過驗證的原語(HMAC、CMAC、KMAC)進行有紀律的應用與驗證,以解決密碼產生這個平凡但關鍵的問題。其真正價值在於彌合理論密碼學與實務安全衛生之間的差距,使用黃金標準的NIST測試套件嚴格證明其輸出符合目的。

邏輯流程: 論證是合理的:1) 標準LCG在密碼學上已被破解。2) 基於密碼學MAC建構的安全PRNG被證明是穩健的。3) 因此,從此類PRNG衍生的密碼繼承了該穩健性。4) 此主張不僅透過理論,更通過嚴格的實證測試(NIST SP 800-90B)得到驗證。這種端到端的驗證是許多「安全密碼產生器」工具所缺乏的。

優點與缺點:
優點: 方法論的嚴謹性值得讚揚。使用NIST SP 800-90B進行驗證,立即提升了其可信度,類似於密碼學演算法透過CAVP(密碼學演算法驗證計畫)進行驗證的方式。與AES金鑰強度的比較,是對安全團隊而言實用且易於理解的度量標準。
缺點: 本文在受控、理想化的環境中進行。它假設初始種子/TBHM具有足夠的熵值——這在真實系統中是一個關鍵且往往是薄弱的環節。「可選的」使用者輸入是一把雙面刃;一個脆弱、可預測的使用者短語(例如「mypassword」)可能會破壞整個密碼學建構,此風險未被充分量化。此外,正如NIST在2023年的回顧文章「後量子密碼學:十年歷程」中所指出的,該領域正朝著抗量子演算法發展。本文的建構雖然對抗古典電腦是安全的,但依賴於SHA2/AES,其長期的抗量子能力尚不確定。

可行動的見解: 對於安全架構師而言,本文提供了一個藍圖。切勿自行設計PRNG。 使用已建立的密碼學建構作為基礎元件。更重要的是,驗證、驗證、再驗證。 將持續的熵值驗證(如NIST測試)整合到你的關鍵隨機數產生系統中,這是像Linux基金會的CCC(共同準則認證)等組織所強調的實務。對於產品開發,立即的收穫是將系統中任何基於LCG的密碼產生,替換為基於KMAC或HMAC-SHA256的產生器,並使用安全來源的種子。前瞻性的步驟是開始使用基於SHA-3/KECCAK的設計(如KMAC)進行原型開發,並關注NIST後量子密碼學標準的演進,以便最終整合。

7. 技術細節與數學公式

核心的數學運算定義於文獻探討(第2節)中。關鍵公式包括:

密碼產生將一個隨機整數 $R$(來自PRNG輸出)映射到一個字元索引:$\text{index} = R \ \text{mod} \ |S|$,其中 $|S|$ 是字元集的大小。

8. 分析框架與案例範例

案例範例:評估舊有系統的密碼產生器
情境: 一個舊有的網路應用程式使用修改過的LCG來產生臨時使用者密碼。需要進行安全稽核。
框架應用:

  1. 識別PRNG類型: 檢查原始碼。發現:seed = (a * seed + c) % m; 確認其為LCG變體。
  2. 評估密碼學安全性: LCG是確定性且可逆的。攻擊者取得幾個連續的密碼後,即可解出種子並預測所有未來的密碼,這違反了NIST SP 800-63B關於驗證器隨機性的指南。
  3. 使用本文方法提出補救措施:
    • 種子來源: 將系統時間種子替換為CSPRNG(例如Linux上的/dev/urandom,Windows上的CryptGenRandom)。
    • 核心產生器: 根據本文設計,實作一個基於HMAC-SHA256的PRNG。
    • 驗證: 從新產生器產生大量樣本(1,000,000位元),並在部署前執行NIST STS(統計測試套件)或SP 800-90B中的熵值估計器,以驗證隨機性。

此框架將評估從「它看起來隨機嗎?」轉變為「它是否通過標準化的密碼學驗證?」

9. 未來應用與發展方向

這些原則可延伸至使用者密碼之外:

10. 參考文獻

  1. M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
  2. NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
  3. NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
  4. NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
  5. NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
  6. J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
  7. M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
  8. NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [線上]. 可取得:https://csrc.nist.gov/projects/post-quantum-cryptography
  9. Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [線上]. 可取得:https://www.linuxfoundation.org/