4.2.1 Hash Functions
All changes in this version
Title
Hash Functions
Control
Many algorithms and schemes that provide a security service use a hash function as a component of the algorithm. Hash functions are used by digital signature algorithms (see [FIPS186] ), Keyed-Hash Message Authentication Codes (HMAC) (see [FIPS198] ), key- derivation functions/methods (see [SP800-56A] , [SP800-56B] , [SP800-56C] and [SP800- 108] ), and random number generators (see [SP800-90] ). Approved hash functions are defined in [FIPS180] and [FIPS202] . A hash function takes an input of arbitrary (although bounded) length and outputs a fixed- length value. Common names for the output of a hash function include hash value, hash, message digest, and digital fingerprint. The maximum number of input and output bits is determined by the design of the hash function. All approved hash functions are cryptographic hash functions. With a well-designed cryptographic hash function, it is not feasible to find a message that will produce a given hash value (pre-image resistance), nor is it feasible to find two messages that produce the same hash value (collision resistance). Several hash functions are approved for Federal Government use and are defined in [FIPS180] and [FIPS 202]. Algorithm standards need to specify either the appropriate size for the hash function or provide the hash-function selection criteria if the algorithm can be configured to use different hash functions.