Hash functions are cryptography’s most widely used primitives, in that they are a fundamental building block used for a wide variety of constructions. The recent attacks of Joux, Wang, and others against the current generation of hash functions has stimulated a resurgence of research into these primitives as well as spawned an international competition, sponsored by the U.S. Government agency, the National Institute of Standards and Technology (NIST), to create a next-generation hash function design.
In this article, we provide the background to understand what a hash function is and what problems it addresses. We then describe and contrast two radically different designs entered in the NIST competition, Skein and Vortex. Skein was designed by a team assembled from across the industry and academia, while Vortex was designed exclusively by Intel employees. We next go on to describe the design rationale for each hash function, and we compare and contrast the basic design decisions.