본문 바로가기
법, 용어/용어

checksum

by 3604 2025. 8. 22.
728x90

- 목차

소개.

Data Integrity (무결성).

TCP Packet Header.

파일 다운로드.

Checksum 에서 사용하는 알고리즘.

소개.

데이터 무결성(Data Integrity)을 검증하는 하나의 방식인checksum에 대해서 알아보려고 합니다.

체크섬은 네트워크 트래픽이나 Disk IO 관점에서 주로 사용되는 방식이구요.

Disk IO 도 하나의 네트워크라고 생각했을 때에 데이터가 전송되는 과정에서 올바르게 카피되었는지를 판단하는 하나의 방식입니다.

예를 들어, 인터넷을 통해서 파일을 다운로드하는 경우가 있습니다.

웹 브라우저를 통해서 어떠한 파일을 다운로드는 받을 때,

파일을 관리하는 파일서버는 웹브라우저라는 클라이언트에게 파일을 제공합니다.

파일 서버는 전송해야할 파일의 checksum 을 계산하고 클라이언트에게 checksum 을 제공합니다.

클라이언트는 시간을 들여 파일을 모두 다운로드받게 되며,

그 이후에 checksum 을 계산하여 파일서버가 건내준 checksum 과 일치하는지 검증하게 됩니다.

checksum 은 데이터 전달 과정에서 데이터의 Loss 가 있진 않은지, 데이터가 Corrupted 되진 않았는지를 확인하는 한가지 수단으로 생각할 수 있습니다.

checksum 이 사용되는 분야는 매우 넓습니다.

데이터베이스, 네트워크, 파일 다운로드 등 여러 분야에서 사용됩니다.

이번 글에서 checksum 에 대한 내용에 대해서 알아보겠습니다.

Data Integrity (무결성).

Data Integrity 는 데이터의 무결성을 의미합니다.

어떠한 시스템이 Data Integrity 를 준수한다는 의미는 데이터가 손상되지 않음을 보장한다는 뜻입니다.

파일의 관점에서 Data Integrity 의 설명을 이어나가보겠습니다.

하나의 파일이 여러 서버와 서버를 이동합니다.

파일을 다운로드하거나 데이터를 백업하는 등의 오늘날에는 데이터의 이동이 굉장히 잦습니다.

이때에 데이터가 손상될 수 있는 경우의 수는 매우 많습니다.

- 파일 서버의 디스크에 존재하는 파일을 메모리로 로드해야합니다.

- 로드된 파일은 Network Protocol 에 따라 잘게 쪼개지고 정보가 추가됩니다.

- 네트워크를 통해 데이터가 이동합니다.

- 클라이언트는 제공된 데이터를 읽어들이고 저장합니다.

위 상황에서 checksum 이 흔히 사용된다고 생각하시면 됩니다.

TCP Packet Header.

네트워크 전송 단계에서 Transport Layer 가 존재합니다.

Transport Layer 의 대표적인 프로토콜이 TCP UDP 인데요.

이 프로토콜은 상위 Application Layer 에서 제공된 데이터를 Packet 이라는 단위로 잘게 쪼갭니다.

그리고 각 Packet Header 를 추가하게 되는데, Header checksum 정보를 추가하죠.

서버와 클라이언트는 Packet 을 주고 받기 때문에 Packet Header checksum 을 기준으로

Data Integrity 을 확인하게 됩니다.

파일 다운로드.

HDFS, S3 와 같은 데이터 스토리지는 기본적으로 checksum 을 사용합니다.

S3 의 경우에는 업로드된 Object 파일 자체에 checksum 값이 추가됩니다.

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/checking-object-integrity.html

객체 무결성 확인 - Amazon Simple Storage Service

AWS Management Console을 사용하여 일부 작업을 수행할 때 객체의 크기가 16MB를 초과하는 경우 Amazon S3는 멀티파트 업로드를 사용합니다. 이 경우 체크섬은 전체 객체의 직접 체크섬이 아니라 각 개별

docs.aws.amazon.com

HDFS 에서도 DataNode 에 저장되는 Data Block 들이 자체적인 Checksum 값을 가지고 있습니다.

파일 서버를 통한 클라이언트의 파일 다운로드도 그 맥락을 같이 합니다.

각 파일마다 checksum 값을 가지고 있어도 되고,

클라이언트가 파일 다운로드를 요청할 때에 checksum 값을 만들어도 됩니다.

이는 파일 서버의 권한이자 재량이구요.

어찌되었든 클라이언트는 그 파일의 checksum 을 반드시 제공받아 정상적인 파일 다운로드가 되었음을 확인할 수 있어야합니다.

Checksum 에서 사용하는 알고리즘.

checksum 은 주로 Hashing 알고리즘이나 Bit 연산이 사용됩니다.

네트워크 Packet 이나 컴퓨터 내부에서의 데이터 이동의 경우에는 Byte 단위의 데이터가 흐릅니다.

이 과정에서는 단순히 Bit Sum 하는 방식으로 checksum 을 만들어냅니다.

그리고 파일의 관점에서는 Hashing 알고리즘을 사용하게 됩니다.

데이터 이동의 전 Hashing 값과 데이터 이동의 후 Hashing 값이 동일함을 비교하는 방식으로 사용되구요.

주로 사용되는 알고리즘은 MD5, SHA-256 등이 사용됩니다.

Bit 연산이나 Hashing 은 알다시피 Encrypt - Decrypt 가 되는 양방향 구조가 아닙니다.

그리고 여러 input 이 동일한 output 으로 수렴될 수 있죠.

이러한 한계가 있다는 점도 알아두시면 좋을 것 같습니다

출처: https://westlife0615.tistory.com/501

 

728x90