1 / 19

MD5

MD5. A cryptographic hash code RFC 1321 Ron Rivest, 1992 No collisions No inverse Computationally efficient. Previous Hash Codes. 1989 – Rivest, MD2 RFC 1319 Semi-broken in 1997 1990 – Rivest, MD4 Collisions discovered in 2004 1990 – Snefru, Merkle. Hash Since MD5. SHA SHA - 0

Download Presentation

MD5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MD5 • A cryptographic hash code • RFC 1321 • Ron Rivest, 1992 • No collisions • No inverse • Computationally efficient

  2. Previous Hash Codes • 1989 – Rivest, MD2 • RFC 1319 • Semi-broken in 1997 • 1990 – Rivest, MD4 • Collisions discovered in 2004 • 1990 – Snefru, Merkle

  3. Hash Since MD5 • SHA • SHA - 0 • NIST RFC • FIPS 180 • NSA withdrew it • SHA – 1 • FIPS 180-1 • Semi broken in 2005 • SHA – 2 • FIPS 180-2 • Differing lengths

  4. In the Future • NIST RFC for SHA – 3 family of hash codes • Federal Register Nov. 2, 2007 • (V. 72 # 212, pages 62212-6222O)

  5. MD5 Specs. • Works on 512 bit blocks of the message • Produces a 128 bit hash code

  6. Message Preparation • Padding • Block subdivision

  7. Padding • The Message is padded to an exact multiple of 512 bit blocks • 1 is appended to message • The remainder (less 64 bits) is filled with as many 0’s as required • The 64 bit representation of the message length is appended

  8. Main MD5 Loop IVs

  9. Main Loop • Each 512-bit message block is used in each of 4 rounds • For each round the block is divided into 16 32 – bit sub-blocks • Each round consists of 16 steps (16 * 32 = 512) • Each step is based on a particular operation for each round

  10. A Round Step • Uses 4 32-bit inputs: a, b, c, d • Also uses a 32-bit sub-block of the message block • Generates 4 32-bit outputs for the next round step or the next round

  11. One Round Step

  12. IVInitialized Chaining Variables A = 0x01234567 B = 0x89abcdef C = 0xfedcba98 D = 0x76543210

  13. Nonlinear Generating Functions F(X,Y,Z) = (X^Y) v ((~X) ^ Z) G(X,Y,Z) = (X^Y) v (Y^(~Z)) H(X,Y,Z) = XÅ Y Å Z I(X,Y,Z) = Y Å (X v (~Z))

  14. Basic Operations

  15. Some constants Mj is the jth sub-block of the message block. For step i: ti = 232*abs(sin(i)) where i is measured in radians. s is the number of bits to be shifted: Round 1: [7, 12, 17, 22] Round 2: [5, 9, 14, 20] Round 3: [4, 11, 16, 23] Round 4: [6, 10, 15, 21]

  16. Round 1

  17. Round 2

  18. Round 3

  19. Round 4

More Related