15
Finding MD5 Collisions on a Notebook PC Using Multi- message Modifications Vlastimil Klima 1) Independent cryptologist [email protected] , http://cryptography.hyperlink.cz 1) This research was sponsored by LEC s.r.o., Prague, http://www.lec.cz Security and Protection of Information 2005, 3rd Int. Conference, Brno, Czech Republic, May 3 - 5, 2005

Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist [email protected]@volny.cz,

Embed Size (px)

Citation preview

Page 1: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

Finding MD5 Collisions on a Notebook

PC Using Multi-message Modifications

Vlastimil Klima1)

Independent cryptologist

[email protected], http://cryptography.hyperlink.cz

1)This research was sponsored by LEC s.r.o., Prague, http://www.lec.cz

Security and Protection of Information 2005, 3rd Int. Conference, Brno, Czech Republic, May 3 - 5, 2005

Page 2: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

2

Hash functions

One-way and collision-free

… they are very robust and complex

it is always exciting when a collision is found

m(1) m(2) m(3) m(n)............

……text.....

Message…

.... text ....

end padding

fIV H(n)f f

m(i)

fH(i-1) H(i)

compression function f

2 D -1 messages

M

M*

H

H

H

H H H H

2 128 images {0, 1} 128

H(M) = H(M*)

D = 2 64

Page 3: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

3

Hash functions

One of the most important cryptanalytic articles of the last year was precisely the work of the Chinese team [1]: X. Wang, D. Feng, X. Lai, H. Yu, "Collisions for Hash Functions

MD4, MD5, HAVAL-128 and RIPEMD", rump session, CRYPTO 2004, Cryptology ePrint Archive, Report 2004/199, http://eprint.iacr.org/2004/199

They presented MD5 collisions, but … no algorithm nor explanation in [1] as to how to

find the collisions (we will further focus on MD5 only)

Page 4: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

4

What we knew at the beginning from [1]

M = x[0…15], M* = x*[0…15] x*[i] = x[i], except x*[4] = x[4] +231, x*[11] = x[11] +215, x*[14] = x[14] +231

N = y[0…15], N* =y*[0…15],y*[i] = y[i], except y*[4] = y[4] -231, y*[11] = y[11] -215, y*[14] = y[14] –231

H1* - H1 = (0, +231+225, +231+225, +231+225) , it took 1 hour on super comp. IBM P690H2* - H2 = (0,0,0,0), it took 15s-5min.

f

H2

f

M

H1

IV

f f

M*

H1*

N

N*

Page 5: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

5

At the beginning…

We were motivated by published data

Our goal: to unveil the method and generate our collisions

Page 6: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

6

Our results after three months

we independently discovered a method of finding MD5 collisions

our method is quicker finding the first block and slower in the second block

our method seemed quite different from the unpublished Chinese method, because of different time behaviour

It took the Chinese team about one hour using an IBM P690 supercomputer. Because the supercomputer is about 25 - 50 times faster, it would take 25-50 hours on a notebook.

Our method takes approximately 8 hours on a notebook PC (Intel Pentium 1.6 GHz)

Overall, our method is about 3 - 6 times faster

Page 7: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

7

Comparing both methods

Accidentally (do not find any purpose...): We published our preliminary version of our paper at eprint

archive on March 5, 2005 Wang´s et al. paper was put on the web on March 6, 2005

When the Chinese method was published, we compared the original and our method we concluded that the methods are different in the technique and

the same in consequences

The method is called multi-message modification methodWe proposed several multi-message modification methods, the Chinese team presented only one example.

Page 8: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

8

Differential scheme

A change in one word x[i] leads to four changes, what leads to many changes in the next steps…Presetting values of some bits of Q[…] enables to control the changes through the scheme – we call it stationary conditions

f H(i-1) H(i)

H(i)

H(i-1) x[0]

...

m(i)

.

.

.

64

M

x[1]

x[2]

x[15]

x[11]

x[1] x[6]

x[0]

...

x[0]

x[0]

...

...

...

...

...

