본문 바로가기
코딩강좌/코딩상식

체크섬(checksum)을 알아야 해킹 피해를 막을 수 있다 - 사용 이유

by 대디동동 2023. 11. 1.
728x90

파일을 다운로드하다 보면 가끔 파일명 하단에 체크섬(checksum)이라고 표시되어 있고

알파벳 및 숫자를 사용한 연속된 문자를 볼 수 있습니다.

이번 게시물에서는 체크섬은 무엇이고, 왜 체크섬을 사용해야 하는지에 대해서 설명하니

끝까지 읽어 코딩 상식을 통해서 Level Up ~ 하시기 바랍니다.


 

체크섬 checksum 알아보기

체크섬(checksum)에 대해 알아보기

체크섬(checksum) 이란?

간단하게 설명하면 송수신된 데이터의 전송 오류를 감지할 수 있는 검증 데이터를 말합니다.

 

즉, 파일 전송 중 네트워크 오류, 컴퓨터 오류, 디스크 오류 등 여러 가지로 이유로 인해서 전송이

제대로 되지 않을 수 있는데 제대로 전달이 되었는 확인하기 위해서 

데이터 전송 시 데이터와 데이터의 합(체크섬)을 같이 전송하고,

받는 쪽에서는 데이터를 합산해서 전송된 합(체크섬)과 같은지 비교하여

데이터의 파손, 결손 여부를 확인할 때 사용하는 값을 말합니다.

 

체크섬 사용 이유?

첫 번째, 파일 무결성을 확인하기 위함입니다.

요즘에는 네트워크(인터넷) 망이 좋아서 손실 발생할 가능성이 많이 줄어들었지만,

예전에는 대용량 파일은 며칠 동안 받고 실행하려면 파손, 누락 등으로 제대로 실행되지 않는 경우가 많아

제대로 받은 것인지 확인하는 용도로 많이 사용되었습니다.

 

네트워크 망이 좋아진 현재 시점에서는 전송에 따른 오류가 거의 줄어 들어서 큰 의미가 없습니다만,

파일을 HDD, USB 등 다른 기기에 저장할 때에도 오류가 발생할 수 있기 때문에 체크섬이 사용됩니다.

두 번째, 파일의 변조 여부를 확인하기 위함입니다.

해킹 등 악의적 목적을 가진 사람이 원본 파일에 백도어, 악성코드, 바이러스, 계정 및 정보 탈취 코드 등을

넣어서 정상적인 파일처럼 배포할 경우, 사용자 입장에서는 악성 파일인지 쉽게 구분하기 어렵습니다.

이로 인해서 해킹 등 피해를 입을 수 있습니다.

 

따라서, 이를 방지하기 위해 최초 만들어진 정상적 파일을 체크섬 값을 넣고,

원본 파일을 수정할 경우 체크섬 값이 달라지는 특성을 이용해서 두 개의 파일이 정상인지 아닌지 구분할 수 있게 됩니다.

최근에는 컴퓨터 사양이 좋아졌기 때문에 더 복잡한 연산이 가능한 CRC, MD5, PGP, SHA256, SHA512 등을

이용해 구현합니다.


파일 변조에 대한 내용은 보안에 관련 한 중요한 내용이 있어서 추가 설명 드립니다.

예를 들면, 웹서버로 많이 사용되는 Apache의 경우 Source 형태로 제공되어 사용자 환경에 맞춰 컴파일해서 설치합니다.

해당 Apache Source는 압축된 용량만 해도 7MB 넘으며, 파일만 3,000개가 넘습니다.

만일 악의적 목적을 가진 사람이 해당 파일에 악성코드를 넣어 놓았을 경우, 일반 사용자는 이를 알아내기 힘들 것입니다. 

 

따라서 아파치 Source 파일 다운로드 할 경우 아래와 같이 "PGP", "SHA256", "SHA512" 등과 같이

암호화하여 checksum을 만들어 소스를 변조할 경우 확인이 가능하도록 배포하고 있습니다.

아파치 소스 다운로드

