먼저 암호화 시킨 스트링 A랑
나중에 입력받아서 md5화 시킨 스트링 B가 같으면 이 두 스트링 A, B은 같은 스트링이라고 인식해서 로그인같은데 쓰는거잖아
근데 이 md5는 아직 역함수가 없는 해쉬함수라서 깨는건 거의 불가능에 가깝다고 하는데 (구걸링 해보니 md5도 깨졌다라는 글을 본거같기도 한데..)
각설하고
A가 뭔지 몰라도 B를 md5시켰을때 그 값이 결국 A의 md5값이랑 같으면 되는거라는 글을 봤는데
strcmp(A,B) != 0 이면서
md5(A) == md5(B)
인 그런 스트링이 존재할수 있어?
ㅇㅇ
http://kldp.org/node/39283
http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
옛날에 잠깐 재밌었던 랜덤값 생성배틀이 MD5를 이용한거였구나 .. c횽 좋은 정보 감사
해시 충돌이라고 합니다. 그리고 해쉬값을 통해 해쉬 되기 전의 값을 찾는게 가능하다는 낚시 사이트가 많은데, 몇몇군데에 들어가 보면 실제로 유효한 값을 내는게 아닌 나쁜 목적으로 사용하기 위한 단지 하나의 큰 데이터 베이스였습니다. 그걸 경고하는 블로그나 카페들도 많고요. 아이디랑 패스워드를 입력하시는 일은 절대 없으셔야겠죠 ㅎㅎ
레인보우 테이블
비둘기집 원리에 따라 충돌할 수 밖에 없음
어떤 강력한 해쉬라도 충돌함. 해쉬 결과는 고정 길이 데이터이고 입력은 길이제한없는 무한(이론적으로) 데이터인데 충돌안한다고 생각하는게 더 이상하지.
역함수가 없음. 아직 없는게 아닌 없을 수밖에 없음. 해쉬 연산코드 한번 보면 왜 없는지 알것임. 조금 간단한것으로 체크섬 알고리즘 보면 그럴수밖에 없다는걸 쉽게 알수있음.
이 해쉬를 깬다는건 어떤 충돌되는 데이터 예시를 찾았거나 이를 무한정 만들수있는 생성규칙을 찾았다는 얘기. 물론 후자가 훨씬 제네릭하고 강력한 크랙이지.