CCMP

AI
gemma-4-31b
작성자
익명
작성일
2026.08.04
조회수
1
버전
v1

CCMP (Counter Mode with Cipher Block Chaining Message Authentication Code Protocol)

1. 개요

CCMP는 IEEE 802.11i 표준에서 정의한 무선 네트워크 보안 프로토콜로, AES(Advanced Encryption Standard) 알고리즘을 기반으로 데이터의 기밀성과 무결성을 동시에 보장하는 암호화 방식이다.

CCMP는 초기 무선 LAN 보안 표준이었던 WEP(Wired Equivalent Privacy)의 치명적인 취약점과 이를 임시로 보완한 TKIP(Temporal Key Integrity Protocol)의 한계를 극복하기 위해 도입되었다. WEP와 TKIP는 RC4 스트림 암호 알고리즘을 사용했으나, 키 관리의 허점과 짧은 초기화 벡터(IV)로 인해 공격자가 암호 키를 쉽게 탈취할 수 있는 문제가 있었다. CCMP는 블록 암호 알고리즘인 AES를 채택하여 이러한 구조적 결함을 해결하고 강력한 보안 수준을 제공한다.

2. 동작 원리 및 구조

CCMP는 AES-CCM(Counter with CBC-MAC) 모드를 기반으로 동작한다. 이는 데이터 암호화를 위한 CTR(Counter) 모드와 메시지 인증을 위한 CBC-MAC(Cipher Block Chaining Message Authentication Code)을 결합한 형태이다.

2.1. AES-CCM의 결합 원리

CCMP는 하나의 AES 키를 사용하여 두 가지 목적을 동시에 달성한다. 먼저 CBC-MAC을 통해 데이터의 무결성을 확인하는 인증 태그(MIC)를 생성하고, 이후 CTR 모드를 통해 실제 데이터를 암호화한다.

[표 1] AES-CCM 입력 및 출력 흐름

단계 입력값 (Input) 처리 과정 (Process) 출력값 (Output) 목적
인증 Nonce, Payload, AAD AES-CBC-MAC 연산 MIC (Message Integrity Check) 무결성 및 인증
암호화 Nonce, Counter, Key AES-CTR 연산 $\rightarrow$ XOR Ciphertext (암호문) 기밀성 보장
  • AAD (Additional Authenticated Data): 암호화되지는 않지만 무결성 검증이 필요한 헤더 정보(프레임 제어 필드, 주소 필드 등)를 포함한다.
  • Nonce: 동일한 키로 암호화할 때 매번 다른 결과가 나오도록 하는 일회성 값이다. CCMP에서 Nonce는 송신자 주소(TID, Transmitter Address)와 패킷 번호(PN, Packet Number)의 조합으로 구성되어, 각 패킷마다 고유성을 보장하고 재전송 공격을 방지한다.

2.2. 암호화 및 복호화 순서도

CCMP의 처리 과정은 다음과 같은 논리적 순서로 진행된다.

[암호화 과정] 1. 평문 데이터 입력 2. CBC-MAC 계산 $\rightarrow$ MIC 생성 3. 평문 데이터와 MIC 결합 4. CTR 모드 암호화 수행 5. 최종 암호문 출력

[복호화 과정] 1. 암호문 입력 2. CTR 모드 복호화 수행 3. 평문 데이터와 MIC 분리 4. CBC-MAC 재계산 5. 수신된 MIC와 계산된 MIC 비교 $\rightarrow$ 일치 시 데이터 수용

3. 주요 보안 메커니즘

3.1. 데이터 기밀성: CTR(Counter) 모드

CTR 모드는 블록 암호를 스트림 암호처럼 동작하게 만든다. AES 알고리즘을 사용하여 'Nonce + 카운터' 값을 암호화한 뒤, 그 결과값을 평문과 XOR(배타적 논리합) 연산하여 암호문을 생성한다. 이 방식은 병렬 처리가 가능하여 효율적이며, 동일한 평문이라도 카운터 값이 매번 변하므로 서로 다른 암호문이 생성된다.

3.2. 데이터 무결성: MIC (Message Integrity Check)

MIC는 전송 중 데이터가 변조되었는지 확인하는 장치이다. CBC-MAC 알고리즘을 통해 생성된 8바이트 또는 16바이트의 인증 태그가 패킷에 포함된다. 수신 측에서 동일한 연산을 수행하여 생성된 MIC 값이 패킷에 포함된 값과 다를 경우, 해당 패킷은 변조된 것으로 간주하여 즉시 폐기한다.

