유틸리티

해시값이란, MD5 SHA-256 차이와 파일 무결성 확인법

오픈소스 프로그램을 다운로드하는데, 파일 옆에 SHA-256: a3f2e8... 같은 문자열이 적혀 있었다. 처음엔 무시했지만, 알고 보니 파일이 중간에 변조되지 않았는지 확인하는 장치였다. 이걸 해시값, 또는 체크섬이라고 부른다.

해시값이란

해시값은 어떤 데이터를 고정된 길이의 문자열로 변환한 결과다. 원본이 조금이라도 바뀌면 해시값이 완전히 달라진다. 같은 파일이면 항상 같은 해시값이 나오고, 1바이트만 바뀌어도 결과가 완전히 달라지기 때문에 파일 변조 여부를 확인하는 데 쓰인다.

해시는 단방향이다. 해시값에서 원본 데이터를 역추적하는 건 사실상 불가능하다. 그래서 비밀번호 저장에도 해시가 쓰인다.

MD5와 SHA-256, 뭘 써야 하나

알고리즘출력 길이보안 수준용도
MD5128비트 (32자)취약단순 파일 식별, 캐시 키
SHA-1160비트 (40자)취약레거시 시스템 호환
SHA-256256비트 (64자)안전파일 검증, 보안 용도 표준
SHA-512512비트 (128자)안전높은 보안 요구 시
주의 MD5는 충돌 취약점이 알려져 있다. 서로 다른 파일이 같은 MD5 해시값을 가질 수 있다는 뜻이다. 보안이 중요한 곳에서는 반드시 SHA-256 이상을 써야 한다.

파일 무결성 확인하는 법

다운로드한 파일이 원본과 같은지 확인하는 과정은 간단하다.

  1. 배포 사이트에 적힌 해시값(보통 SHA-256)을 복사한다
  2. 다운로드한 파일의 해시값을 생성한다
  3. 두 값이 완전히 일치하면 파일이 변조되지 않은 것이다

명령어로 확인할 수도 있지만, 파일을 드래그하면 MD5부터 SHA-512까지 한 번에 나오는 해시 생성기가 더 빠르다. 두 해시값을 비교하는 기능도 있어서, 긴 문자열을 눈으로 대조할 필요 없이 일치 여부를 자동으로 확인해준다.

해시가 쓰이는 다른 곳

  • 비밀번호 저장: 사이트는 비밀번호 원문이 아니라 해시값을 저장한다. 유출되어도 원문을 알기 어렵다.
  • 블록체인: 거래 기록의 무결성을 해시로 보장한다.
  • 중복 파일 탐지: 파일명이 달라도 해시값이 같으면 동일한 파일이다.

해시는 눈에 보이지 않는 곳에서 데이터의 신뢰를 보장하는 장치다. 파일을 다운로드할 때 체크섬이 보이면, 한 번 확인하는 습관을 들이는 게 좋다.