Harman Patil (Editor)

HighwayHash

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit

HighwayHash is a fast keyed hash/pseudorandom function developed by Jyrki Alakuijala and Jan Wassenberg. The stated design goals are high-throughput mixing and low-cost finalization. An open-source (Apache 2 license) reference implementation was published in March 2016.

Contents

Overview

HighwayHash computes 64, 128 or 256-bit digests of variable-length inputs, using a 256-bit seed/key. It processes 32 bytes at a time using AVX-2 SIMD instructions. For 1 KiB blocks, the reported throughput is 0.24 cycles per byte. This is more than 10 times as fast as cryptographic hashes in the ECRYPT hash benchmark.

HighwayHash is not claimed to be a cryptographic hash, but the authors have undertaken preliminary cryptanalysis and claim resistance against differential, length-extension and rotational attacks.

The mixing multiplies 32-bit halves of the input with internal state, yielding a 64-bit result which is permuted and added to the state. The finalization involves four mixing rounds.

Applications

Suggested applications of HighwayHash include:

  • pseudorandom number generation, e.g. to assign items to bins for A/B tests
  • replacing larger data with hash 'fingerprints'
  • authenticating short-lived messages such as RPCs
  • data structures resistant to hash-flooding attacks.
  • Naming

    The name HighwayHash is similar to other hashes developed within Google: CityHash and FarmHash.

    References

    HighwayHash Wikipedia