The Secure Hash Algorithms (SHA) are a family of cryptographic hash functions published by the National Institute of Standards and Technology (NIST) as a U.S. Federal Information Processing Standard (FIPS). The family includes SHA-0, an early version withdrawn due to flaws; SHA-1, designed by the NSA but now deprecated due to cryptographic weaknesses; the robust SHA-2 suite with variants like SHA-256 and SHA-512; and SHA-3, formerly known as Keccak, selected through an open competition and differing structurally from earlier versions. These standards have evolved through various FIPS publications, reflecting advances in security requirements and cryptanalysis.
Comparison of SHA functions
In the table below, internal state means the "internal hash sum" after each compression of a data block.
Further information: Merkle–Damgård construction
Comparison of SHA functions- view
- talk
- edit
Algorithm and variant | Output size(bits) | Internal state size (bits) | Block size(bits) | Rounds | Operations | Security against collision attacks (bits) | Security against length extension attacks (bits) | Performance on Skylake (median cpb)1 | First published | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Long messages | 8 bytes | ||||||||||
MD5 (as reference) | 128 | 128(4 × 32) | 512 | 4 (16 operations in each round) | And, Xor, Or, Rot, Add (mod 232) | ≤ 18(collisions found)2 | 0 | 4.99 | 55.00 | 1992 | |
SHA-0 | 160 | 160(5 × 32) | 512 | 80 | And, Xor, Or, Rot, Add (mod 232) | < 34(collisions found) | 0 | ≈ SHA-1 | ≈ SHA-1 | 1993 | |
SHA-1 | < 63(collisions found)3 | 3.47 | 52.00 | 1995 | |||||||
SHA-2 | SHA-224SHA-256 | 224256 | 256(8 × 32) | 512 | 64 | And, Xor, Or, Rot, Shr, Add (mod 232) | 112 128 | 32 0 | 7.627.63 | 84.5085.25 | 20042001 |
SHA-384 | 384 | 512(8 × 64) | 1024 | 80 | And, Xor, Or, Rot, Shr, Add (mod 264) | 192 | 128 | 5.12 | 135.75 | 2001 | |
SHA-512 | 512 | 256 | 04 | 5.06 | 135.50 | 2001 | |||||
SHA-512/224SHA-512/256 | 224256 | 112128 | 288256 | ≈ SHA-384 | ≈ SHA-384 | 2012 | |||||
SHA-3 | SHA3-224SHA3-256SHA3-384SHA3-512 | 224256384512 | 1600(5 × 5 × 64) | 11521088832576 | 245 | And, Xor, Rot, Not | 112128192256 | 4485127681024 | 8.128.5911.0615.88 | 154.25155.50164.00164.00 | 2015 |
SHAKE128SHAKE256 | d (arbitrary)d (arbitrary) | 13441088 | min(d/2, 128)min(d/2, 256) | 256512 | 7.088.59 | 155.25155.50 |
Validation
Main article: Cryptographic Module Validation Program
All SHA-family algorithms, as FIPS-approved security functions, are subject to official validation by the CMVP (Cryptographic Module Validation Program), a joint program run by the American National Institute of Standards and Technology (NIST) and the Canadian Communications Security Establishment (CSE).
References
"Measurements table". bench.cr.yp.to. http://bench.cr.yp.to/results-hash.html#amd64-skylake ↩
Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Fast Collision Attack on MD5 (PDF). Cryptology ePrint Archive (Technical report). IACR. https://eprint.iacr.org/2013/170.pdf ↩
Stevens, Marc; Bursztein, Elie; Karpman, Pierre; Albertini, Ange; Markov, Yarik. The first collision for full SHA-1 (PDF) (Technical report). Google Research. Marc Stevens; Elie Bursztein; Pierre Karpman; Ange Albertini; Yarik Markov; Alex Petit Bianco; Clement Baisse (February 23, 2017). "Announcing the first SHA1 collision". Google Security Blog. /wiki/Marc_Stevens_(cryptology) ↩
Without truncation, the full internal state of the hash function is known, regardless of collision resistance. If the output is truncated, the removed part of the state must be searched for and found before the hash function can be resumed, allowing the attack to proceed. ↩
"The Keccak sponge function family". Retrieved 2016-01-27. http://keccak.noekeon.org/specs_summary.html ↩