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).