체크섬(checksum)은 해시 함수를 이용해 소프트웨어로부터 생성된 고유한 문자열입니다. 서로 다른 파일은 동일한 체크섬을 가질 수 없습니다. 인터넷에서 소프트웨어를 내려받을 때 무결성을 확인하는 가장 확실한 방법 중 하나가 바로 다운로드한 파일의 체크섬을 공식 웹사이트에 게시된 값과 비교하는 것입니다. 두 값이 일치한다면 해당 파일이 변조되지 않은 정품임을 의미합니다. 이 글에서는 리눅스에서 체크섬을 확인하고 검증하는 방법을 알아보겠습니다.
터미널에서도 간단히 처리할 수 있지만, 여기서는 초간단 그래픽 도구인 GtkHash를 사용해 체크섬을 확인하고 검증하는 방법을 소개하겠습니다.
GtkHash 설치
대부분의 리눅스 배포판에서는 패키지 관리자나 소프트웨어 센터에서 GtkHash를 찾을 수 있습니다. 우분투(Ubuntu) 또는 호환 배포판에서 터미널로 설치하려면 다음 명령어를 입력하세요.
sudo apt install gtkhash

openSUSE의 경우 설치 전에 먼저 저장소(repository)를 추가해야 합니다. 자세한 내용은 openSUSE 공식 문서를 참고하세요.
아치(Arch)와 만자로(Manjaro)에서는 다음과 같이 설치할 수 있습니다.
sudo pacman -S gtkhash

설치가 완료되면 설치된 애플리케이션 목록에서 GtkHash를 찾아 실행하세요.
해시 생성하기
GtkHash의 인터페이스는 매우 직관적입니다. 하나 이상의 파일에 대한 해시를 계산하려면 왼쪽 상단의 "추가(Add)" 버튼을 클릭하세요.

파일 선택 창에서 파일 위치로 이동해 파일을 선택합니다. Ctrl 키를 누른 채 클릭하면 여러 파일을 한 번에 선택할 수 있습니다. 그런 다음 오른쪽 상단의 "열기(Open)" 버튼을 클릭하면 됩니다.

선택한 파일들이 GtkHash 목록에 추가됩니다. 필요하다면 같은 방법을 반복해 파일을 더 추가할 수도 있습니다.

창 오른쪽 하단의 "해시(Hash)" 버튼을 클릭하면 목록에 있는 모든 파일의 해시가 계산됩니다.
GtkHash는 기본적으로 여러 해시 유형을 동시에 계산하며, 각 파일 옆의 열에 결과를 표시합니다.

파일의 해시를 클립보드로 복사하려면 파일을 마우스 오른쪽 버튼으로 클릭한 뒤 "Copy Digest(다이제스트 복사)" 하위 메뉴에서 원하는 해시 유형을 선택하세요. 복사한 해시는 나중에 참고할 수 있도록 다른 곳에 붙여넣어 보관하면 됩니다.

또는 "File → Save As(다른 이름으로 저장)" 메뉴를 통해 해시를 파일로 저장할 수도 있습니다.

해시 검증하기
GtkHash로 파일의 데이터 무결성을 확인하려면 "File → Open" 메뉴를 선택하고 기본 파일과 함께 제공된 해시 파일을 불러오세요. 해시 파일의 확장자는 보통 "sha1", "md5", "sfv" 등이며, GtkHash는 널리 쓰이는 모든 형식을 지원합니다.

파일이 로드되면 오른쪽 하단의 "해시(Hash)" 버튼을 클릭하세요. GtkHash가 파일의 해시를 계산해 제공된 값과 비교한 뒤 결과를 보여줍니다. 스크린샷에서 볼 수 있듯이 두 개는 일치했고 두 개는 불일치했습니다.

더 많은 해시 알고리즘 활용하기
GtkHash에는 가장 널리 쓰이는 해싱 알고리즘이 기본으로 활성화되어 있지만, 지원하는 알고리즘이 이것뿐이지는 않습니다. 더 많은 알고리즘을 사용하려면 "Edit → Preferences(환경설정)" 메뉴로 이동하세요.

24개가 넘는 다양한 해시 함수 중에서 자신에게 맞는 것을 선택할 수 있습니다.

터미널에서 체크섬 비교하기
서버 환경이라면 터미널 외에 체크섬을 비교할 방법이 없습니다. 다행히도 터미널에서 파일 해시를 생성하고 확인하는 작업은 GUI를 사용하는 것만큼 쉽습니다. 대부분의 배포판에는 이러한 작업을 위한 도구가 기본으로 포함되어 있으며, 가장 많이 쓰이는 도구는 다음과 같습니다.
- md5sum
- shasum
- sha256sum
- sha384sum
- sha512sum
사용법은 매우 간단합니다. 모든 도구가 정확히 같은 방식으로 작동하기 때문에 명령어 이름 뒤에 해시를 계산할 파일명을 입력하기만 하면 됩니다. 예를 들어 내려받은 아치 리눅스 설치 ISO의 SHA-512 해시를 계산하려면 다음과 같이 입력합니다.
sha512sum archlinux-2020.05.01-x86_64.iso

위 명령에서 sha512sum은 사용하기로 선택한 해시 알고리즘의 명령어입니다. 잠시 기다리면 화면에 SHA-512 해시가 출력됩니다.
나중에 파일을 다시 검사할 가능성이 있다면 결과를 화면이 아니라 파일로 저장하는 것이 좋습니다. 해시 명령 자체에는 이런 기능이 없지만, 리눅스에서는 리디렉션만으로 손쉽게 처리할 수 있습니다. 명령어 뒤에 > 기호와 파일명을 붙이면 명령 출력이 화면에 표시되지 않고 파일에 저장됩니다. sha256sum을 사용할 수도 있습니다.
sha256sum archlinux-2020.05.01-x86_64.iso > archlinux-2020.05.01-x86_64.iso.sha256

이렇게 하면 결과가 일반적인 텍스트 파일로 저장됩니다. 파일 안에는 파일의 해시값과 그 뒤에 파일명이 함께 기록되어 있습니다.

저장된 해시 파일로 파일 무결성을 검사하려면 명령어에 -c 옵션을 추가하고 실제 파일 대신 해시 파일을 지정하면 됩니다. 즉, 다음과 같습니다.
sha256sum -c archlinux-2020.05.01-x86_64.iso.sha256

리눅스에서 체크섬을 검증하는 일은 쉽지만, 모든 파일의 해시를 일일이 확인하는 것은 현실적이지 않습니다. 민감한 데이터나 웹에서 내려받은 리눅스 ISO처럼 중요한 파일에 대해서만 확인하는 것이 좋습니다. 참고로 맥(Mac)을 사용한다면 동일한 방법을 적용할 수 있습니다.