목록으로
유틸리티

최신 MD5 알고리즘 현황과 안전한 대체 해시 3가지 비교

최신 MD5 정보를 찾을 때 가장 궁금한 점은 새 버전이 나왔는지 여부일 것입니다. 결론부터 말하면 MD5는 1992년 RFC 1321로 확정된 뒤 알고리즘이 개정된 적이 한 번도 없습니다. 바뀐 것은 알고리즘이 아니라 이를 둘러싼 보안 권고와 실무 사용 기준입니다.

최신 MD5 표준 현황: 알고리즘은 그대로입니다

MD5(Message-Digest Algorithm 5)는 임의 길이의 입력을 128비트, 즉 32자리 16진수 문자열로 압축하는 함수입니다. 로널드 리베스트가 설계했고 RFC 1321이 사실상 유일한 규격 문서입니다. 지금 실행하는 md5sum과 30년 전 md5sum은 같은 파일에 대해 같은 값을 출력합니다.

대신 표준화 기구의 태도는 계속 바뀌어 왔습니다.

  • RFC 6151(2011): MD5의 충돌 저항성이 무너졌음을 공식 문서화하고, 충돌 저항성이 필요한 모든 용도에서 사용 중단을 권고했습니다.
  • NIST: 전자서명 등 보안 용도의 MD5 사용을 금지했으며, MD5는 FIPS 승인 해시 목록에 포함되어 있지 않습니다.
  • 브라우저와 인증기관: MD5로 서명된 인증서는 2010년대 초에 이미 신뢰 목록에서 제외되었습니다.
  • 언어 표준 라이브러리: 하위 호환을 위해 함수 자체는 여전히 제공되지만, 보안 모드에서 호출을 차단하는 런타임이 늘고 있습니다.
참고: MD5의 후속으로 제안된 MD6가 있었지만, SHA-3 공모전 2라운드를 앞두고 설계자가 성능과 보안 증명 문제를 이유로 자진 철회했습니다. 그래서 MD6 정식 표준은 존재하지 않으며, 후계자 자리는 SHA-2와 SHA-3 계열이 가져갔습니다.

MD5가 깨졌다는 말의 정확한 범위

깨졌다는 표현이 곧 해시값에서 원본을 되돌릴 수 있다는 뜻은 아닙니다. 해시 함수의 안전성은 크게 세 가지로 나뉘는데, MD5는 그중 하나만 완전히 무너진 상태입니다.

  1. 충돌 저항성: 같은 해시값을 갖는 서로 다른 두 입력을 찾기 어려워야 합니다. 2004년 왕샤오윈 연구팀의 공격 이후 완전히 무너졌고, 지금은 일반 노트북에서 수 초 만에 충돌 쌍을 만들 수 있습니다.
  2. 제2 역상 저항성: 주어진 특정 파일과 같은 해시를 갖는 다른 파일을 찾는 것으로, 아직 실용적인 공격은 공개되지 않았습니다.
  3. 역상 저항성: 해시값만 보고 원본을 복원하는 것으로, 알려진 최선의 공격도 2의 123제곱 수준이라 현실적으로 불가능합니다.

문제는 실제 사고가 대부분 첫 번째 항목에서 터졌다는 점입니다. 2008년에는 MD5 충돌을 이용해 위조된 중간 인증기관 인증서가 만들어졌고, 2012년 Flame 악성코드는 선택 접두어 충돌 기법으로 마이크로소프트 업데이트 서명을 위조했습니다.

주의: 공격자는 같은 MD5 값을 갖는 정상 파일과 악성 파일을 한 쌍으로 미리 만들어 둘 수 있습니다. 따라서 MD5가 일치하니 안전한 파일이라는 판단은 성립하지 않습니다. 해시 비교로 걸러지는 것은 우연한 손상이지 의도적인 조작이 아닙니다.

지금도 써도 되는 경우와 절대 안 되는 경우

MD5를 무조건 지우는 것이 정답은 아닙니다. 공격자가 개입할 수 없는 자리에서는 짧고 빠른 지문으로서 여전히 쓸모가 있습니다.

