Team Grey Skies – Pete Biancaniello and Anton Schraut January 18 th, 2012
Designed as part of a series by Professor Ronald Rivest (MIT) Proposed and released 1991 Used for data integrity checks Variable-length to 128 bit output 1996, collision found in compression function 2004, In March MD5CRK started, by August an attack was complete (1 hour IBM p690 cluster) 2010, single-block collision discovered
Variable input is padded to be divisible by 512. Single bit with value 1 is appended, followed by enough zeroes to reach 64 bits less than a 512 multiple. Last 64 bits are filled with a little endian integer representing original message length in bits.
Padded input divided into 512-bit chunks Four 32-bit words are initialized to specific constants Each chunk is operated on in four stages called “rounds” Each round modifies the 128-bit state composed of the initial 32-bit words
Rounds consist of 16 operations Each operation is based on one of four non- linear functions F, modular addition, and left rotation. Possible F functions:
Mi is a 32-bit block of message Ki is a 32-bit constant F is an “F” function <<<s is a left rotation by s places Each box denotes modular addition (2^32)
Specifications: Improvements/Insights: /md5e-full.pdf /md5e-full.pdf History/General: