유틸리티

MD5, SHA-256 해시값이란? 파일 무결성 검증하는 법

오픈소스 소프트웨어를 다운로드하면 옆에 "SHA-256: a3f8c2..."라는 긴 문자열이 적혀 있는 경우가 있다. 이게 해시값이다. 파일이 중간에 변조되지 않았는지 확인하는 디지털 지문 같은 것이다.

해시값이 뭔가

해시(Hash)는 임의 길이의 데이터를 고정 길이의 문자열로 변환한 결과물이다. 입력값이 조금이라도 다르면 출력이 완전히 달라지는 특성이 있다.

예시 "안녕하세요"의 MD5 해시: 8f9b75b4f3a854a51405a1da8f814e29
"안녕하세요."의 MD5 해시: 6f2c04518cc14d0bff8be35ae5ab3c5a
마침표 하나 추가했을 뿐인데 결과가 완전히 다르다.

이런 특성 덕분에 원본 파일이 1비트라도 변경되면 해시값이 달라져서, 변조 여부를 즉시 확인할 수 있다.

주요 해시 알고리즘 비교

알고리즘출력 길이보안 수준주요 용도
MD5128비트 (32자)취약파일 식별, 체크섬 (보안 용도 비권장)
SHA-1160비트 (40자)취약레거시 시스템 호환
SHA-256256비트 (64자)안전파일 무결성, SSL 인증서, 블록체인
SHA-512512비트 (128자)매우 안전대용량 파일 검증, 높은 보안 요구 시
주의 MD5와 SHA-1은 충돌 취약점이 발견되었다. 서로 다른 두 파일이 같은 해시값을 가질 수 있다는 뜻이다. 보안이 중요한 용도에는 SHA-256 이상을 써야 한다.

파일 무결성 검증하는 법

인터넷에서 다운로드한 파일이 원본과 같은지 확인하는 과정이다. 소프트웨어 배포자가 해시값을 공개해두면, 다운로드 후 비교해서 일치 여부를 확인할 수 있다.

방법 1. 명령줄에서 확인

Windows라면 명령 프롬프트에서 아래 명령어를 입력한다.

certutil -hashfile 파일명.zip SHA256

Mac/Linux에서는 이렇게 입력한다.

sha256sum 파일명.zip

출력된 해시값을 배포 사이트에 적힌 값과 비교하면 된다.

방법 2. 온라인 도구에서 확인

명령어가 익숙하지 않다면 해시 생성기에 파일을 드래그앤드롭하면 MD5, SHA-256, SHA-512 해시값이 동시에 생성된다. 해시 비교 기능도 있어서 두 값을 나란히 넣으면 일치 여부를 자동으로 판별해준다. 파일이 서버로 전송되지 않고 브라우저 안에서 처리되기 때문에 민감한 파일도 안심하고 확인할 수 있다.

해시가 쓰이는 곳

비밀번호 저장
서비스가 비밀번호를 원문 그대로 저장하면 DB 유출 시 전부 노출된다. 해시로 변환해서 저장하면 원래 비밀번호를 역추적하기 어렵다.
블록체인
각 블록의 데이터를 SHA-256으로 해시 처리하고, 이전 블록의 해시를 포함시켜서 체인을 구성한다. 중간 블록을 변조하면 이후 모든 해시가 달라지므로 위변조가 사실상 불가능하다.
디지털 서명
문서 원본의 해시를 개인키로 암호화한 것이 디지털 서명이다. 수신자가 공개키로 복호화한 해시와 문서의 해시를 비교해서 위변조 여부를 확인한다.

해시는 "이 파일이 진짜 원본이 맞는가"를 확인하는 가장 간단하고 확실한 방법이다. 소프트웨어를 다운로드할 때, 중요한 파일을 주고받을 때, 한 번만 확인하면 변조 걱정을 덜 수 있다.