써도 무방한 용도

  • 네트워크 전송이나 디스크 오류로 생긴 비악의적 손상 검출
  • 중복 파일이나 중복 이미지 탐지
  • 캐시 키, ETag, 샤딩 버킷 계산처럼 내부에서만 쓰이는 식별자
  • 대용량 데이터를 1차로 그룹핑한 뒤 정밀 비교로 넘기는 전처리 단계

사용을 멈춰야 하는 용도

  • 전자서명, 코드 서명, 인증서, 라이선스 검증
  • 배포 파일의 보안 목적 무결성 검증
  • 비밀번호 저장, 레인보우 테이블과 GPU 대입 공격에 무력합니다
  • 인증 토큰, 세션 식별자, API 요청 서명 생성
MD5는 사고를 잡아내는 도구이지, 공격자를 막는 도구가 아닙니다.

MD5 대체 해시 3가지 비교

현실적인 대체 후보는 SHA-256, SHA3-256, BLAKE3 세 가지입니다. 기준점을 잡기 위해 아래 표에 MD5와 SHA-1을 함께 넣었습니다.

알고리즘출력 길이충돌 안전성상대 속도권장 용도
MD5128비트붕괴빠름비보안 체크섬, 중복 탐지
SHA-1160비트붕괴(2017년 SHAttered)보통레거시 호환 목적만
SHA-256256비트안전보통범용 표준, 서명과 인증서
SHA3-256256비트안전보통길이 확장 공격 내성이 필요한 설계
BLAKE3256비트 이상 가변안전매우 빠름대용량 파일 검증, 병렬 처리

비밀번호는 이 표의 어떤 해시로도 저장하면 안 됩니다. 빠른 해시는 공격자에게도 빠르기 때문에, 의도적으로 느리게 설계된 Argon2id, bcrypt, scrypt 같은 키 유도 함수를 써야 합니다.

팁: 무엇을 골라야 할지 모르겠다면 SHA-256이 기본값입니다. 호환성이 가장 넓고 대부분의 표준과 하드웨어 가속을 지원합니다. 수십 기가바이트 단위 파일을 자주 검증한다면 병렬 처리가 되는 BLAKE3가 체감 속도에서 크게 앞섭니다.

해시값을 직접 확인하는 방법

  1. Windows 명령 프롬프트: certutil -hashfile 파일명 MD5
  2. PowerShell: Get-FileHash 파일명 -Algorithm SHA256
  3. macOS: md5 파일명 또는 shasum -a 256 파일명
  4. Linux: md5sum 파일명, sha256sum 파일명
  5. OpenSSL: openssl dgst -sha256 파일명

출력값을 비교할 때 대소문자는 구분하지 않아도 되지만, 앞뒤 공백이나 줄바꿈이 섞이면 눈으로는 같아 보여도 다르게 판정될 수 있습니다. 파일이 아니라 짧은 문자열의 해시를 즉석에서 확인하거나 여러 알고리즘 결과를 나란히 놓고 비교하고 싶을 때는 해시 생성기를 쓰면 명령어 없이 결과를 바로 볼 수 있습니다.

참고: 배포처가 공개한 해시값이 파일과 같은 서버, 같은 페이지에만 올라와 있으면 검증 효과가 떨어집니다. 서버가 뚫리면 파일과 해시가 함께 바뀌기 때문입니다. 공식 HTTPS 페이지나 GPG 서명이 붙은 목록에서 받은 값과 대조해야 의미가 있습니다.

정리하면 최신 MD5라는 검색어에 해당하는 새 버전은 없고, 최신인 것은 사용 기준 쪽입니다. 보안 목적의 무결성 확인이라면 SHA-256으로 옮기고, MD5는 손상 검출이나 내부 식별자처럼 공격 표면이 없는 자리에만 남겨 두는 방식이 현재의 일반적인 운영 방침입니다.

자동차 수리가 필요하신가요?

대전 사고차 수리 전문 - 남대전자동차공업사

무료 견적받기