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 발전
- 분산 연산
때문에 계속 약해질 수 있다.
그래서 현대 보안 시스템은:
알고리즘 교체 가능성까지 고려해서 설계
하는 것이 매우 중요하다.
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| Argon2 vs bcrypt (0) | 2026.05.13 |
|---|---|
| SHA-256은 어떻게 동작하는가 (0) | 2026.05.13 |
| 해시는 왜 복호화가 안될까 (0) | 2026.05.13 |
| 현대 인터넷은 어떻게 신뢰를 만드는가 (0) | 2026.05.13 |
| 신뢰 문제와 암호화 (0) | 2026.05.13 |
댓글