본문 바로가기
system_fundamentals/security_cryptography

MD5는 왜 위험해졌는가

by 죄니안죄니 2026. 5. 13.
반응형

MD5는 왜 위험해졌는가

한때 MD5는 인터넷에서 가장 널리 사용되던 해시 알고리즘이었다.

  • 비밀번호 저장
  • 파일 무결성 검증
  • 다운로드 checksum
  • 인증서 서명

등 거의 모든 곳에서 사용됐다.

하지만 현재 MD5는 사실상:

보안 목적으로 사용하면 안 되는 알고리즘
 

으로 취급된다.

왜 MD5는 위험해졌을까?

핵심은:

충돌(Collision)이 현실적으로 가능해졌기 때문
 

이다.


1. MD5란?

MD5(Message Digest Algorithm 5)는 1991년 Ronald Rivest가 만든 해시 알고리즘이다.

출력 길이는:

128bit
 

고정.

예:

MD5("hello")
= 5d41402abc4b2a76b9719d911017c592
 

당시에는:

  • 빠르고
  • 구현이 쉽고
  • 충돌 찾기 어려움

덕분에 엄청 널리 퍼졌다.


2. 좋은 해시 알고리즘 조건

보안 해시는 단순히 “값 계산”만 하면 되는 게 아니다.

아래 성질이 중요하다.


1) 일방향성

해시값만 보고 원문 복원 불가능
 

2) 충돌 저항성(Collision Resistance)

서로 다른 입력이
같은 해시값을 만들기 어려워야 함
 

3) Preimage Resistance

특정 hash에 대응하는 입력 찾기 어려워야 함
 

MD5는 여기서:

충돌 저항성
 

이 무너지기 시작했다.


3. 충돌(Collision)이란?

해시는 입력 길이는 무한대에 가깝지만:

출력은 고정 길이(128bit)다.

즉 이론적으로 반드시:

서로 다른 입력인데
같은 hash
 

가 존재한다.


예:

Hash(A) = Hash(B)
 

인데:

A != B
 

인 상황.

이걸 Collision이라고 부른다.


4. 문제는 "현실적으로 찾을 수 있게 됨"

원래는 충돌이 존재해도:

찾는 게 사실상 불가능
 

해야 안전하다.


하지만 MD5는 연구가 진행되면서:

충돌 생성 알고리즘
 

이 발견됐다.


5. 2004년 — MD5 붕괴 시작

2004년 Wang 등의 연구팀이:

실제 MD5 충돌 생성 성공
 

을 발표했다.

즉:

서로 다른 두 파일인데
MD5 hash 동일
 

한 상태를 만들어냄.

이건 엄청난 사건이었다.


6. 왜 위험한가?

해시는:

무결성 검증
 

에 많이 사용된다.

예:

"파일이 변조되지 않았는가?"
 

를 hash로 판단.


그런데 공격자가:

악성 파일인데
동일한 MD5 hash
 

를 만들 수 있으면?

시스템은:

정상 파일이라고 착각
 

하게 된다.


7. 실제로 인증서 위조까지 발생

2008년에는 연구팀이 MD5 충돌을 이용해:

가짜 SSL 인증서 생성
 

에 성공했다.

즉 브라우저가:

신뢰 가능한 인증서처럼 보이는 위조 인증서
 

를 만들 수 있었던 것.

이 사건 이후 사실상:

MD5는 보안용으로 사망
 

했다고 봐도 된다.


8. 비밀번호 저장용으로도 위험

MD5는 매우 빠르다.

겉보기엔 장점 같지만:

공격자도 엄청 빠르게 brute-force 가능
 

하다는 의미다.


예:

GPU 사용 시:

초당 수십억 개 MD5 계산
 

가능.

즉:

  • rainbow table
  • dictionary attack
  • brute-force

에 매우 취약하다.


9. 그래서 bcrypt/Argon2 등장

현대 패스워드 저장은:

  • bcrypt
  • scrypt
  • Argon2

같이:

일부러 느리게 만든 해시
 

를 사용한다.


왜냐면 비밀번호 해시는:

빠르면 공격자도 빠르기 때문
 

이다.


10. MD5가 아직 남아있는 곳도 있음

완전히 사라진 건 아니다.

예:

  • 단순 checksum
  • 중복 파일 탐지
  • 캐시 키
  • fingerprint

처럼:

보안 목적이 아닌 경우
 

에는 아직 사용되기도 한다.


예:

"파일이 우연히 깨졌는가?"
 

정도 확인.


하지만:

  • 인증
  • 서명
  • 비밀번호
  • 보안 검증

에는 절대 권장되지 않는다.


11. SHA 계열은 왜 아직 안전한가?

현재는 주로:

  • SHA-256
  • SHA-384
  • SHA-3

등 사용.

이들은 현재까지:

실용적 충돌 공격
 

이 발견되지 않았다.


12. 결국 MD5가 위험해진 이유

핵심은:

"같은 hash를 가지는
서로 다른 입력을 현실적으로 만들 수 있게 되었기 때문"
 

이다.

즉 MD5는 더 이상:

데이터 무결성을 신뢰할 수 없는 상태
 

가 된 것이다.


13. MD5 붕괴가 남긴 가장 중요한 교훈

보안 알고리즘은:

"현재 안전하다"
 

"영원히 안전하다"
 

가 다르다.

암호학은 시간이 지나며:

  • 수학 연구
  • 연산 성능 증가
  • GPU 발전
  • 분산 연산

때문에 계속 약해질 수 있다.

그래서 현대 보안 시스템은:

알고리즘 교체 가능성까지 고려해서 설계
 

하는 것이 매우 중요하다.

반응형

댓글