選擇語言

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

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

目錄

1. 引言

網站帳戶同密碼洩漏嘅報告持續不斷,突顯出資訊同密碼安全嘅極端重要性。雖然網站漏洞係一個因素,但密碼本身嘅固有安全性至關重要。常見嘅不安全密碼做法包括基於關鍵字嘅密碼、使用流行短語、包含個人資訊以及重用密碼。人工智能同大型語言模型嘅興起,進一步增強咗攻擊者更有效咁猜測密碼嘅能力。

本研究提出一種基於密碼學安全偽隨機數產生器(PRNG)嘅安全密碼產生器。佢使用金鑰雜湊訊息鑑別碼(HMAC)、基於密碼嘅訊息鑑別碼(CMAC)或KECCAK訊息鑑別碼(KMAC)來構建PRNG,以產生安全隨機數,然後用嚟生成密碼。生成數字嘅隨機性會通過熵同獨立同分佈(IID)測試,根據NIST SP 800-90B標準進行驗證。

主要貢獻:

2. 文獻回顧

2.1. 基於線性同餘產生器嘅PRNG

線性同餘產生器(LCG)喺C同Java等語言中常用,佢使用線性遞迴關係產生數字序列。給定種子$k$,初始值$f_0(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)$生成。然而,LCG係不安全嘅,因為狀態可以通過$f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$反轉,從而暴露種子同整個序列。

2.2. 安全偽隨機數產生器

為咗解決LCG嘅漏洞,密碼學安全嘅PRNG至關重要。本文重點關注三種NIST推薦嘅構造。

2.2.1. 基於HMAC嘅PRNG

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

2.2.2. 基於CMAC嘅PRNG

安全性基於進階加密標準(AES)。使用帶有金鑰$k$嘅密碼區塊鏈結(CBC)模式,將訊息$M$分割成區塊$M'_1, M'_2, ...$。密文迭代計算:$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$,其中$c_0 = Pad0(0)$。最終輸出$r_{cmac}$從最後一個區塊導出。

2.2.3. 基於KMAC嘅PRNG

基於SHA-3(KECCAK)雜湊函數,KMAC提供可變長度輸出,被認為係後量子密碼學嘅有力候選者。其構造遵循類似嘅鑑別雜湊原理,提供高安全性保證。

2.3. 隨機性驗證方法

NIST SP 800-90B標準提供咗評估隨機數產生器質量嘅方法。主要評估兩個關鍵方面:

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

系統架構涉及兩個主要階段:

  1. 安全隨機數生成: 用戶可以選擇性提供待雜湊訊息(TBHM)。呢個訊息連同密碼學金鑰,由選定嘅安全PRNG(基於HMAC/CMAC/KMAC)處理,以產生密碼學強嘅隨機位元序列。
  2. 密碼生成: 將隨機位元映射到用戶定義或系統定義嘅字符集(例如字母數字加符號)上,生成指定長度嘅最終文字密碼。考慮字符集大小同密碼長度提供嘅熵,分析其相對於AES-128/256嘅安全強度。

4. 實驗與結果

4.1. 實驗設置

進行咗實驗以驗證PRNG輸出嘅隨機性。測試套件對所有三種PRNG類型生成嘅大量隨機數樣本實施咗NIST SP 800-90B嘅熵估計同IID測試評估程序。

4.2. 隨機性驗證結果

結果摘要: 提出嘅基於HMAC、CMAC同KMAC嘅PRNG全部成功通過咗NIST SP 800-90B嘅熵同IID驗證測試。生成嘅序列喺統計上冇顯著偏離真正嘅隨機性,確認咗佢哋適合用於密碼學密碼生成。

圖表描述(想像): 一個柱狀圖,比較三種PRNG類型嘅最小熵估計值(每比特位元)與NIST通過閾值。三條柱都會顯示顯著高於閾值線,其中KMAC可能顯示最高值,緊隨其後嘅係HMAC-SHA3同CMAC-AES256。

4.3. 性能分析

進行咗計算效率(例如每秒生成次數)嘅比較分析。基於CMAC嘅產生器(使用AES-NI硬件加速)通常顯示最高吞吐量,其次係基於HMAC嘅(SHA2/SHA3),而KMAC計算量較重,但提供強健嘅後量子安全特性。

5. 結論與未來工作