PGP
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAABCgAdFiEEJvUe+agvSstD8ZA+03fJ59GUTGYFAmUtUXcACgkQ03fJ59GU
TGZJnA/+KAE23IcOsePVK93RsfY2pCXvrQWH2vRaPQOV68lMMyI9I3D7Dd6ZbOIL
kfdcuMydaOzkwAzgM9dgfC2PF5rO/8LDHtieBRfLNVjcK7ngatZLzRU+2qARk4PG
bxfnpVzpnshBTkMuQ0C3nr6mi+bXQgdbbSLXGS5SOBqckBMfkpEXzArU8PU0EQwT
u3Id+eAqWtxXtwRKz+lRNwLzmyiXc8a1YwXJh5d2ldrL+WlFA1cts+k3nR5YPzF1
QsHLkoTuiAbXpRYHJg83AAENVxYPvwttIdthLeQtUgV6dcoiAuJzOt0/EBnUN5B3
J+T10z4zvXN0MogTVceAFfySZ6fQrR5PXs3raepDjo/AtVH9dvSQdXhpOGtyiCI9
4eabSL69Z7r+Nr3UzVLVYb4Uan5Z7G1UkKQNxJVJSR4mzitf1d3Fylw52ivBGnLv
OMcY1/b3Kx0m69dIiIlLPnG7UMgHwqgYcxJKomjI9opdobmpK42u8ZjOEYFoNAtk
sINfcehp83WwxdDuvpuSFNYWQXGhKONAZIyCW8lAuFWBG8oXra5osWY176OSUGTu
Ah+pM1NlbwL45r5kw+3t4L/3Hhx+dDqtI8jrQYReN/u4dBuIcqqLT1Ik2WjBuTyE
QiY/ZOzdxO7UAGYvgFyMHX+KsuqrxZKHd1JN2+TzHhEtstSICnE=
=CtTT
-----END PGP SIGNATURE-----

SHA256
fa16d72a078210a54c47dd5bef2f8b9b8a01d94909a51453956b3ec6442ea4c5 *httpd-2.4.58.tar.bz2

SHA512
d6e73bf413a507ec16b621ff635e178206207a9e9810ce3944b3dc98d39cde8f225307110167fc9da5822175796c8cb66f98be5b9f0d8b76dcd83a401d39b2c1 *httpd-2.4.58.tar.bz2

소스뿐만 아니라, 리눅스 배포판의 경우도 백도어가 설치된 ISO 배포판도 다운로드용으로 게시된 경우도 있으니 

인터넷상에서 배포 및 다운로드되고 있는 많은 파일도 조심해야 합니다.

 

 

Windows 체크섬 (Check Sum) 확인 방법

우선, 간단하게 윈도우에서 체크섬을 확인하는 방법을 설명하겠습니다.

더 자세한 방법은 다른 게시물을 통해서 설명하도록 하겠습니다.

 

아래 파일인  .NET 7.0 SDK 기준으로 설명드리겠습니다.

https://dotnet.microsoft.com/ko-kr/download/dotnet/thank-you/sdk-7.0.403-windows-x64-installer

  • cmd 실행
  • 다운로드 받은 파일로 이동 후
  • certutil -hashfile 파일명 암호화방식 형태로 입력
  • 결과 값 비교
certutil -hashfile dotnet-sdk-7.0.403-win-x64.exe SHA512
SHA512의 dotnet-sdk-7.0.403-win-x64.exe 해시:
c0fd35e39b79f6597c02fdb06bc7c0d4c0afd31dd5c6aaa2208c22dc3dd5eee4fc4e57d94a2059b26c881257178223181ec5d7d406b7c22c3726e568fabd8f67
CertUtil: -hashfile 명령이 성공적으로 완료되었습니다.

 


좀 더 안전하게 사용하기 위해서는 공식 사이트에서 배포되는 파일을 다운로드하여야 합니다.

또한, 정식 제품을 사용하고 Crack 등을 사용하지 않아야 합니다.

 

체크섬 확인 하는 방법은 다음 게시물을 통해서 알려드리겠습니다.

 

이번 시간에는 체크섬에 대한 간단한 이해 및 왜 체크섬이 필요한지에 대한 내용을 설명했습니다.

체크섬 처리 방식도 중요하지만, 실제 코딩에서는 각종 라이브러리 사용 및 다운로드해서 이용할 경우가 많기 때문에

위에서 설명한 내용을 기억하고 실천하면 더 능력있는 개발자로 성장하면 좋겠습니다.

 

 

반응형