오픈소스 프로그램을 다운로드하면 옆에 SHA-256 해시값이 적혀 있는 경우가 있다. 이건 파일이 전송 중에 변조되지 않았는지 확인하라는 뜻이다. 해시값이 하나라도 다르면 원본과 다른 파일이라는 의미다.
해시란 무엇인가
해시는 입력 데이터를 고정 길이의 문자열로 변환하는 함수다. 같은 입력에는 항상 같은 해시값이 나오고, 입력이 한 글자만 달라져도 결과가 완전히 바뀐다. 원본 데이터를 해시값에서 역으로 복원하는 건 불가능하다.
주요 알고리즘 비교
| 알고리즘 | 출력 길이 | 보안 강도 | 용도 |
|---|---|---|---|
| MD5 | 128비트 (32자) | 취약 | 단순 체크섬 (보안 외 용도) |
| SHA-1 | 160비트 (40자) | 취약 | 레거시 시스템 호환 |
| SHA-256 | 256비트 (64자) | 높음 | 파일 무결성, 인증서, 블록체인 |
| SHA-512 | 512비트 (128자) | 매우 높음 | 대용량 데이터, 높은 보안 요구 |
주의 MD5와 SHA-1은 충돌 취약점이 발견돼 보안 용도로는 부적합하다. 파일 무결성 검증에는 SHA-256 이상을 쓰는 게 안전하다.
해시값 생성하고 비교하는 법
텍스트의 해시값이 필요하면 문자열을 입력하면 되고, 파일의 해시값이 필요하면 파일을 드래그 앤 드롭하면 된다. 해시 생성기는 MD5, SHA-1, SHA-256, SHA-384, SHA-512를 한 번에 생성해준다. 두 해시값을 비교하는 기능도 있어서 다운로드한 파일이 원본과 같은지 바로 확인할 수 있다. 모든 처리가 브라우저에서 이루어지니 파일이 서버로 전송되지 않는다.
해시값 확인은 소프트웨어 다운로드뿐 아니라 백업 파일 검증, 데이터 전송 무결성 확인에도 쓸 수 있다. 한 번 익혀두면 보안 습관이 된다.