new calculated values: Q[1] Q[2] ...... Q[64] final addition: H[0..3] = IV + (Q[61],..,Q[64])

Page 9: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

9

Stationary conditions

Hawkes et al. (in their great work [2] from October 2004) did not obtain collisions, but they very well described the sufficient stationary conditions Stationary conditions together with the differences in message words

lead to the predefined differences in intermediate values Q in the first block and in the second block

The predefined differences are called the differential path Stationary conditions with the differential path constitute the

differential scheme We used the differential path from [1] and the stationary conditions

from [2] [2] Philip Hawkes, Michael Paddon, Gregory G. Rose: Musings on the Wang et

al. MD5 Collision, Cryptology ePrint Archive, Report 2004/264, 13 October 2004, http://eprint.iacr.org/2004/264.pdf

Page 10: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

10

Stationary conditions in the first blockQ[ 1]=Q[0 ]+RL(F(Q[0 ],Q[-1],Q[-2])+Q[-3]+x[0 ]+0xd76aa478, 7); 0 condsQ[ 2]=Q[1 ]+RL(F(Q[1 ],Q[0 ],Q[-1])+Q[-2]+x[1 ]+0xe8c7b756,12); 0 condsQ[ 3]=Q[2 ]+RL(F(Q[2 ],Q[1 ],Q[0 ])+Q[-1]+x[2 ]+0x242070db,17); 3 condsQ[ 4]=Q[3 ]+RL(F(Q[3 ],Q[2 ],Q[1 ])+Q[0 ]+x[3 ]+0xc1bdceee,22); 5 condsQ[ 5]=Q[4 ]+RL(F(Q[4 ],Q[3 ],Q[2 ])+Q[1 ]+x[4 ]+0xf57c0faf, 7); 24 condsQ[ 6]=Q[5 ]+RL(F(Q[5 ],Q[4 ],Q[3 ])+Q[2 ]+x[5 ]+0x4787c62a,12); 24 condsQ[ 7]=Q[6 ]+RL(F(Q[6 ],Q[5 ],Q[4 ])+Q[3 ]+x[6 ]+0xa8304613,17); 32 condsQ[ 8]=Q[7 ]+RL(F(Q[7 ],Q[6 ],Q[5 ])+Q[4 ]+x[7 ]+0xfd469501,22); 28 conds 240 condsQ[ 9]=Q[8 ]+RL(F(Q[8 ],Q[7 ],Q[6 ])+Q[5 ]+x[8 ]+0x698098d8, 7); 25 condsQ[10]=Q[9 ]+RL(F(Q[9 ],Q[8 ],Q[7 ])+Q[6 ]+x[9 ]+0x8b44f7af,12); 17 condsQ[11]=Q[10]+RL(F(Q[10],Q[9 ],Q[8 ])+Q[7 ]+x[10]+0xffff5bb1,17); 15 condsQ[12]=Q[11]+RL(F(Q[11],Q[10],Q[9 ])+Q[8 ]+x[11]+0x895cd7be,22); 12 condsQ[13]=Q[12]+RL(F(Q[12],Q[11],Q[10])+Q[9 ]+x[12]+0x6b901122, 7); 14 condsQ[14]=Q[13]+RL(F(Q[13],Q[12],Q[11])+Q[10]+x[13]+0xfd987193,12); 14 conds Q[15]=Q[14]+RL(F(Q[14],Q[13],Q[12])+Q[11]+x[14]+0xa679438e,17); 6 condsQ[16]=Q[15]+RL(F(Q[15],Q[14],Q[13])+Q[12]+x[15]+0x49b40821,22); 2 conds ………..Q[17]=Q[16]+RL(G(Q[16],Q[15],Q[14])+Q[13]+x[1 ]+0xf61e2562, 5); 4 condsQ[18]=Q[17]+RL(G(Q[17],Q[16],Q[15])+Q[14]+x[6 ]+0xc040b340, 9); 3 condsQ[19]=Q[18]+RL(G(Q[18],Q[17],Q[16])+Q[15]+x[11]+0x265e5a51,14); 2 condsQ[20]=Q[19]+RL(G(Q[19],Q[18],Q[17])+Q[16]+x[0 ]+0xe9b6c7aa,20); 1 cond 43 conds…..Q[17] - Q[64]: 43 conds

