Balloon hashing

Memory-hard key derivation function

Balloon hashing is a key derivation function presenting proven memory-hard password-hashing and modern design. It was created by Dan Boneh, Henry Corrigan-Gibbs (both at Stanford University) and Stuart Schechter (Microsoft Research) in 2016.[1][2] It is a recommended function in NIST password guidelines.[3]

The authors claim that Balloon:

  • has proven memory-hardness properties,
  • is built from standard primitives: it can use any standards non-space-hard cryptographic hash function as a sub-algorithm (e.g., SHA-3, SHA-512),
  • is resistant to side-channel attacks: the memory access pattern is independent of the data to be hashed,
  • is easy to implement and matches the performance of similar algorithms.

Balloon is compared by its authors with Argon2, a similarly performing algorithm.[1]

Algorithm

There are three steps in the algorithm:[1]

  1. Expansion, where an initial buffer is filled with a pseudorandom byte sequence derived from the password and salt repeatedly hashed.
  2. Mixing, where the bytes in the buffer are mixed time_cost number of times.
  3. Output, where a portion of the buffer is taken as the hashing result.

References

  1. ^ a b c Boneh, Dan; Corrigan-Gibbs, Henry; Schechter, Stuart (2016-01-11). "Balloon Hashing: A Memory-Hard Function Providing Provable Protection Against Sequential Attacks". ePrint. 2016 (27). Retrieved 2019-09-03.
  2. ^ "Balloon Hashing". Stanford Applied Crypto Group. Stanford University. Retrieved 2019-09-03.
  3. ^ NIST SP800-63B Section 5.1.1.2

External links

  • Research prototype code on Github
  • Python implementation
  • Rust implementation
  • Alwen; Blocki (2016). "Efficiently Computing Data-Independent Memory-Hard Functions". ePrint. 2016 (115).
  • Alwen; Blocki (2016). "Towards Practical Attacks on Argon2i and Balloon Hashing". ePrint. 2016 (759).


  • v
  • t
  • e
Cryptographic hash functions and message authentication codes
Common functions
  • MD5 (compromised)
  • SHA-1 (compromised)
  • SHA-2
  • SHA-3
  • BLAKE2
SHA-3 finalists
Other functions
Password hashing/
key stretching functions
General purpose
key derivation functions
MAC functions
Authenticated
encryption modes
Attacks
Design
Standardization
Utilization
  • v
  • t
  • e
General
Mathematics
  • Category