Balloon hashing
Balloon hashing是一類現代密鑰派生函數,具有內存困難特性,適用於密碼散列場景,由史丹佛大學的丹·博內以及Henry Corrigan-Gibbs、來自微軟研究院的Stuart Schechter共同設計。[1][2]NIST在密碼指導中推薦了該算法。[3]
作者宣稱Balloon:
- 已被證明具有內存困難性
- 可從標準密碼學原語構建:可使用任何標準的,非內存困難的密碼散列函數作為子算法(比如 SHA-3、SHA-512)。
- 可以抵抗側信道攻擊:內存的訪問方式和輸入無關
- 易於實現,並且和同類算法具有同等的性能
Balloon的作者比較了類似的Argon2算法。[1]
算法
該算法有3個步驟:[1]
- 拓展(Expansion),以密碼和鹽值派生的偽隨機數生成器多次填充初始緩衝區。
- 混合(Mixing),緩衝區中的字節將被混淆多次。
- 輸出(Output),緩衝區的一部分作為結果輸出。
參考文獻
- ^ 1.0 1.1 1.2 Boneh, Dan; Corrigan-Gibbs, Henry; Schechter, Stuart. Balloon Hashing: A Memory-Hard Function Providing Provable Protection Against Sequential Attacks. ePrint. 2016-01-11, 2016 (27) [2019-09-03]. (原始內容存檔於2020-12-08).
- ^ Balloon Hashing. Stanford Applied Crypto Group. Stanford University. [2019-09-03]. (原始內容存檔於2020-11-12).
- ^ NIST SP800-63B Section 5.1.1.2 (PDF). [2023-07-18]. (原始內容存檔 (PDF)於2019-04-01).
外部連結
- GitHub上的研究原型代碼倉庫 (頁面存檔備份,存於網際網路檔案館)
- Python實現 (頁面存檔備份,存於網際網路檔案館)
- Rust實現 (頁面存檔備份,存於網際網路檔案館)
- Alwen; Blocki. Efficiently Computing Data-Independent Memory-Hard Functions. ePrint. [2023-07-18]. (原始內容存檔於2023-07-18).
- Alwen; Blocki. Towards Practical Attacks on Argon2i and Balloon Hashing. ePrint. [2023-07-18]. (原始內容存檔於2023-07-18).