目錄
1. 引言
網站帳戶同密碼洩漏嘅報告持續不斷,突顯出資訊同密碼安全嘅極端重要性。雖然網站漏洞係一個因素,但密碼本身嘅固有安全性至關重要。常見嘅不安全密碼做法包括基於關鍵字嘅密碼、使用流行短語、包含個人資訊以及重用密碼。人工智能同大型語言模型嘅興起,進一步增強咗攻擊者更有效咁猜測密碼嘅能力。
本研究提出一種基於密碼學安全偽隨機數產生器(PRNG)嘅安全密碼產生器。佢使用金鑰雜湊訊息鑑別碼(HMAC)、基於密碼嘅訊息鑑別碼(CMAC)或KECCAK訊息鑑別碼(KMAC)來構建PRNG,以產生安全隨機數,然後用嚟生成密碼。生成數字嘅隨機性會通過熵同獨立同分佈(IID)測試,根據NIST SP 800-90B標準進行驗證。
主要貢獻:
- 構建基於HMAC、CMAC同KMAC嘅安全PRNG用於密碼生成。
- 分析唔同字符集同長度限制下密碼嘅安全性,並與AES-128/256進行比較。
- 使用NIST SP 800-90B熵同IID測試進行實證驗證。
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標準提供咗評估隨機數產生器質量嘅方法。主要評估兩個關鍵方面:
- 熵驗證: 測量數據中每比特嘅不可預測性或「隨機性」。高熵對於安全密碼至關重要。
- IID(獨立同分佈)驗證: 測試生成嘅序列是否統計上獨立並遵循相同分佈,確保唔存在任何模式或相關性。
3. 提出嘅安全密碼產生器
系統架構涉及兩個主要階段:
- 安全隨機數生成: 用戶可以選擇性提供待雜湊訊息(TBHM)。呢個訊息連同密碼學金鑰,由選定嘅安全PRNG(基於HMAC/CMAC/KMAC)處理,以產生密碼學強嘅隨機位元序列。
- 密碼生成: 將隨機位元映射到用戶定義或系統定義嘅字符集(例如字母數字加符號)上,生成指定長度嘅最終文字密碼。考慮字符集大小同密碼長度提供嘅熵,分析其相對於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. 技術細節與數學公式
提出嘅產生器嘅安全性取決於底層密碼學函數。關鍵數學運算包括:
- HMAC: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$
- CMAC(CBC-MAC): $c_{i+1} = E(k, c_i \oplus M_{i+1})$,其中$E$係區塊密碼(AES)。
- 密碼熵: 生成密碼嘅熵$H$係$H = L \cdot \log_2(N)$,其中$L$係密碼長度,$N$係字符集大小。對於來自94個字符集嘅16字符密碼,$H \approx 16 \cdot \log_2(94) \approx 105$比特。
8. 分析框架與案例示例
案例示例:審計Web應用程式嘅密碼重設功能
場景: 一個Web應用程式為點擊「忘記密碼」嘅用戶生成臨時密碼。
框架應用:
- 識別RNG: 檢查伺服器端代碼。發現`Math.random()`(JavaScript)或PHP中嘅簡單LCG將係一個關鍵失敗。
- 評估熵源: PRNG如何被播種?佢係咪使用系統熵(`/dev/urandom`、`CryptGenRandom`)?
- 映射到提出嘅解決方案: 建議用實現本文設計嘅模組替換有缺陷嘅RNG——例如,一個使用`hmac.new`配合SHA256以及來自`os.urandom(32)`嘅種子嘅Python函數。
- 驗證輸出(實施後): 生成1,000,000個臨時密碼嘅樣本,轉換為位元流,並運行NIST STS套件(一個相關測試套件)以確保隨機性。
9. 未來應用與方向
核心技術喺用戶密碼生成之外仲有應用:
- API金鑰與令牌生成: 為微服務架構生成安全、隨機嘅API金鑰同會話令牌。
- 安全默認憑證: 將此類產生器嵌入IoT設備韌體中,為每個設備創建獨特、強健嘅默認密碼,減輕基於常見默認值嘅廣泛攻擊。
- 密碼學種子生成: 高質量輸出可用於播種其他密碼學系統,或生成隨機數同初始化向量(IV)。
- 與密碼管理器整合: 該算法可以整合為開源密碼管理器嘅核心引擎,提供透明且可審計嘅隨機性來源。
- 後量子準備: 進一步探索同優化基於KMAC嘅產生器,與NIST嘅FIPS 202同SP 800-185標準保持一致,為後量子計算時代做好準備。
10. 參考文獻
- M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
- NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
- NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
- NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
- J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
- D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
- NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
- NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
- M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
- P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.