오픈소스 프로그램을 내려받았는데 다운로드 페이지에 SHA-256 체크섬이 적혀 있다. 이 문자열이 뭔지, 왜 확인해야 하는지 모르면 그냥 넘기게 되는데, 실은 파일이 변조되지 않았는지 검증하는 장치다.
해시값이란
해시(Hash)는 어떤 데이터를 고정 길이의 문자열로 바꾸는 함수다. 같은 입력이면 항상 같은 결과가 나오고, 입력이 1비트만 달라도 결과가 완전히 달라진다. 이 특성 때문에 파일 위변조 검출에 쓰인다.
주요 해시 알고리즘 비교
| 알고리즘 | 출력 길이 | 보안 강도 | 용도 |
|---|---|---|---|
| MD5 | 128비트 (32자) | 취약 | 파일 식별, 캐시 키 (보안 비권장) |
| SHA-1 | 160비트 (40자) | 취약 | 레거시 시스템 호환 |
| SHA-256 | 256비트 (64자) | 안전 | 파일 검증, 인증서, 블록체인 |
| SHA-512 | 512비트 (128자) | 안전 | 대용량 파일, 높은 보안 요구 |
주의: MD5와 SHA-1은 충돌 취약점이 발견되어 보안 용도로는 쓰면 안 된다. 단순 파일 식별에는 여전히 쓰이지만, 무결성 검증에는 SHA-256 이상을 권장한다.
파일 무결성 검증하는 법
- 배포 사이트에서 파일과 함께 제공된 해시값(체크섬)을 복사한다.
- 다운로드한 파일의 해시값을 생성한다.
- 두 값이 일치하면 원본과 동일한 파일이다.
Windows에서는 명령 프롬프트에 certutil -hashfile 파일명 SHA256을 입력하면 되고, 브라우저에서 바로 하려면 해시 생성기에 파일을 드래그해서 놓으면 MD5, SHA-256, SHA-512가 동시에 나온다. 서버에 파일을 올리지 않고 브라우저에서 처리되기 때문에 민감한 파일도 안심하고 쓸 수 있다.
해시 검증은 30초면 끝나는 작업이지만, 이 한 번의 확인이 변조된 파일을 실행하는 사고를 막아준다.