기술(Tech, IT)/알고리즘(Algorithm)

[Algorithm] Checksum (체크섬)

Daniel803 2024. 2. 16. 05:48

Checksum은 전송 또는 저장 중에 발생할 수 있는 오류를 감지하기 위해 디지털 테이블 블록에서 파생된 작은 크기의 데이터다. 기본 개념은 메시지나 파일의 내용을 기반으로 값(Checksum)을 계산한 다음 이 값을 사용해 나중에 데이터의 무결성(integrity)를 검증하는 것이다. 이 프로세스에는 데이터의 표현 역할을 하는 짧은 고정 길이 값(Checksum)을 생성하는 알고리즘을 데이터에서 실행하는 것이 포함된다.

 

나중에 데이터를 검색하거나 수신하면 Checksum 계산이 반복된다. 새로 계산된 Checksum이 원래 Checksum과 일치하면 일반적으로 데이터가 변경되지 않은 것으로 간주하지만, 의도적인 변조를 방지할 수 있는 것은 아니다. Checksum이 일치하지 않으면 데이터가 어떤 식으로든 손상되었거나 변경되었음을 나타낸다.

 

Checksum을 계산하는  데 사용되는 알고리즘은 여러 가지가 있으며, 각각 다른 특성을 가지고 있다. 일반적으로 사용되는 Checksum 알고리즘으로는 CRC32, MD5, SHA-1 등이 있지만, MD5와 SHA-1은 암호화 해시 함수(Cryptographic Hash Function)라고 부르는 것이 더 정확하며 서로 다른 데이터에 대해 동일한 hash(Checksum)가 생성될 가능성이 낮기 때문에(충돌(collision) 상황) 보다 안전한 안전한 애플리케이션에 사용된다. Checksum은 아래와 같은 경우에 사용이 가능하다.

 

  1. 데이터 무결성 검사
    : 저장, 전송 또는 검색 중에 파일이 손상되지 않았는지 확인
  2. 네트워크 통신
    : TCP/IP와 같은 프로토콜은 전송된 데이터 패킷의 오류를 감지하기 위해 Checksum을 사용
  3. 파일 검증
    : 다운로드한 파일 또는 업데이트의 무결성 확인
  4. 오류 감지
    : 저장 장치, 메모리, 데이터 전송에서 Checksum은 오류를 식별하는 데 도움이 됨

간단한 사용 예시를 알아보자.

 

사용자가 인터넷에서 설치 파일을 다운 받았닫고 가정하자. 웹사이트가 다운로드 링크를 통해 제공하는 MD5 hash Checksum이 'a4b6c8d7e8f9g0h1j2k3l4m5n6o7p8q9'이라 하자. 파일의 다운로드 완료후, 사용자가 MD5 checksum을 계산하는 툴을 사용해 확인한 checksum이 'a4b6c8d7e8f9g0h1j2k3l4m5n6o7p8q9'라면 다운로드 과정 중에 파일이 손상되거나 변질되지 않았다는 것을 확인할 수 있다.