Some Attacks on Merkle-Damgård Hashes

Some Attacks on Merkle-Damgård Hashes

Overview Some Attacks on Merkle-Damg˚ardHashes John Kelsey, NIST and KU Leuven May 8, 2018 m m m m ||10*L 0 1 2 3 iv F h F h F h F h 0 1 2 final Introduction 1 / 63 Overview I Cryptographic Hash Functions I Thinking About Collisions I Merkle-Damg˚ardhashing I Joux Multicollisions[2004] I Long-Message Second Preimage Attacks[1999,2004] I Herding and the Nostradamus Attack[2005] Introduction 2 / 63 Why Talk About These Results? I These are very visual results{looking at the diagram often explains the idea. I The results are pretty accessible. I Help you think about what's going on inside hashing constructions. Introduction 3 / 63 Part I: Preliminaries/Review I Hash function basics I Thinking about collisions I Merkle-Damg˚ardhash functions Introduction 4 / 63 Cryptographic Hash Functions I Today, they're the workhorse of crypto. I Originally: Needed for digital signatures I You can't sign 100 MB message{need to sign something short. I \Message fingerprint" or \message digest" I Need a way to condense long message to short string. I We need a stand-in for the original message. I Take a long, variable-length message... I ...and map it to a short string (say, 128, 256, or 512 bits). Cryptographic Hash Functions 5 / 63 Properties What do we need from a hash function? I Collision resistance I Preimage resistance I Second preimage resistance I Many other properties may be important for other applications Note: cryptographic hash functions are designed to behave randomly. Cryptographic Hash Functions 6 / 63 Collision Resistance The core property we need. I Can't find X 6= Y such that HASH(X ) = HASH(Y ) I Note, there must be huge numbers of collisions... I How many million-bit strings are there? I Way more than number of 256-bit strings. I ...but it's very hard to find them. I Ideally, best way to find collisions is trying lots of messages I ...until a pair of outputs happen to collide by chance. Cryptographic Hash Functions 7 / 63 Preimage and Second Preimage Resistance What other properties do we need from a hash function? I Preimage resistance I Given H, can't find X such that H = HASH(X ) I Second preimage resistance I Given X , can't find Y such that HASH(X ) = HASH(Y ). I Like finding a collision, but harder{you already have a target message. Cryptographic Hash Functions 8 / 63 Generic Attacks For any hash function, we have these generic attacks: n=2 I Collision with 2 tries. n I Preimages and second preimages with 2 tries. If hash function behaves randomly, these are the best we can do. Cryptographic Hash Functions 9 / 63 Other Properties Where else are hashes used? I Over time, hash functions became workhorses, used in many places: I Message authentication (HMAC) I Key derivation functions I Password hashing I Cryptographic PRNGs (HashDRBG, FIPS186 PRNG) I Hashing data for commitments I Proofs of work I These applications often require other properties. Cryptographic Hash Functions 10 / 63 Thinking About Collisions k 2 Expect n-bit collision random when values 2k = n a b 2 expect 2 n-bit one n-bit random collision random values when values a+b=n Digression: Thinking About Collisions 11 / 63 Collisions in a List Suppose we have a list of 2k random n-bit numbers. How many collisions can we expect? k 2 Expect n-bit collision random when values 2k = n 2k 2k−1 I 2 ≈ 2 pairs of random values. −n I Each pair has probability 2 to collide. 2k−n−1 I So we expect about 2 collisions. Digression: Thinking About Collisions 12 / 63 Matching Between Two Lists Suppose we have two lists of random n-bit numbers. How many collisions can we expect? a b 2 expect 2 a+b I 2 pairs of randomn-bit values.one n-bit random collision random −n I Each pair has probabilityvalues when 2 to collide.values a+b−a+b=nn I So we expect about 2 collisions. Digression: Thinking About Collisions 13 / 63 Merkle-Damg˚ard m m m m ||10*L iv 0 h 1 h 2 h 3 h 0 1 2 final m m m m ||10*L 0 1 2 3 Figure: Two Different Ways to Represent Merkle-Damg˚ard Hashing iv F h F h F h F h 0 1 2 final Merkle-Damg˚ardHashes 14 / 63 How to Make a Good Hash Function? I We needed to be able to build good hash functions I Collision resistance, second preimage resistance, preimage resistance I About the only thing anyone knew how to build were block ciphers. I Merkle and Damg˚ardindependently worked out a strategy I ...that was wildly successful. m m m m ||10*L 0 1 2 3 iv F h F h F h F h 0 1 2 final Merkle-Damg˚ardHashes 15 / 63 Merkle-Damg˚ardHashes (1) Big idea: Make a good fixed-length hash function, then build a variable-length hash from it. I We need a fixed-length compression function, F (h; m) I h = hash chaining value, n bits. (Example n = 256) in m m m m ||10*L I hout =0 hash chaining1 value, n 2bits. 3 I m = message block, w bits. (Example w = 512) iv F h F h F h F h I Pad the message,0 break into1 w-bit chunks,2 andfinal process sequentially. Merkle-Damg˚ardHashes 16 / 63 Merkle-Damg˚ardHashes (2) 1. Pad message to integer multiple of w bits: I 10* padding I ...plus length of unpadded message (Merkle-Damg˚ard strengthening) m m m m ||10*L 2. Break padded0 message1 into blocks2 m0;1;23;:::;k−1. 3. h−1 = some fixed initial value, iv. iv F h F h F h F h 4. hi F (hi−1; m0i ) for i = 01; 1; 2;:::; k2 − 1. final 5. Final hi is HASH(M) Merkle-Damg˚ardHashes 17 / 63 This strategy was wildly successful! I Merkle-Damg˚ardconstruction lets you worry about security of compression function I ...let construction take care of whole hash function. I Almost all hashes for next 20+ years used Merkle-Damg˚ard m m m m ||10*L construction!0 1 2 3 I MD4, MD5 iv F h F h F h F h I SHA0, SHA1,0 SHA256,1 SHA512 2 final I RIPE-MD, RIPE-MD160, Haval I Snefru,Tiger, Whirlpool Merkle-Damg˚ardHashes 18 / 63 Part II: Surprising Properties of Merkle-Damg˚ardHashes I Joux multicollisions I Long-message second preimage attacks I Herding attacks Merkle-Damg˚ardHashes 19 / 63 Joux Multicollisions m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 Joux Multicollisions 20 / 63 Joux' Multicollision Result I In 2004, Joux published a new attack on Merkle-Damg˚ard hashes. I ...showing that we hadn't really understood them despite 20+ years of work. I He showed that: 30 I Finding 2 values with the same hash for an Merkle-Damg˚ard hash... I ...takes only about 30 times the work of finding one collision! I Concatenating two Merkle-Damg˚ardhashes doesn't give much extra security. I Joux's work was the basis for the other results I'll talk about today. Joux Multicollisions 21 / 63 A Property of Merkle-Damg˚ardHashes I hk contains everything HASH will ever know about m0;1;2;:::;k−1 I This is necessary for HASH to be efficient m m m m ||10*L I HASH needs0 to process1 the data2 in one pass.3 I But it has some surprising consequences.... iv F h F h F h F h 0 1 2 final Joux Multicollisions 22 / 63 Notation This is an equivalent way to show Merkle-Damg˚ardhashing. Figure: A Different Way to Represent Merkle-Damg˚ardHashing m m m The nodes0 are hash1 chaining values2 m ||10*L I iv h h h 3 h 0 1 2 final I The edges are message blocks I This is useful for thinking about Joux Multicollisions Joux Multicollisions 23 / 63 Constructing a Joux Multicollision We can concatenate collisions! m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 ∗ 1. Find colliding pair from iv:(m0; m0) ! h1. ∗ 2. Find colliding pair from h0:(m1; m1) ! h2. ∗ 3. Find colliding pair from h1:(m2; m2) ! h3. ∗ 4. Find colliding pair from h2:(m3; m3) ! h4. Four collision searches, work ≈ 4 × 2n=2 How many different values have we found that all hash to h4? Joux Multicollisions 24 / 63 Each Path = Different Message (All with Same Hash) m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 Joux Multicollisions 25 / 63 Joux Multicollisions: Work m m m m 0 1 2 3 iv h h h h 1 2 3 4 m* m* m* m* 0 1 2 3 k I k collision-searches ! 2 values all with same hash k choices in the path = 2k total paths.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    63 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us