데이터가 망가졌는지 어떻게 알까 — 보안 관점에서 본 패리티
패리티, 쉽게 말하면 "검산용 숫자"
학교 다닐 때 수학 문제 풀고 나서 검산해본 적 있을 거다. 답이 맞는지 확인하려고 다른 방식으로 한 번 더 계산해보는 것. 패리티(Parity)도 딱 이런 개념이다. 원본 데이터 옆에 "이 데이터가 맞는지 확인할 수 있는 숫자"를 하나 더 만들어 같이 저장해두는 것이다.

가장 단순한 예로 패리티 비트를 보면, 데이터에 있는 1의 개수를 세서 짝수/홀수 여부를 하나의 비트로 저장해둔다. 나중에 데이터를 다시 읽을 때, 1의 개수를 다시 세서 저장해둔 패리티 값과 비교하면 "어? 데이터가 중간에 손상됐네"라는 걸 알아챌 수 있다.
왜 보안 관점에서 패리티를 봐야 할까
정보보안이라고 하면 흔히 "해킹 막기", "암호화"만 떠올리기 쉬운데, 정보보안의 핵심 목표는 보통 세 가지로 정리된다. 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability). 이걸 합쳐서 CIA 3요소라고 부른다.

- 기밀성: 허락된 사람만 데이터를 볼 수 있게 하는 것
- 무결성: 데이터가 중간에 변조되거나 손상되지 않았음을 보장하는 것
- 가용성: 필요할 때 데이터에 정상적으로 접근할 수 있는 것
패리티는 이 중에서 무결성과 가용성 두 가지에 직접적으로 관여한다. 데이터가 저장 도중이나 전송 도중 깨졌는지 확인하는 게 무결성이고(패리티로 오류를 "감지"), 디스크가 고장 나도 데이터를 복구해서 서비스를 계속 쓸 수 있게 하는 게 가용성이다(패리티로 오류를 "복구").
RAID에서 패리티가 하는 일
https://junlennon0516.tistory.com/25
디스크 여러 개를 하나처럼 — RAID 이해하기
RAID란?하드디스크 하나만 쓴다고 생각해보자. 이 디스크가 고장 나면? 그 안의 데이터는 그냥 다 날아간다. 그리고 디스크 하나로는 아무리 빨라도 속도에 한계가 있다.RAID(Redundant Array of Independen
junlennon0516.tistory.com
앞서 다룬 RAID 5, RAID 6이 바로 이 패리티를 활용하는 대표적인 예다. 데이터를 여러 디스크에 나눠 저장하면서, 그 데이터로부터 계산한 패리티 정보를 별도로 저장해둔다. 디스크 하나가 고장 나면, 나머지 디스크에 남아있는 데이터와 패리티 정보를 조합해서 사라진 디스크의 내용을 그대로 복원해낼 수 있다.
여기서 중요한 포인트는, 패리티는 데이터를 암호화하는 게 아니라는 점이다. 패리티의 목적은 "누가 보면 안 되는가"(기밀성)가 아니라 "고장 나도 원래대로 되돌릴 수 있는가"(무결성·가용성)다. 그래서 패리티만으로는 보안이 완성되지 않는다. 암호화는 암호화대로, 패리티는 패리티대로 각자 다른 문제를 해결한다.
네트워크 통신에서도 쓰인다
패리티는 저장장치뿐 아니라 데이터 통신에서도 쓰인다. 데이터를 전송하는 도중 잡음이나 간섭으로 일부 비트가 뒤바뀔 수 있는데, 이때도 패리티 비트를 함께 보내서 수신 측이 "받은 데이터가 손상되지 않았는지" 검증할 수 있게 한다.
다만 단순 패리티 비트는 오류가 났다는 것만 알 뿐 정확히 어디가 잘못됐는지까지는 알려주지 못하는 한계가 있어서, 실무에서는 더 정교한 오류 검출·복구 방식(CRC, 해시 등)과 함께 쓰이는 경우가 많다.
비슷한 아이디어, 스택 카나리(Stack Canary)

패리티처럼 "값이 바뀌었는지 감시하는 보초병"을 두는 개념이 보안 분야에도 하나 더 있다. 바로 스택 카나리다.
옛날 광부들이 갱도에 들어갈 때 카나리아 새를 데리고 들어갔다는 이야기를 들어봤을 거다. 유독가스가 새어 나오면 사람보다 카나리아가 먼저 반응해서 위험을 미리 알려줬다고 한다. 스택 카나리도 이름 그대로 이 이야기에서 따온 개념이다.

프로그램이 함수를 호출할 때, 메모리의 스택 영역에는 그 함수가 끝난 뒤 돌아갈 주소(리턴 주소)가 저장된다. 그런데 버퍼 오버플로우 같은 공격은 정해진 크기보다 더 많은 데이터를 억지로 밀어넣어서, 이 리턴 주소를 공격자가 원하는 값으로 덮어써버리는 방식으로 작동한다. 그러면 프로그램이 엉뚱한(공격자가 심어둔) 코드로 실행 흐름을 옮기게 된다.
이걸 막기 위해, 리턴 주소 바로 앞에 미리 정해둔 임의의 값(카나리 값)을 하나 심어둔다. 함수가 끝나기 직전에 이 카나리 값이 처음 심어둔 값과 그대로인지 확인한다. 만약 공격자가 데이터를 억지로 밀어넣어 리턴 주소까지 덮어썼다면, 그 과정에서 카나리 값도 함께 뭉개졌을 가능성이 크다. 값이 바뀐 게 감지되면 프로그램은 "뭔가 침해당했다"고 판단하고 즉시 실행을 중단시킨다.
패리티와 카나리, 뭐가 닮았고 뭐가 다른가
두 개념 모두 "원본 옆에 감시용 값을 하나 심어두고, 나중에 그 값이 그대로인지 비교해서 이상 여부를 판단한다"는 구조는 똑같다. 하지만 지키려는 대상과 목적이 다르다.
| 구분 | 패리티 | 스택 카나리 |
| 지키는 대상 | 저장되거나 전송되는 데이터 | 실행 중인 프로그램의 메모리(스택) |
| 목적 | 자연적인 손상(디스크 고장, 전송 잡음) 감지·복구 | 의도적인 공격(버퍼 오버플로우) 감지 |
| 감지 후 동작 | 손상된 데이터를 복구 시도 | 프로그램 실행을 즉시 중단 |
| 관련 CIA 요소 | 무결성, 가용성 | 무결성(주로), 넓게는 가용성도 관련 |
즉 패리티는 "고장"을 막기 위한 검산 값이고, 카나리는 "공격"을 막기 위한 감시 값이다. 하지만 둘 다 근본적으로는 같은 발상에서 출발한다. "뭔가 바뀌었는지는, 바뀌면 안 되는 값을 하나 심어두고 나중에 비교해보면 알 수 있다"는 것이다.
정리
패리티는 한마디로 "데이터가 멀쩡한지 검산해두는 여분의 정보"다.
보안의 3요소인 기밀성·무결성·가용성 중, 패리티는 데이터가 손상되지 않았음을 확인하고(무결성) 손상되더라도 복구해서 서비스를 계속 이어갈 수 있게(가용성) 해주는 장치다. 다만 누가 데이터를 훔쳐보는 것까지 막아주지는 않기 때문에, 기밀성을 지키려면 암호화 같은 별도의 수단이 반드시 함께 필요하다는 점을 기억해두면 좋다.
그리고 이 "감시용 값을 심어두고 비교한다"는 아이디어는 스택 카나리처럼 전혀 다른 영역(메모리 보안)에서도 똑같이 활용되고 있다는 점도 함께 기억해두면, 두 개념을 연결지어 훨씬 오래 기억할 수 있다.
'Security' 카테고리의 다른 글
| WAF / IPS (0) | 2026.07.16 |
|---|---|
| [Security] DR이란? (0) | 2026.07.10 |
| [Security] FTP와 SFTP (0) | 2025.05.05 |