Page 11: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

11

Our Multi-message modification method in the first block

Q[ 1]=Q[0 ]+RL(F(Q[0 ],Q[-1],Q[-2])+Q[-3]+x[0 ]+0xd76aa478, 7); 0 condsQ[ 2]=Q[1 ]+RL(F(Q[1 ],Q[0 ],Q[-1])+Q[-2]+x[1 ]+0xe8c7b756,12); 0 condsQ[ 3]=Q[2 ]+RL(F(Q[2 ],Q[1 ],Q[0 ])+Q[-1]+x[2 ]+0x242070db,17); 3 condsQ[ 4]=Q[3 ]+RL(F(Q[3 ],Q[2 ],Q[1 ])+Q[0 ]+x[3 ]+0xc1bdceee,22); 5 condsQ[ 5]=Q[4 ]+RL(F(Q[4 ],Q[3 ],Q[2 ])+Q[1 ]+x[4 ]+0xf57c0faf, 7); 24 condsQ[ 6]=Q[5 ]+RL(F(Q[5 ],Q[4 ],Q[3 ])+Q[2 ]+x[5 ]+0x4787c62a,12); 24 condsQ[ 7]=Q[6 ]+RL(F(Q[6 ],Q[5 ],Q[4 ])+Q[3 ]+x[6 ]+0xa8304613,17); 32 condsQ[ 8]=Q[7 ]+RL(F(Q[7 ],Q[6 ],Q[5 ])+Q[4 ]+x[7 ]+0xfd469501,22); 28 conds 240 condsQ[ 9]=Q[8 ]+RL(F(Q[8 ],Q[7 ],Q[6 ])+Q[5 ]+x[8 ]+0x698098d8, 7); 25 condsQ[10]=Q[9 ]+RL(F(Q[9 ],Q[8 ],Q[7 ])+Q[6 ]+x[9 ]+0x8b44f7af,12); 17 condsQ[11]=Q[10]+RL(F(Q[10],Q[9 ],Q[8 ])+Q[7 ]+x[10]+0xffff5bb1,17); 15 condsQ[12]=Q[11]+RL(F(Q[11],Q[10],Q[9 ])+Q[8 ]+x[11]+0x895cd7be,22); 12 condsQ[13]=Q[12]+RL(F(Q[12],Q[11],Q[10])+Q[9 ]+x[12]+0x6b901122, 7); 14 condsQ[14]=Q[13]+RL(F(Q[13],Q[12],Q[11])+Q[10]+x[13]+0xfd987193,12); 14 conds Q[15]=Q[14]+RL(F(Q[14],Q[13],Q[12])+Q[11]+x[14]+0xa679438e,17); 6 condsQ[16]=Q[15]+RL(F(Q[15],Q[14],Q[13])+Q[12]+x[15]+0x49b40821,22); 2 conds ………..Q[17]=Q[16]+RL(G(Q[16],Q[15],Q[14])+Q[13]+x[1 ]+0xf61e2562, 5); 4 condsQ[18]=Q[17]+RL(G(Q[17],Q[16],Q[15])+Q[14]+x[6 ]+0xc040b340, 9); 3 condsQ[19]=Q[18]+RL(G(Q[18],Q[17],Q[16])+Q[15]+x[11]+0x265e5a51,14); 2 condsQ[20]=Q[19]+RL(G(Q[19],Q[18],Q[17])+Q[16]+x[0 ]+0xe9b6c7aa,20); 1 cond 43 conds…..Q[17] - Q[64]: 43 conds, in our method 33 conds remain (Wang et al. 37 conds)3rd step

2nd step

1st step:

Q[3-16]

Page 12: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

12

One of our proposals of Multi-message modification method in the second block

