668. MD5 (Message Digest 5) - 취약성과 충돌 노출

핵심 인사이트: 2000년대 초반 전 세계를 호령하던 해시의 제왕 MD5. 그러나 보안 학자들이 "서로 완전히 내용이 다른 악성코드 파일과 정상 파일인데, MD5 믹서기에 갈았더니 똑같은 해시 찌꺼기가 튀어나오는 마법(충돌 현상)"을 노트북 몇 대만으로 증명해 버렸다. 지문(해시)이 똑같은 두 사람이 존재한다는 사실이 밝혀진 순간, MD5는 암호학계에서 사형 선고를 받았다.

Ⅰ. MD5의 개념과 역사

  • 1991년 MIT의 암호학자 로널드 리베스트(RSA의 그 'R')가 만든 일방향 해시 함수 알고리즘입니다.
  • 입력된 데이터를 마구 섞어서 128비트(32자리의 16진수) 길이의 짧은 해시값을 만들어냅니다. 계산 속도가 빠르고 윈도우, 리눅스, 압축 파일 등 전 세계 IT 인프라의 무결성 검증(이 파일이 안 깨지고 잘 받아졌나?) 용도로 가장 널리 쓰였던 전설적인 표준이었습니다.

Ⅱ. MD5의 구조적 약점 (128비트의 한계)

  • 해시값이 128비트에 불과하다는 것은, 만들 수 있는 지문(해시)의 경우의 수가 $2^{128}$개라는 뜻입니다.
  • 얼핏 들으면 무한해 보이지만, 컴퓨터 CPU의 성능이 기하급수적으로 발전하면서(무어의 법칙) 이 정도의 경우의 수는 며칠 만에 다 뚫어볼 수 있는 수준이 되어버렸습니다.

Ⅲ. 치명적인 멸망 사유: 충돌(Collision) 취약성 발견 🌟

해시 함수가 절대 지켜야 할 철칙 중 '충돌 저항성'(내용이 다른 두 파일이 똑같은 해시값을 가지면 안 된다)이 완전히 박살 났습니다.

  • 충돌 공격(Collision Attack) 성공: 2004년 중국의 암호학자 왕샤오윈이 획기적인 충돌 탐색 수학 공식을 발표했고, 이후 해커들은 일반 노트북이나 스마트폰 연산력만으로도 단 몇 초 만에 MD5의 충돌을 인위적으로 만들어낼 수 있게 되었습니다.
  • 해킹 시나리오의 공포: 해커가 정상_업데이트.exe라는 파일의 MD5 해시값을 미리 구합니다. 그리고 내용물을 완전히 바이러스로 바꾼 해킹_바이러스.exe를 만들면서 끄트머리 쓰레기 코드를 살짝 조작하여, 해시값을 정상 파일과 똑같은 값으로 인위적으로 꿰맞춰(충돌) 버립니다.
  • 사용자는 바이러스를 다운받고도 "오! 공식 홈페이지 해시값과 똑같네! 안전한 파일이야!"라고 믿고 클릭하는 대참사가 터집니다. (무결성 보증 능력 상실)

Ⅳ. 현대 보안의 조치 (사용 전면 금지)

  • 이 끔찍한 취약점 때문에 현재 국제 표준화 기구와 보안 규정에서는 패스워드 암호화, 인증서 서명, 중요 파일 무결성 검증 등 어떠한 보안 목적으로도 MD5를 절대 사용하지 말 것을 법으로 강제하고 있습니다.
  • 이와 비슷하게 160비트를 썼던 구형 SHA-1 알고리즘 역시 구글이 충돌을 100% 증명해 내면서 나란히 무덤으로 들어갔습니다.
  • 현재 MD5는 보안과 무관한, 단순히 "USB로 옮긴 동영상 파일이 1바이트라도 깨졌는지" 정도를 대충 확인하는 단순 체크섬(Checksum) 용도로만 명맥을 유지하고 있습니다.

📢 섹션 요약 비유: MD5는 90년대 경찰청이 채택했던 '지문 감식 시스템'입니다. 초기에는 완벽해 보였지만, 지문 굴곡을 분석하는 해상도(128비트)가 너무 낮았습니다. 세월이 흘러 돋보기가 발전하자, 선량한 시민 A와 연쇄살인마 B의 손가락 지문이 잉크 번짐 때문에 이 구형 스캐너에서는 완벽하게 '똑같은 지문(충돌)'으로 인식된다는 치명적 오류가 증명되었습니다. 경찰은 살인마가 선량한 시민 행세를 하는 것을 막기 위해, 이 구형 MD5 스캐너를 전량 폐기하고 훨씬 초고해상도의 스캐너(SHA-256)로 전면 교체하게 됩니다.