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:
Naming
The name HighwayHash is similar to other hashes developed within Google: CityHash and FarmHash.