반응형
    
    
    
  Slashdot 을 읽고있는데 Practical Exploits of Broken MD5 Algorithm 이란 글이 눈에 들어오는것 아닌가?
 예로 부터 파일무결성 보증을 위한 대표수단으로 사용된 md5(message digest 5)!
  
예로 부터 파일무결성 보증을 위한 대표수단으로 사용된 md5(message digest 5)!
대표적인 source tarball 배포시 integrity 를 위해서는 md5 checksum 을 사용하는게 불문율 아니었나...
그렇다. md5 란 hash 계의 대명사로 1991년 탄생과 더불어 지금까지 각종 영역에서 두루 영향을 미쳐온 cryptographic hash 알고리즘인 것이다.
hash 함수인 관계로 당연히 근본적으로 역함수가 존재하지 않는 함수이다.
하지만, 128bit 로 정해진 해쉬 값이기 때문에 경우의 수는 겨우
2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 개
밖에 되지않는다. 겨우 말이다... ^^;
1991년 Ronald Rivest(RSA 설립자)에 의해 만들어진 md5 는 Ronald Rivest 의 message digest 해쉬 알고리즘 중 다섯번째로 만들어진것이기에 md5 란 이름을 갖게 되었다.
1993년 이래로 꾸준히 collision(동일한 해쉬값을 갖는 서로 다른 입력값)이 존재한다고 위험성이 계속 경고되어왔다고 한다.
과연 그랬나? -.- 왜 나만 모르고 있었던건가?
그러다가 2004년 8월에 드디어 수학적 이론으로 무장된 md5 collisions analytical attack 방법이 발표된 모양이다.(읽어보는건 도저히 무리... 도대체 뭔 소리를 적어놓은거야! 버럭!!! -.- )
Slashdot 의 글은 Exploiting MD5 collisions (in C#) 이란 이름 하에 이걸 보여주고 있는 거였다.
그럼, md5 기반 하에 있는 모든 코드들이나 디지털 서명들은 무용지물이란 이야기인가?
게다가, Wang 등의 짱께 선생님들에 따르면 SHA 까지도 모조리 collision 이 생각보다 적은 시간 아래 찾아질 수 있다는데...
다만, collision attack 이 본격적으로 구현되어지고 있는 등 md5 의 취약함에 대한 우려때문에 Microsoft 사에서는 md5 함수를 내부적으로 더이상 사용하지 않도록 방침이 정해지는 등, proactive 한 움직임이 나타나고 있다고 볼 수 있는 것이다.
                    
        아날로그식 md5 알고리즘 전개 ^^
대표적인 source tarball 배포시 integrity 를 위해서는 md5 checksum 을 사용하는게 불문율 아니었나...
그렇다. md5 란 hash 계의 대명사로 1991년 탄생과 더불어 지금까지 각종 영역에서 두루 영향을 미쳐온 cryptographic hash 알고리즘인 것이다.
hash 함수인 관계로 당연히 근본적으로 역함수가 존재하지 않는 함수이다.
하지만, 128bit 로 정해진 해쉬 값이기 때문에 경우의 수는 겨우
2^128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 개
밖에 되지않는다. 겨우 말이다... ^^;
1991년 Ronald Rivest(RSA 설립자)에 의해 만들어진 md5 는 Ronald Rivest 의 message digest 해쉬 알고리즘 중 다섯번째로 만들어진것이기에 md5 란 이름을 갖게 되었다.
1993년 이래로 꾸준히 collision(동일한 해쉬값을 갖는 서로 다른 입력값)이 존재한다고 위험성이 계속 경고되어왔다고 한다.
과연 그랬나? -.- 왜 나만 모르고 있었던건가?
그러다가 2004년 8월에 드디어 수학적 이론으로 무장된 md5 collisions analytical attack 방법이 발표된 모양이다.(읽어보는건 도저히 무리... 도대체 뭔 소리를 적어놓은거야! 버럭!!! -.- )
Slashdot 의 글은 Exploiting MD5 collisions (in C#) 이란 이름 하에 이걸 보여주고 있는 거였다.
그럼, md5 기반 하에 있는 모든 코드들이나 디지털 서명들은 무용지물이란 이야기인가?
게다가, Wang 등의 짱께 선생님들에 따르면 SHA 까지도 모조리 collision 이 생각보다 적은 시간 아래 찾아질 수 있다는데...
이런 해쉬함수들은 모조리 폐기처분 해야된다는 말일까?
이에 대한 모범답안은 아니오이다. 즉, 여전히 유효하게 사용하는게 바람직하다.
broken MD5 의 예제들은 하나같이 collision 을 보여줌으로써 unique 한 입력값들의 해쉬값이 항상 unique 하게 다르지않다를 보여주고 있다. 즉, 반례를 든 셈이다.
하지만, 해쉬함수의 정의가 해쉬값 자체가 unique 함을 뜻하지는 않는기 때문에 참인 명제에 대한 반례를 듦으로써 명제 자체가 틀렸다를 뜻하지 못한다. 헉헉...
md5 의 경우, 앞에서도 말했듯이 2^128 개의 경우의 수이므로 표본집단의 개수가 2^128 을 넘기면 당연히 중복될 가능성이 있는것이다.
attacker 들은 존재하지 않는 역함수를 만들어낸 것이 아니라(당연히 역함수는 없으므로), collision 셋트를 찾아낸 것이다.
이를 가리켜 collision attack 이라고 한다. 즉, collision 이 쉽게 만들어지면 만들어질 수록 그만큼 해당 hash 알고리즘이 취약하다고 볼 수 있다.
정작 문제가 되는 것은 주어진 해쉬값에 대해서 입력값을 바로 찾아버리는 preimage attack 이다.
즉, 역함수가 존재하지 않더라도 brute force 로라도 입력값을 찾아내버린다면 hash 알고리즘의 의미가 없어져버리기 때문이다.
하지만, 현재까지 md5 나 SHA 에 있어서 preimage attack 이 행해졌다는 얘기는 없다.
이에 대한 모범답안은 아니오이다. 즉, 여전히 유효하게 사용하는게 바람직하다.
broken MD5 의 예제들은 하나같이 collision 을 보여줌으로써 unique 한 입력값들의 해쉬값이 항상 unique 하게 다르지않다를 보여주고 있다. 즉, 반례를 든 셈이다.
하지만, 해쉬함수의 정의가 해쉬값 자체가 unique 함을 뜻하지는 않는기 때문에 참인 명제에 대한 반례를 듦으로써 명제 자체가 틀렸다를 뜻하지 못한다. 헉헉...
md5 의 경우, 앞에서도 말했듯이 2^128 개의 경우의 수이므로 표본집단의 개수가 2^128 을 넘기면 당연히 중복될 가능성이 있는것이다.
attacker 들은 존재하지 않는 역함수를 만들어낸 것이 아니라(당연히 역함수는 없으므로), collision 셋트를 찾아낸 것이다.
이를 가리켜 collision attack 이라고 한다. 즉, collision 이 쉽게 만들어지면 만들어질 수록 그만큼 해당 hash 알고리즘이 취약하다고 볼 수 있다.
정작 문제가 되는 것은 주어진 해쉬값에 대해서 입력값을 바로 찾아버리는 preimage attack 이다.
즉, 역함수가 존재하지 않더라도 brute force 로라도 입력값을 찾아내버린다면 hash 알고리즘의 의미가 없어져버리기 때문이다.
하지만, 현재까지 md5 나 SHA 에 있어서 preimage attack 이 행해졌다는 얘기는 없다.
다만, collision attack 이 본격적으로 구현되어지고 있는 등 md5 의 취약함에 대한 우려때문에 Microsoft 사에서는 md5 함수를 내부적으로 더이상 사용하지 않도록 방침이 정해지는 등, proactive 한 움직임이 나타나고 있다고 볼 수 있는 것이다.
결론을 이야기해보자.
입력값을 제공하는 사람은 손쉽게 hash 값이 같은 collision 을 만들어낼 수 있다. 즉, 원본 제공자는 원본의 내용을 바꿔가며 md5 값이 같은 collision set 를 만드는게 가능하다는 얘기다.
중요한건 collision set 가 찾아지도록 공격자가 원본까지도 함께 바꿔가야한다.
(원본을 바꾸지않고, md5 값이 같은 가짜 사본을 만드는게 바로 preimage attack 이니까.)
md5 에만 의존한 파일무결성 보증은 이제 완벽한 것이라 볼 수 없다. 왜냐하면, 원본 및 md5 값을 제공하는 제공자 측에서 이미 collision set 를 만들어놓고 원본을 제공하는 malicious incident 가 충분히 생길 수 있기 때문이다.
입력값을 제공하는 사람은 손쉽게 hash 값이 같은 collision 을 만들어낼 수 있다. 즉, 원본 제공자는 원본의 내용을 바꿔가며 md5 값이 같은 collision set 를 만드는게 가능하다는 얘기다.
중요한건 collision set 가 찾아지도록 공격자가 원본까지도 함께 바꿔가야한다.
(원본을 바꾸지않고, md5 값이 같은 가짜 사본을 만드는게 바로 preimage attack 이니까.)
md5 에만 의존한 파일무결성 보증은 이제 완벽한 것이라 볼 수 없다. 왜냐하면, 원본 및 md5 값을 제공하는 제공자 측에서 이미 collision set 를 만들어놓고 원본을 제공하는 malicious incident 가 충분히 생길 수 있기 때문이다.
반응형
    
    
    
  '낙서장' 카테고리의 다른 글
| 마약밀수로 사형 심판을 기다리는 발리 나인 (4) | 2005.10.11 | 
|---|---|
| 월레스와 그로밋 주연모델들 화재로 대파 (7) | 2005.10.11 | 
| 개구쟁이 아놀드를 기억하나요? (1) | 2005.10.05 | 
| 자판기 천국 일본, 온갖 황당한 자판기들을 구경하시라~ (2) | 2005.09.26 | 
| 100기가 하드가 꼴랑 2만원? (0) | 2005.09.26 | 
| 카트리나에 버금가는 허리케인 리타 (4) | 2005.09.22 | 
| 새로워진 The Apprentice (3) | 2005.09.19 | 
| 호랑이 담배피던 시절의 구글 (0) | 2005.09.13 | 
| Microsoft Windows Update 정품인증 건너뛰기 (4) | 2005.09.13 | 
| 죽음의 도시, New Orleans (0) | 2005.09.05 | 
