유틸리티

해시값이란? MD5, SHA-256 생성과 파일 무결성 검증 방법

프로그램 설치 파일을 다운로드했는데 배포 페이지에 'SHA-256: 3a7b9c...'라는 문자열이 적혀 있었다. 이게 뭔가 싶어서 넘어갔지만, 이 문자열이 파일이 변조되지 않았는지 확인하는 열쇠다.

해시값이란

해시는 어떤 데이터를 고정된 길이의 문자열로 바꾸는 함수다. 같은 입력에는 항상 같은 결과가 나오고, 입력이 1비트만 달라져도 결과가 완전히 달라진다. 이 성질 때문에 파일이 원본 그대로인지 확인하는 용도로 쓴다.

알고리즘별 차이

알고리즘출력 길이보안 강도용도
MD5128비트 (32자)취약단순 체크섬, 캐시 키
SHA-1160비트 (40자)취약레거시 시스템 호환
SHA-256256비트 (64자)강함파일 검증, 인증서, 블록체인
SHA-512512비트 (128자)강함대용량 파일, 높은 보안 요구
주의 MD5와 SHA-1은 충돌 공격(서로 다른 입력이 같은 해시를 만드는 것)이 가능하다고 알려져 있다. 보안이 중요한 상황에서는 SHA-256 이상을 쓰는 게 안전하다.

파일 무결성 검증은 왜 필요한가

소프트웨어를 배포하는 사이트에서 해시값을 함께 공개하는 이유가 있다. 다운로드 도중 파일이 깨지거나, 제3자가 악성 코드를 심은 파일로 바꿔치기하는 경우가 실제로 발생한다. 다운로드한 파일의 해시를 생성해서 배포 사이트의 해시와 대조하면, 파일이 원본과 동일한지 확인할 수 있다.

해시 생성 및 비교 방법

  1. 텍스트라면 입력창에 붙여넣고, 파일이라면 드래그 앤 드롭으로 올린다
  2. MD5, SHA-256 등 필요한 알고리즘의 결과를 확인한다
  3. 배포 사이트에 적힌 해시와 내 파일의 해시를 비교한다

해시 생성기를 쓰면 텍스트와 파일 모두 5가지 알고리즘 해시를 동시에 뽑을 수 있다. 두 해시값을 넣고 일치 여부를 바로 확인하는 비교 기능도 있어서, 눈으로 64자짜리 문자열을 대조할 필요가 없다.

설치 파일 하나 받을 때마다 해시를 확인하는 건 번거로워 보이지만, 한 번의 검증이 악성 코드 감염을 막을 수 있다.