ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Checksum 알아보기 (Data Integrity, 데이터 무결성, 체크섬)
    BigData 2023. 12. 23. 21:30
    728x90
    반응형

    - 목차

     

    소개.

    데이터 무결성 (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 으로 수렴될 수 있죠.

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

    반응형

    'BigData' 카테고리의 다른 글

    [Avro] Avro Schema 알아보기  (0) 2024.03.06
    Docker 로 Minio Storage 구현하기  (0) 2024.01.12
    ASCII 코드 알아보기  (2) 2023.12.22
    Trino 도커로 따라하기  (0) 2023.12.03
    Thrift 알아보기  (0) 2023.11.04
Designed by Tistory.