Learn something new every day More Info... by email
A secure hash algorithm, also known by the acronym SHA, is a hashing algorithm that is considered to be cryptographically secure. The original data, once hashed by a secure hash algorithm, typically cannot be reconstructed with a feasible amount of computing power. Secure hash algorithms are often used in combination with other algorithms to authenticate messages, including digital signatures.
Some network routers and firewalls implement secure hash algorithms directly in their hardware. This allows data packets to be authenticated with limited impact on throughput. Secure hash algorithm software exists also, including many open source implementations. The US National Institute of Standards and Technology (NIST) and the Canadian Communications Security Establishment (CSE) jointly run the Cryptographic Module Verification Program (CMVP). This official program certifies the correct operation of secure hash algorithm implementations for sensitive applications.
The US government has standardized at least six secure hash algorithms. SHA-0 and SHA-1 were the earliest incarnations developed in the 1990s. The SHA-2 series developed in the 2000s included SHA-224, -256, -384 and -512. These are designed such that two documents with different contents generally produce two unique sets of hash values, avoiding hash collisions.
The SHA-0 algorithm, first published in 1993 by the NIST, was quickly discontinued after a significant weakness was found. It was replaced by SHA-1 in 1995, which includes an extra computational step that addresses the undisclosed problems of SHA-0. Both algorithms hash a message of up to 264-1 bits into a 160-bit "digest." Both utilize a block size of 512 bits and a word size of 32 bits in their operation.
SHA-1 is used in some common Internet protocols and security tools. These include IPsec, PGP, SSL, S/MIME, SSH and TLS. SHA-1 is also typically used as part of the protection scheme for unclassified government documents. The private sector utilizes this secure hash algorithm for some sensitive information as well. It is scheduled to be retired from general government use in 2010.
SHA-224, -256, -384 and -512 were published by the NIST between 2001 and 2004. These four algorithms, also known as the SHA-2 family, are generally more robust than SHA-1. SHA-224 and SHA-256 utilize the same block, word and maximum input message sizes as SHA-1. In contrast, SHA-224 produces a 224-bit digest, while SHA-256 creates a 256-bit digest. SHA-384 and SHA-512 increase the block size to 1024 bits, the word size to 64 bits, and the maximum input message length to 2128-1 bits. The digest produced by SHA-384 is 384 bits long, while the SHA-512 digest contains 512 bits.
Like SHA-0 and SHA-1, the SHA-2 family was designed by the US National Security Agency (NSA). Although serious flaws have not been publicly disclosed in SHA-2, NIST has opened a competition to develop the next secure hash algorithm. This new algorithm, to be called SHA-3, is likely to be chosen in 2012 from a collection of public entries. It is expected to be a new design, not based on the existing algorithms.