유틸리티

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

오픈소스 프로그램을 다운로드했는데 배포 페이지에 'SHA-256: a3f2b1c...'라는 문자열이 적혀 있다. 이게 뭘 의미하는지 모르면 그냥 지나치기 쉬운데, 사실 내가 받은 파일이 원본과 동일한지 확인하라는 뜻이다.

해시값이란

해시(Hash)는 어떤 데이터를 고정 길이의 문자열로 변환한 것이다. 같은 입력은 항상 같은 해시값을 만들고, 입력이 1비트만 달라져도 완전히 다른 결과가 나온다. 이 특성 때문에 파일이 변조됐는지 판별하는 데 쓰인다.

핵심 해시값은 '디지털 지문'이라고 보면 된다. 원본 파일의 지문과 내가 받은 파일의 지문이 같으면 동일한 파일이다.

MD5, SHA-1, SHA-256 차이

알고리즘출력 길이보안 수준용도
MD5128비트 (32자)취약단순 무결성 확인, 레거시 시스템
SHA-1160비트 (40자)취약Git 커밋 해시 (점차 교체 중)
SHA-256256비트 (64자)안전파일 검증, SSL 인증서, 블록체인
SHA-512512비트 (128자)안전고보안 환경, 대용량 파일 검증

MD5와 SHA-1은 충돌(서로 다른 입력에서 같은 해시가 나오는 현상)이 발견돼서 보안 용도로는 쓰지 않는다. 파일 무결성 확인용이라면 SHA-256 이상을 쓰는 게 맞다.

파일 해시값 확인하는 법

  1. 배포 사이트에서 제공하는 해시값(보통 SHA-256)을 복사해둔다
  2. 다운로드한 파일의 해시값을 생성한다
  3. 두 값이 일치하는지 비교한다

Windows 명령 프롬프트에서 certutil -hashfile 파일명 SHA256을 입력하면 확인할 수 있지만, 명령어가 익숙하지 않다면 해시 생성기에 파일을 끌어다 놓는 게 빠르다. MD5부터 SHA-512까지 동시에 나오고, 해시 비교 기능으로 두 값을 붙여넣으면 일치 여부도 바로 확인된다.

설치 파일이나 펌웨어처럼 변조되면 보안 사고로 이어질 수 있는 파일은 해시값 확인을 습관으로 들이는 게 좋다. 1분이면 끝나는 작업이 위험을 예방한다.