Q[ 1]=Q[0 ]+RL(F(Q[0 ],Q[-1],Q[-2])+Q[-3]+x[0 ]+0xd76aa478, 7); 7 condsQ[ 2]=Q[1 ]+RL(F(Q[1 ],Q[0 ],Q[-1])+Q[-2]+x[1 ]+0xe8c7b756,12); 20 condsQ[ 3]=Q[2 ]+RL(F(Q[2 ],Q[1 ],Q[0 ])+Q[-1]+x[2 ]+0x242070db,17); 23 condsQ[ 4]=Q[3 ]+RL(F(Q[3 ],Q[2 ],Q[1 ])+Q[0 ]+x[3 ]+0xc1bdceee,22); 26 condsQ[ 5]=Q[4 ]+RL(F(Q[4 ],Q[3 ],Q[2 ])+Q[1 ]+x[4 ]+0xf57c0faf, 7); 25 condsQ[ 6]=Q[5 ]+RL(F(Q[5 ],Q[4 ],Q[3 ])+Q[2 ]+x[5 ]+0x4787c62a,12); 24 condsQ[ 7]=Q[6 ]+RL(F(Q[6 ],Q[5 ],Q[4 ])+Q[3 ]+x[6 ]+0xa8304613,17); 20 condsQ[ 8]=Q[7 ]+RL(F(Q[7 ],Q[6 ],Q[5 ])+Q[4 ]+x[7 ]+0xfd469501,22); 18 conds 284 condsQ[ 9]=Q[8 ]+RL(F(Q[8 ],Q[7 ],Q[6 ])+Q[5 ]+x[8 ]+0x698098d8, 7); 17 condsQ[10]=Q[9 ]+RL(F(Q[9 ],Q[8 ],Q[7 ])+Q[6 ]+x[9 ]+0x8b44f7af,12); 18 condsQ[11]=Q[10]+RL(F(Q[10],Q[9 ],Q[8 ])+Q[7 ]+x[10]+0xffff5bb1,17); 15 condsQ[12]=Q[11]+RL(F(Q[11],Q[10],Q[9 ])+Q[8 ]+x[11]+0x895cd7be,22); 17 condsQ[13]=Q[12]+RL(F(Q[12],Q[11],Q[10])+Q[9 ]+x[12]+0x6b901122, 7); 17 condsQ[14]=Q[13]+RL(F(Q[13],Q[12],Q[11])+Q[10]+x[13]+0xfd987193,12); 17 conds Q[15]=Q[14]+RL(F(Q[14],Q[13],Q[12])+Q[11]+x[14]+0xa679438e,17); 9 condsQ[16]=Q[15]+RL(F(Q[15],Q[14],Q[13])+Q[12]+x[15]+0x49b40821,22); 2 conds ………..Q[17]=Q[16]+RL(G(Q[16],Q[15],Q[14])+Q[13]+x[1 ]+0xf61e2562, 5); 4 condsQ[18]=Q[17]+RL(G(Q[17],Q[16],Q[15])+Q[14]+x[6 ]+0xc040b340, 9); 3 condsQ[19]=Q[18]+RL(G(Q[18],Q[17],Q[16])+Q[15]+x[11]+0x265e5a51,14); 2 condsQ[20]=Q[19]+RL(G(Q[19],Q[18],Q[17])+Q[16]+x[0 ]+0xe9b6c7aa,20); 1 cond 36 conds…..Q[17] - Q[64]: 36 conds, in our method 27 conds remain (Wang et al. 30 conds)

1st step

2nd step

3rd step

Page 13: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

13

At the end…

First message:

0xA6,0x64,0xEA,0xB8,0x89,0x04,0xC2,0xAC,

0x48,0x43,0x41,0x0E,0x0A,0x63,0x42,0x54,

0x16,0x60,0x6C,0x81,0x44,0x2D,0xD6,0x8D,

0x40,0x04,0x58,0x3E,0xB8,0xFB,0x7F,0x89,

0x55,0xAD,0x34,0x06,0x09,0xF4,0xB3,0x02,

0x83,0xE4,0x88,0x83,0x25,0x71,0x41,0x5A,

0x08,0x51,0x25,0xE8,0xF7,0xCD,0xC9,0x9F,

