
암호학
MD5MD5
MD5(Message Digest Algorithm 5)는 1991년 Ron Rivest가 설계한 암호화 해시 함수다. 임의 길이의 입력 데이터를 128비트(32자리 16진수) 고정 길이 해시값으로 변환한다. MD4의 후속 버전으로 개발됐으나, 현재는 보안 용도에 부적합하다.
기본 특성
| 항목 | 내용 |
|---|---|
| 설계자 | Ron Rivest (MIT) |
| 발표 연도 | 1991년 (RFC 1321) |
| 출력 길이 | 128비트 (16바이트, 32자리 16진수) |
| 블록 크기 | 512비트 |
| 라운드 수 | 4라운드 × 16단계 = 64단계 |
| 보안 상태 | 취약 (충돌 공격 가능) |
동작 원리
MD5는 Merkle-Damgard 구조를 기반으로 한다.
- 1.패딩 — 메시지를 512비트 배수로 맞추기 위해 비트 추가
- 2.길이 추가 — 원본 메시지 길이를 64비트로 추가
- 3.초기화 — 4개의 32비트 상태 변수(A, B, C, D) 초기화
- 4.압축 함수 — 4라운드 × 16단계로 블록 처리
- 5.최종 출력 — 4개 상태 변수를 연결해 128비트 해시 생성
보안 취약점
| 취약점 | 발견 연도 | 내용 |
|---|---|---|
| 충돌 공격 | 2004년 | Wang et al. - 동일 해시를 가진 두 입력 수 초 내 생성 |
| Chosen-prefix 충돌 | 2007년 | 임의 접두사에 대한 충돌 쌍 생성 가능 |
| Flame 악성코드 | 2012년 | MD5 충돌을 이용한 가짜 인증서 생성 실제 악용 |
MD5는 비밀번호 저장, 디지털 서명, SSL 인증서 등 보안 목적으로 사용 금지. NIST는 2010년 이후 사용 중단 권고.
현재 사용 용도
- •파일 무결성 체크 — 다운로드 파일 손상 여부 빠른 검사 (보안 위협 없는 환경)
- •데이터 중복 제거 — 동일 파일 탐지용 체크섬
- •레거시 시스템 — 기존 시스템과의 호환성 유지
- •비암호학적 해싱 — 해시 테이블 키 생성, 캐시 키
MD 계열 비교
| 알고리즘 | 출력 | 보안 상태 |
|---|---|---|
| MD2 | 128비트 | 폐기 |
| MD4 | 128비트 | 폐기 |
| MD5 | 128비트 | 취약 (충돌) |
| SHA-256 | 256비트 | 안전 |
| SHA-3 | 256비트~ | 안전 |
관련 개념
- •SHA-256 — MD5를 대체하는 안전한 해시 함수
- •SHA-3 — NIST 최신 표준 해시
- •Keccak-256 — 이더리움 해시 함수
- •해시 (Hash) — 해시 함수 개요