HighwayHash

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.

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[1] throughput is 0.24 cycles per byte. This is more than 10 times as fast as cryptographic hashes in the ECRYPT hash benchmark.[2]

HighwayHash is not claimed to be a cryptographic hash, but the authors have undertaken preliminary cryptanalysis[3] 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.

See also

References

  1. Jyrki Alakuijala, Jan Wassenberg (2017-01-24). "HighwayHash description".
  2. "eBACS: ECRYPT Benchmarking of Cryptographic Systems".
  3. Jyrki Alakuijala, Bill Cox, Jan Wassenberg (2016-12-28). "Fast keyed hash/pseudo-random function using SIMD multiply and permute" (PDF).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.