유틸리티 소개

다운로드 받은 파일이 원본과 같은지 해시값으로 확인하는 방법

프로그램을 다운로드할 때 공식 사이트에서 MD5나 SHA256 해시값을 제공하는 경우가 있다. 이게 뭔지, 왜 확인해야 하는지 궁금했다. 알고 보니 파일이 위변조되지 않았는지 확인하는 용도였다.

해시값이란

해시 함수는 파일 내용을 고정된 길이의 문자열로 변환한다. 같은 파일은 항상 같은 해시값을 갖고, 파일이 1바이트라도 바뀌면 해시값이 완전히 달라진다. 그래서 원본 해시값과 내가 받은 파일의 해시값을 비교하면 파일이 변조되었는지 알 수 있다.

해커가 중간에서 파일을 바꿔치기했거나, 다운로드 중에 파일이 손상됐으면 해시값이 달라진다. 공식 해시값과 일치하면 안심해도 된다.

해시 생성 방법

해시 생성기에 파일을 업로드하거나 텍스트를 입력하면 MD5, SHA1, SHA256 등 여러 알고리즘의 해시값이 생성된다. 대부분의 소프트웨어 배포 사이트에서는 SHA256을 사용한다.

해시 알고리즘 종류

  • MD5: 32자리, 빠르지만 보안 용도로는 취약
  • SHA1: 40자리, MD5보다 안전하지만 역시 취약점 존재
  • SHA256: 64자리, 현재 가장 많이 사용되는 안전한 알고리즘
  • SHA512: 128자리, 더 긴 해시값으로 더 안전

파일 무결성 검증 절차

1. 공식 사이트에서 프로그램과 함께 제공되는 해시값을 메모한다. 2. 파일을 다운로드한 후 해시 생성기로 해시값을 계산한다. 3. 두 값이 일치하면 안전한 파일이다.

특히 보안 프로그램이나 암호화폐 지갑처럼 민감한 소프트웨어는 반드시 해시 검증을 해야 한다. 공식 사이트가 아닌 곳에서 받은 파일은 악성코드가 심어져 있을 수 있으니까.

비밀번호 저장에도 활용

웹사이트에서 비밀번호를 저장할 때도 해시를 사용한다. 원본 비밀번호 대신 해시값만 저장해두면, 데이터베이스가 유출되어도 원본 비밀번호는 알 수 없다. 물론 솔트(salt)를 추가해서 더 안전하게 저장한다.