目錄
1. 引言
本研究針對密碼洩漏同個人資料外洩風險呢個長期問題。雖然網站安全係一個因素,但密碼本身嘅固有強度至關重要。常見嘅漏洞包括基於關鍵字、流行短語、用戶資訊嘅密碼,以及重用密碼。人工智能同大型語言模型嘅興起,進一步增強咗攻擊者猜測密碼嘅能力。
為此,本文提出一個基於安全偽隨機數生成器(PRNG)嘅安全密碼生成器。核心PRNG使用HMAC、CMAC或KMAC等密碼學原語構建,以生成高質量隨機數,然後用嚟創建密碼。系統允許可選嘅用戶輸入(待哈希消息,TBHM)作為種子。主要貢獻包括:
- 構建基於HMAC、CMAC同KMAC嘅安全PRNG。
- 分析喺唔同字符集同長度下生成密碼嘅安全性,並將其強度同AES-128同AES-256進行比較。
- 使用NIST SP 800-90B進行隨機性嘅實證驗證,重點關注熵同獨立同分布(IID)測試。
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框架,呢個係驗證熵源嘅事實標準。它包括兩個關鍵嘅驗證套件:
- 熵評估: 估算生成比特流中嘅最小熵量,表明其不可預測性。
- IID(獨立同分布)測試: 一套統計測試(例如卡方檢驗、柯爾莫哥洛夫-斯米爾諾夫檢驗),用於確定輸出比特喺統計上是否獨立且遵循相同分布。
3. 提出嘅安全密碼生成器
提出嘅系統架構簡單而強大:
- 輸入/種子: 接受可選嘅用戶提供嘅TBHM。如果提供,則對其進行處理;否則,使用系統生成嘅安全種子。
- 安全PRNG核心: 將TBHM/種子輸入到三個密碼學PRNG構造(基於HMAC、基於CMAC、基於KMAC)之一,以生成密碼學上強嘅偽隨機比特序列。
- 密碼構建: 將隨機比特映射到用戶定義或系統定義嘅字符集(例如字母數字+符號)上,以產生所需長度嘅密碼。
安全性分析: 本文認為,生成密碼嘅安全性直接取決於PRNG輸出嘅熵同字符集嘅大小。佢進行咗比較分析,表明假設PRNG輸出係真正隨機嘅,呢種方法從94個字符集中生成嘅16字符密碼,可以提供媲美甚至超過AES-128或AES-256密鑰嘅暴力破解抵抗力。
4. 實驗結果與分析
實驗驗證係本文嘅一個關鍵優勢。
- 熵驗證: 所有三種PRNG類型(HMAC-SHA256、CMAC-AES256、KMAC256)生成嘅隨機序列都通過咗NIST SP 800-90B熵評估,顯示出接近理想值(每輸出比特1比特)嘅高最小熵。
- IID驗證: 序列亦通過咗IID測試套件,確認比特喺統計上獨立且同分布,沒有可檢測嘅模式或偏差。
- 性能: 雖然唔係主要關注點,但本文提到計算效率。HMAC-SHA256同KMAC256顯示出相當嘅速度,而CMAC-AES256由於分組密碼操作而稍慢,但所有方法都喺密碼生成嘅實際限制範圍內。
圖表描述(隱含): 柱狀圖可以有效地比較三種PRNG方法嘅最小熵估計值(每比特比特數)與理想值1.0。所有柱狀都會非常接近1.0。第二張圖表可以顯示關鍵IID測試(例如卡方檢驗、柯爾莫哥洛夫-斯米爾諾夫檢驗)嘅p值,所有值都遠高於典型顯著性閾值(例如0.01),表明通過測試。
5. 結論與未來工作
本研究成功展示咗一個基於密碼學PRNG嘅安全密碼生成框架。提出嘅方法生成具有足夠隨機性嘅密碼,並通過NIST標準進行嚴格驗證。未來工作方向包括:
- 將生成器集成到瀏覽器擴展或密碼管理器中。
- 探索後量子密碼學算法(例如基於格、哈希)作為PRNG嘅基礎,以確保長期安全性。
- 喺標準密碼學模型下開發正式嘅安全性證明。
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(通用準則認證)等組織嘅強調。對於產品開發,直接嘅啟示係用基於KMAC或HMAC-SHA256嘅生成器替換你系統中任何基於LCG嘅密碼生成,並使用安全來源嘅種子。面向未來嘅步驟係開始使用基於SHA-3/KECCAK嘅設計(如KMAC)進行原型設計,並監測NIST後量子密碼學標準嘅發展,以便最終集成。
7. 技術細節與數學公式
核心數學運算喺文獻綜述(第2節)中定義。關鍵公式包括:
- LCG(不安全):$f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$
- HMAC:$r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$
- PRNG計數器模式下嘅HMAC:$M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$
- CMAC(CBC-MAC)迭代:$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$
密碼生成將一個隨機整數 $R$(來自PRNG輸出)映射到一個字符索引:$\text{index} = R \ \text{mod} \ |S|$,其中 $|S|$ 係字符集嘅大小。
8. 分析框架與案例示例
案例示例:評估舊系統嘅密碼生成器
場景: 一個舊版Web應用程序使用修改過嘅LCG生成臨時用戶密碼。需要進行安全審計。
框架應用:
- 識別PRNG類型: 檢查源代碼。發現:
seed = (a * seed + c) % m;確認佢係一個LCG變體。 - 評估密碼學安全性: LCG係確定性且可逆嘅。攻擊者獲取幾個連續密碼後,可以求解種子並預測所有未來密碼,違反NIST SP 800-63B關於驗證器隨機性嘅指南。
- 使用本文方法提出補救措施:
- 種子來源: 用CSPRNG(例如Linux上嘅
/dev/urandom、Windows上嘅CryptGenRandom)替換系統時間種子。 - 核心生成器: 根據本文設計,實現一個基於HMAC-SHA256嘅PRNG。
- 驗證: 從新生成器生成大樣本(1,000,000比特),並喺部署前運行NIST STS(統計測試套件)或SP 800-90B中嘅熵估算器以驗證隨機性。
- 種子來源: 用CSPRNG(例如Linux上嘅
9. 未來應用與發展方向
呢啲原則擴展到用戶密碼之外:
- API密鑰與令牌生成: 喺微服務架構內自動生成密碼學隨機嘅API密鑰同會話令牌。
- 安全默認配置: 將此類生成器嵌入到IoT設備或軟件安裝程序中,以創建獨特、強嘅默認管理員密碼,減輕廣泛嘅默認憑證攻擊。
- 後量子演進: 基於KMAC嘅構造本質上基於SHA-3(KECCAK),被認為具有抗量子性。呢個生成器可以成為「密碼敏捷」系統嘅基礎。未來工作應該集成基於NIST標準化後量子算法(如CRYSTALS-Kyber或基於哈希嘅簽名)嘅PRNG,因為密碼學界正為量子計算時代做準備。
- 與密碼管理器同SSO集成: 該生成器可以成為開源密碼管理器或單點登錄(SSO)系統嘅核心組件,提供一個可透明審計嘅密碼隨機性來源。
10. 參考文獻
- M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
- NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
- NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
- NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
- NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
- J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
- M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
- NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [Online]. Available: https://csrc.nist.gov/projects/post-quantum-cryptography
- Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [Online]. Available: https://www.linuxfoundation.org/