0xD9,0x1D,0xBD,0xF2,0x80,0x37,0x3C,0x5B,

0x97,0x9E,0xBD,0xB4,0x0E,0x2A,0x6E,0x17,

0xA6,0x23,0x57,0x24,0xD1,0xDF,0x41,0xB4,

0x46,0x73,0xF9,0x96,0xF1,0x62,0x4A,0xDD,

0x10,0x29,0x31,0x67,0xD0,0x09,0xB1,0x8F,

0x75,0xA7,0x7F,0x79,0x30,0xD9,0x5C,0xEB,

0x02,0xE8,0xAD,0xBA,0x7A,0xC8,0x55,0x5C,

0xED,0x74,0xCA,0xDD,0x5F,0xC9,0x93,0x6D,

0xB1,0x9B,0x4A,0xD8,0x35,0xCC,0x67,0xE3.

Second message:0xA6,0x64,0xEA,0xB8,0x89,0x04,0xC2,0xAC,0x48,0x43,0x41,0x0E,0x0A,0x63,0x42,0x54, 0x16,0x60,0x6C,0x01,0x44,0x2D,0xD6,0x8D,0x40,0x04,0x58,0x3E,0xB8,0xFB,0x7F,0x89, 0x55,0xAD,0x34,0x06,0x09,0xF4,0xB3,0x02,0x83,0xE4,0x88,0x83,0x25,0xF1,0x41,0x5A, 0x08,0x51,0x25,0xE8,0xF7,0xCD,0xC9,0x9F,0xD9,0x1D,0xBD,0x72,0x80,0x37,0x3C,0x5B, 0x97,0x9E,0xBD,0xB4,0x0E,0x2A,0x6E,0x17,0xA6,0x23,0x57,0x24,0xD1,0xDF,0x41,0xB4, 0x46,0x73,0xF9,0x16,0xF1,0x62,0x4A,0xDD,0x10,0x29,0x31,0x67,0xD0,0x09,0xB1,0x8F, 0x75,0xA7,0x7F,0x79,0x30,0xD9,0x5C,0xEB,0x02,0xE8,0xAD,0xBA,0x7A,0x48,0x55,0x5C, 0xED,0x74,0xCA,0xDD,0x5F,0xC9,0x93,0x6D,0xB1,0x9B,0x4A,0x58,0x35,0xCC,0x67,0xE3. Common MD5 hash: 0x2B,0xA3,0xBE,0x5A,0xA5,0x41,0x00,0x6B,0x62,0x37,0x01,0x11,0x28,0x2D,0x19,0xF5.

We experimentally verified our findings…

Page 14: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

14

Conclusions

We proposed new method for MD5 collisions finding, independently on a description of the method by Wang et al.

Our method is quicker

It enables us to find collisions on a standard notebook PC in several hours

Page 15: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications Vlastimil Klima 1) Independent cryptologist v.klima@volny.czv.klima@volny.cz,

15

References[1] Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu: Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD, rump session, CRYPTO 2004, Cryptology ePrint Archive, Report 2004/199, first version (August 16, 2004), second version (August 17, 2004), http://eprint.iacr.org/2004/199.pdf[2] Philip Hawkes, Michael Paddon, Gregory G. Rose: Musings on the Wang et al. MD5 Collision, Cryptology ePrint Archive, Report 2004/264, 13 October 2004, http://eprint.iacr.org/2004/264.pdf[3] Vlastimil Klima: Finding MD5 Collisions – a Toy For a Notebook, Cryptology ePrint Archive, Report 2005/075, http://eprint.iacr.org/2005/075.pdf, March 5, 2005[4] Vlastimil Klima: Finding MD5 Collisions on a Notebook PC Using Multi-message Modifications, March 31, 2005, IACR ePrint archive, Report 2005/102, http://eprint.iacr.org/2005/102 / - preliminary version of this contribution [5] Xiaoyun Wang, Hongbo Yu: How to Break MD5 and Other Hash Functions, http://www.infosec.sdu.edu.cn/paper/md5-attack.pdf, published on the web on March 6, 2005