유틸리티

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

오픈소스 프로그램을 다운로드할 때 배포 페이지에 SHA-256 값이 적혀 있는 걸 본 적이 있을 것이다. 이건 파일의 "지문"이다. 다운로드한 파일이 배포자가 올린 원본과 정확히 같은 파일인지 확인하는 용도다. 중간에 누군가 파일을 바꿔치기했다면 해시값이 달라진다.

해시값이란

해시(Hash)는 임의의 데이터를 고정된 길이의 문자열로 변환하는 함수다. 같은 입력에는 항상 같은 출력이 나오고, 입력이 1비트만 바뀌어도 출력이 완전히 달라진다.

예시
"hello"의 MD5: 5d41402abc4b2a76b9719d911017c592
"hello."의 MD5: ad15041a8e1e3456fa2d5c891eb407ba
마침표 하나 추가했을 뿐인데 값이 완전히 다르다.

이 특성 덕분에 파일이 한 글자라도 변조됐는지를 해시값 비교만으로 알 수 있다.

MD5, SHA-256, SHA-512 차이

알고리즘출력 길이보안 수준주요 용도
MD5128비트(32자)취약(충돌 발견됨)파일 무결성 간이 확인
SHA-1160비트(40자)취약(충돌 발견됨)Git 커밋 해시(레거시)
SHA-256256비트(64자)안전SSL 인증서, 비트코인
SHA-384384비트(96자)안전금융 시스템
SHA-512512비트(128자)안전민감 데이터 보호

MD5와 SHA-1은 충돌(서로 다른 입력이 같은 해시를 만드는 현상)이 발견돼서 보안 용도로는 더 이상 권장되지 않는다. 파일 무결성 확인 정도는 가능하지만, 비밀번호 저장이나 전자서명에는 SHA-256 이상을 써야 한다.

텍스트와 파일의 해시값 생성하기

브라우저에서 해시 생성기를 열면 텍스트 모드와 파일 모드 두 가지 탭이 있다.

텍스트 해시

입력창에 문자열을 넣으면 MD5, SHA-1, SHA-256, SHA-384, SHA-512 다섯 가지 해시가 동시에 생성된다. 각 값 옆의 복사 버튼으로 바로 가져올 수 있다.

파일 해시

파일을 드래그해서 놓으면 브라우저 안에서 해시를 계산한다. 서버로 파일이 전송되지 않기 때문에, 사내 문서나 개인 파일도 안심하고 확인할 수 있다.

해시 비교로 파일 검증하기

  1. 배포 사이트에 적혀 있는 해시값을 복사한다
  2. 다운로드한 파일의 해시값을 생성한다
  3. 두 값을 비교 기능에 붙여넣는다
  4. 일치하면 원본과 동일한 파일이다

해시가 다르다면 파일이 손상됐거나 변조된 것이니 다시 다운로드하는 게 안전하다.

해시값 비교는 30초면 끝나는 작업이지만, 악성코드가 심어진 파일을 걸러내는 가장 확실한 방법 중 하나다.