Skip to content

01. 체크섬과 해시 기초


학습 목표

  1. 체크섬(Checksum)이 무엇이고 왜 사용하는지 설명할 수 있다.
  2. 해시(Hash) 함수의 단방향성이 무엇인지 이해한다.
  3. 해시 함수의 고정 길이 출력 특성을 설명할 수 있다.
  4. 체크섬과 해시의 차이를 명확히 구분할 수 있다.
  5. 정보보안 3원칙 중 무결성의 의미를 이해한다.

전체 구조


1. 체크섬(Checksum)이란?

핵심 개념

체크섬은 데이터에 오류가 있는지 확인하기 위한 방법이다. 원본 데이터를 보낼 때 체크섬 값을 함께 보내고, 수신 측에서 같은 방법으로 재계산하여 두 값을 비교한다.

체크섬의 계산 원리

체크섬의 계산은 매우 단순하다. 핵심 규칙은 딱 두 가지다.

  1. 일정 단위로 잘라서 더한다 (누산)
  2. 자리 올림은 버린다 (자릿수 유지)

예를 들어 5 + 7 = 12인데, 자리 올림(1)을 버리면 2만 남는다.

이름궁합으로 이해하는 체크섬

이름궁합을 해본 적이 있다면, 이미 체크섬을 이해하고 있는 것이다.

성(5) 이(2) 완(7) 완(7) 종(9) 구(2)

각 글자의 획수를 구한 뒤, 인접한 두 수를 더하면서 자리 올림을 버린다.

이 과정에서 중요한 것은:

  • 일정한 규칙(획수→누산→자리올림 제거)으로 계산한다
  • 원본이 같으면 항상 같은 결과가 나온다
  • 원본이 달라지면 결과도 달라진다 (대부분의 경우)

체크섬의 한계: 보안성이 없다

체크섬의 치명적 약점은 누구나 재계산할 수 있다는 것이다.

공격자가 데이터를 변조한 뒤 체크섬을 재계산하면, 수신자는 변조 사실을 알 수 없다. 이것이 체크섬에 기밀성도, 무결성도 없다고 말하는 이유다.

암기 포인트: 체크섬 = 오류 검출 목적 / 보안성 없음 / 재계산으로 바꿔치기 가능


2. 해시(Hash)란?

핵심 개념

해시는 단방향 함수다. 입력을 넣으면 결과가 나오지만, 그 결과로 원래 입력을 역추적할 수 없다.

이름궁합에서 이미 본 단방향성

앞의 이름궁합 예시를 다시 보자.

과정설명
"성" → 5획글자로부터 획수를 구할 수 있다 (순방향)
5획 → "?"5획인 글자는 많다. 글자를 특정할 수 없다 (역방향 불가)
"성이완완종구" → 90이름으로부터 궁합 결과를 구할 수 있다 (순방향)
90 → "?"90이라는 결과로 원래 이름을 알아낼 수 없다 (역방향 불가)

이것이 바로 단방향성이다. 해시 함수의 가장 중요한 특성이다.

나머지 연산(mod)으로 이해하는 단방향성

단방향성이 왜 성립하는지, 나머지 연산으로 직관적으로 이해할 수 있다.

7 % 5 = 2  (7을 5로 나누면 나머지는 2)

여기서 결과 2만 가지고 원래 숫자 7을 찾을 수 있을까?

5로 나눠서 나머지가 2인 숫자는 무한히 많다. 결과만으로는 원본을 알 수 없다. 이것이 나머지 연산(mod)이 해시에서 핵심적으로 사용되는 이유다.

핵심: 나머지 연산을 하면 몫이라는 정보가 유실된다. 유실된 정보는 복구할 수 없으므로 역계산이 불가능하다.

해시의 핵심 특성 3가지

(1) 단방향성

해시 결과로 원본을 역계산할 수 없다. 위에서 충분히 설명했다.

(2) 고정 길이 출력

입력이 "A" 한 글자든 백과사전 전체든, 해시 결과의 길이는 항상 동일하다.

입력길이해시 결과 (예시)결과 길이
"A"1글자7fc56270e7a70fa8...32바이트
"test string"11글자661f8009fa8e56a...32바이트
소설 한 권 전체수만 글자a3f2b8c9d1e4f7...32바이트

길이가 일정하다는 것은 경우의 수가 제한된다는 뜻이다. 그리고 이 범위가 넓을수록 좋은 해시 알고리즘이다.

(3) 충돌 저항성

서로 다른 두 입력이 같은 해시 결과를 내는 것을 **충돌(collision)**이라 한다. 좋은 해시 알고리즘일수록 충돌이 발생하기 어렵다.


3. 체크섬 vs 해시 비교

구분체크섬 (Checksum)해시 (Hash)
목적데이터 오류 검출데이터 무결성 검증
보안성없음있음 (단방향성)
역계산의미 없음 (재계산 가능)불가능
변조 감지재계산으로 속일 수 있음속이기 매우 어려움
연산 복잡도매우 단순 (덧셈)복잡 (연산량 많음)
사용 사례네트워크 전송 오류 검출패스워드 저장, 인증서 검증, 서명

4. 정보보안 3원칙과 해시의 위치

해시는 정보보안 3원칙 중 무결성을 담당한다.

원칙영문의미구현 기술
기밀성Confidentiality허가되지 않은 자가 정보에 접근할 수 없다암호화 (대칭키, 비대칭키)
무결성Integrity정보가 변조되지 않았음을 보장한다해시
가용성Availability필요할 때 정보에 접근할 수 있다이중화, 백업

5. 해시의 활용 분야

해시는 단방향성 덕분에 다양한 곳에서 사용된다.


핵심 암기 포인트

체크섬: 데이터 오류 검출 목적. 보안성 없음. 누구나 재계산 가능.

해시: 단방향 함수. 결과로 원본 역추적 불가. 고정 길이 출력.

단방향성의 비유: 글자 → 획수는 가능하지만, 획수 → 글자는 불가능.

나머지 연산(mod): 해시의 핵심 원리. 몫이 유실되므로 역계산 불가.

무결성: 정보보안 3원칙 중 하나. 해시로 구현. 데이터가 변조되지 않았음을 보장.


확인 질문

  1. 체크섬에 보안성이 없다고 말하는 이유는 무엇인가?
  2. 해시 함수의 "단방향성"을 일상 생활의 예시로 설명해 보라.
  3. 나머지 연산(mod)이 왜 역계산을 불가능하게 만드는가?
  4. 체크섬과 해시의 가장 근본적인 차이는 무엇인가?
  5. 정보보안 3원칙(CIA) 중 해시가 담당하는 것은 무엇이며, 나머지 두 가지는 무엇으로 구현하는가?