해쉬 알고리즘 MD5
해쉬 알고리즘 MD5
현재는 사용하지 말도록 권유 받고 있는 알고리즘인데 예전에 2005년쯤 어떤 알고리즘을 사용할까 고민할 때 정리했었던 내용입니다.
MD5(Message Digest 5 ) 는 전자서명등의 보안과 관련된 곳에서 자주 사용하는 해쉬 알고리즘입니다.
128 비트 보안 체계이며, 32자리의 결과값을 출력하게 됩니다.
비슷한 것으로 SHA-1 이 있는데, 160 비트 보안을 사용하며 40자리의 결과값을 가지는데 현재 각종 보안관련된 곳에서 많이 사용되고 있습니다.
MD5 는 위험성이 발견되어 중요한 곳에서는 잘 사용하지 않고 있습니다.
둘다 해쉬 함수 이기 때문에 다음의 특징을 가집니다.
1. 단방향성
2. 충돌 회피성
예를 들어 설명하자면 문자 a 를 MD5 로 변환을 한 값 MD5("a") 은 0cc175b9c0f1b6a831c399e269772661 입니다.
여기서 0cc175b9c0f1b6a831c399e269772661 와 같은 결과값에서 원래 문자열 a 를 찾아낼 수가 없어야 한다는 것이 단방향성입니다.
그리고, 동일한 결과값 0cc175b9c0f1b6a831c399e269772661 을 가지는 특정한 문자열을 찾아내는 것이 불가능해야 한다는 것이 충돌 회피성입니다.
y = f(x) 라는 함수가 존재할때 y 값만을 가지고 x 를 찾아낼 수가 없어야 하고 동일한 y 값을 가지는 x 와 x' 를 계산해내는 것이 불가능해야 한다는 것이지요.
실제 업무에서는 아이디, 비밀번호, 각종 쿠키값등에서 MD5 등을 이용하면 악의적인 목적의 사용자가 임의로 값을 변경하거나 유추해내는 것이 사실상 불가능하다고 볼 수 있습니다.
하지만, 엄청난 전문가가 뚫을려고 맘 먹으면 못할리가 없을 것입니다.
그렇지만 그런 전문가가 뚫을려고 한다면 그 사이트는 돈 많이 버는 대박사이트라는 증거일테니 돈 많이 벌어서 좋겠네요.
사실 예전부터 MD5 는 위험성이 제기되어서 중요한 로직에서는 제외하고 있었다는데 올해초 중국의 한 전문가가 MD5 를 뚫었고, 국제학술회의에서 발표를 했습니다.
그리고 얼마뒤 SHA-1 까지도 뚫어버렸습니다. -_- 중국 사람들 대단합니다.