Balloon hashing是一類現代密鑰派生函數,具有內存困難特性,適用於密碼散列場景,由斯坦福大學丹·博內以及Henry Corrigan-Gibbs、來自微軟研究院的Stuart Schechter共同設計。[1][2]NIST在密碼指導中推薦了該算法。[3]

作者宣稱Balloon:

  • 已被證明具有內存困難性
  • 可從標準密碼學原語構建:可使用任何標準的,非內存困難的密碼散列函數作為子算法(比如 SHA-3SHA-512)。
  • 可以抵抗側信道攻擊:內存的訪問方式和輸入無關
  • 易於實現,並且和同類算法具有同等的性能

Balloon的作者比較了類似的Argon2算法。[1]

算法

編輯

該算法有3個步驟:[1]

  1. 拓展(Expansion),以密碼和鹽值派生的偽隨機數生成器多次填充初始緩衝區。
  2. 混合(Mixing),緩衝區中的字節將被混淆多次。
  3. 輸出(Output),緩衝區的一部分作為結果輸出。

參考文獻

編輯
  1. ^ 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). 
  2. ^ Balloon Hashing. Stanford Applied Crypto Group. Stanford University. [2019-09-03]. (原始內容存檔於2020-11-12). 
  3. ^ NIST SP800-63B Section 5.1.1.2 (PDF). [2023-07-18]. (原始內容存檔 (PDF)於2019-04-01). 

外部連結

編輯