MD5
Overview
MD5 or Message Digest Algorithm 5 is a widely used cryptographic hash function that produces a 128-bit (16-byte) hash value. It is commonly used to verify data integrity. MD5 has been utilized in a wide variety of security applications and is also commonly used to check the integrity of files. However, MD5 is not collision-resistant; as of 2007, a group of researchers was able to create different input values that hash to the same MD5 hash.
History
MD5 was designed by Ronald Rivest in 1991 to replace an earlier hash function, MD4. The motivation behind the creation of MD5 was to improve upon the security weaknesses of MD4. The algorithm has since been found to have several vulnerabilities and is considered to be broken for uses in security.
Algorithm Details
The MD5 hash function processes data in 512-bit blocks, divided into 16 words of 32-bits each. The output is a digest of 128 bits. The algorithm makes use of a bitwise operation, logical functions, and a modular addition. The process involves the following steps:
1. Padding: The input message is padded so that its length is congruent to 448, modulo 512. Padding is always performed, even if the length of the message is already congruent to 448, modulo 512. The padding consists of a single 1-bit followed by zero bits.
2. Appending the length: A 64-bit representation of the length of the input message (before the padding) is appended to the result of the previous step. The resulting message has a length that is an exact multiple of 512 bits.
3. Initialization of the MD Buffer: A four-word buffer (A,B,C,D) is used to compute the message digest. These words are initialized to certain fixed constants.
4. Processing the message in 16-word blocks: MD5 uses four auxiliary functions that take as input three 32-bit words and produce as output one 32-bit word. The functions operate in rounds, and each round has a different function.
5. Output: The final result of the hash function is the 128-bit message digest.
Security
MD5 is considered to be broken in terms of security. The weaknesses of MD5 have been exploited in the field, most infamously by the Flame malware which used an MD5 collision to fake a Microsoft digital certificate. In 2004, a method to find collisions was announced by a group of researchers. This method was used to construct two different X.509 certificates that hash to the same MD5 hash value.
Applications
Despite its vulnerabilities, MD5 remains widely used. It is commonly utilized in checksums for data integrity verification, in particular for software downloads. Other applications include password storage, data deduplication, and in time-stamping schemes. However, due to its security issues, it is recommended to use other hash functions like SHA-256 or SHA-3 in security-sensitive applications.