本研究成功設計並驗證咗一個基於密碼學安全PRNG(HMAC、CMAC、KMAC)嘅安全密碼產生器。生成嘅密碼其安全性源自呢啲底層密碼學原語嘅已證實穩健性同PRNG輸出嘅經驗證高隨機性。未來工作包括將產生器整合到瀏覽器擴展或密碼管理器中,探索其喺生成密碼以外嘅密碼學金鑰方面嘅應用,以及對完整系統進行側信道攻擊抵抗分析。

6. 原創分析與專家評論

核心見解: 本文係對網絡安全中長期存在嘅薄弱環節——人為選擇密碼——嘅一種務實、以工程為重點嘅回應。其核心價值不在於新穎嘅密碼學,而在於對現有、久經考驗嘅構造(HMAC、CMAC、KMAC)喺一個特定、高影響力用例中嘅正確應用同嚴格驗證。佢正確指出,將密碼生成從用戶大腦轉移到一個經過驗證嘅密碼學過程,係一次根本性嘅安全升級,類似於金鑰交換從對稱密碼轉向非對稱密碼。

邏輯流程: 邏輯合理,遵循經典應用研究模式:問題定義(弱密碼)→ 對常見解決方案嘅批評(不安全LCG)→ 提出穩健解決方案(基於CSPRNG嘅產生器)→ 實證驗證(NIST測試)。選擇NIST SP 800-90B作為驗證基準非常出色,因為佢係評估密碼學環境中隨機性嘅事實標準,為結果提供咗即時可信度。

優點與缺點:
優點: 本文最大嘅優點係其實踐驗證。許多提案只停留喺設計階段。通過將輸出置於NIST嚴格測試之下,作者提供咗安全性嘅具體證據,呢點對於採用至關重要。包含基於SHA-3嘅KMAC,顯示出對後量子考慮嘅遠見,正如NIST持續進行嘅後量子密碼學標準化過程中所指出。
缺點/遺漏: 分析有啲孤立。一個重大缺點係缺乏對種子管理嘅討論。如果任何PRNG嘅種子可預測或洩漏,其安全性就會崩潰。系統如何生成、儲存同保護HMAC/CMAC/KMAC嘅初始密碼學金鑰?呢點同算法本身一樣關鍵。此外,雖然將密碼強度與AES比較係有用嘅,但更直接咁與現有密碼產生器(例如KeePass或1Password中嘅)及其底層PRNG(例如使用ChaCha20)進行比較,會為其競爭優勢提供更好嘅背景。

可行建議: 對於安全從業者,本文可以作為藍圖。建議1: 立即棄用任何將LCG或類似非密碼學RNG(如`rand()`)用於安全敏感任務嘅做法。建議2: 當構建或審計密碼產生器時,主要檢查清單項目應該係:1)使用CSPRNG(NIST SP 800-90A中嘅HMAC_DRBG、CTR_DRBG,或本文嘅構造),2)使用NIST SP 800-90B或Dieharder等套件驗證其輸出,3)從高熵源(例如Linux上嘅`getrandom()`)實現穩健嘅種子生成。本文成功聚焦於第2點,但第1點同第3點同樣係完整圖景中至關重要嘅部分。

7. 技術細節與數學公式

提出嘅產生器嘅安全性取決於底層密碼學函數。關鍵數學運算包括:

8. 分析框架與案例示例

案例示例:審計Web應用程式嘅密碼重設功能
場景: 一個Web應用程式為點擊「忘記密碼」嘅用戶生成臨時密碼。
框架應用:

  1. 識別RNG: 檢查伺服器端代碼。發現`Math.random()`(JavaScript)或PHP中嘅簡單LCG將係一個關鍵失敗。
  2. 評估熵源: PRNG如何被播種?佢係咪使用系統熵(`/dev/urandom`、`CryptGenRandom`)?
  3. 映射到提出嘅解決方案: 建議用實現本文設計嘅模組替換有缺陷嘅RNG——例如,一個使用`hmac.new`配合SHA256以及來自`os.urandom(32)`嘅種子嘅Python函數。
  4. 驗證輸出(實施後): 生成1,000,000個臨時密碼嘅樣本,轉換為位元流,並運行NIST STS套件(一個相關測試套件)以確保隨機性。
呢個框架將本文嘅理論轉化為具體嘅審計同補救檢查清單。

9. 未來應用與方向

核心技術喺用戶密碼生成之外仲有應用:

10. 參考文獻

  1. M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
  2. NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
  3. NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
  4. NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
  5. J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
  6. D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
  7. NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
  8. NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
  9. M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
  10. P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.