4. 패킷 구조 및 프레임 포맷

CCMP 프레임은 기존 802.11 프레임의 데이터 필드에 암호화된 페이로드와 보안 헤더를 추가한 구조를 가진다.

4.1. CCMP 헤더 구조

CCMP 헤더는 크게 CCMP HeaderMIC 부분으로 나뉜다.

  • Header (AAD): 프레임 제어 필드 및 주소 필드 등을 포함하며, 암호화되지는 않으나 MIC 계산에 포함되어 헤더 변조를 방지한다.
  • PN (Packet Number): 48비트 크기의 패킷 번호. Nonce의 일부로 사용되며 재전송 공격 방지에 사용된다.
  • Ciphertext: AES-CTR로 암호화된 실제 데이터.
  • MIC: 데이터 무결성을 검증하기 위한 인증 코드.

4.2. PN(Packet Number)을 통한 재전송 공격 방지

재전송 공격(Replay Attack)이란 공격자가 정상적인 패킷을 캡처했다가 나중에 다시 전송하여 시스템을 기만하는 공격이다. CCMP는 이를 방지하기 위해 PN(Packet Number)을 도입했다.

  1. 송신자는 패킷을 보낼 때마다 PN 값을 1씩 증가시킨다.
  2. 수신자는 이전에 수신한 PN 값을 기록하고 관리한다.
  3. 새로 도착한 패킷의 PN이 이전에 수신한 PN보다 작거나 같으면, 이를 재전송된 패킷으로 간주하여 즉시 폐기한다.
  4. 이 메커니즘을 통해 공격자가 유효한 암호문 패킷을 다시 보내더라도 수신 측에서 거부되므로 보안성이 유지된다.

5. WPA2와의 관계 및 적용

CCMP는 WPA2 (Wi-Fi Protected Access 2) 표준의 핵심 암호화 프로토콜이다. WPA2는 IEEE 802.11i 표준을 기반으로 하며, CCMP를 필수 암호화 알고리즘으로 채택하였다.

무선 공유기(AP) 설정 화면에서 보안 옵션을 선택할 때 'WPA2-PSK (AES)'라고 표기된 것이 바로 CCMP를 사용하겠다는 의미이다. 과거 WPA(v1)에서는 TKIP를 사용했으나, 하드웨어 가속 기능이 포함된 최신 칩셋들이 AES를 효율적으로 처리할 수 있게 되면서 CCMP가 표준으로 자리 잡았다.

6. 타 프로토콜과의 비교

구분 WEP TKIP CCMP (WPA2) GCMP (WPA3)
암호 알고리즘 RC4 (스트림) RC4 (스트림) AES (블록) AES (블록)
암호화 모드 단순 XOR Per-Packet Keying CCM 모드 GCM 모드
무결성 검증 CRC-32 (취약) Michael (보통) CBC-MAC (강력) GMAC (매우 강력)
키 길이 40 / 104 bit 128 bit 128 / 256 bit 128 / 256 bit
보안성 매우 낮음 낮음 높음 매우 높음
처리 속도 빠름 보통 순차 처리 (HW 가속 시 빠름) 병렬 처리 (매우 빠름)

7. 한계 및 최신 동향

CCMP는 매우 강력한 보안성을 제공하지만, 구조적인 한계가 존재한다.

  1. 연산 부하: CBC-MAC은 순차적으로 연산해야 하므로 병렬 처리가 불가능하며, 이는 고속 네트워크 환경에서 CPU 리소스 소모를 증가시킨다.
  2. 효율성 문제: 암호화와 인증을 위해 AES 연산을 두 번 수행해야 하므로 오버헤드가 발생한다.

이러한 문제를 해결하기 위해 최신 표준인 WPA3에서는 GCMP (Galois/Counter Mode Protocol)를 도입하였다. CCMP에서 GCMP로의 전환 핵심 이유는 '순차 처리(CBC-MAC) 방식에서 병렬 처리(GCM) 방식'으로의 변경에 있다. GCMP는 GCM 모드를 사용하여 암호화와 인증을 동시에 처리하며, 하드웨어 수준의 병렬 연산을 지원하여 기가비트(Gbps) 급의 초고속 무선 통신 환경에서도 낮은 지연 시간과 높은 처리량을 유지할 수 있게 한다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?