콘텐츠로 이동

암호화 (CCMP·GCMP)

규격 · 개정판

802.11-2024 Clause 12 (데이터 기밀성·무결성: TKIP(폐기 예정), CCMP-128/256, GCMP-128/256) · NIST SP 800-38C (CCM), SP 800-38D (GCM) · GCMP: 802.11ad에서 도입, CCMP-256·GCMP-256: 802.11ac 시기에 추가

한눈에 보기

4-Way Handshake로 만든 키(TK)로 실제 데이터를 보호하는 방식이 CCMP와 GCMP입니다. 둘 다 AES 블록 암호를 쓰고, 한 번에 두 가지를 해 줍니다.

  • 기밀성: 내용을 암호화
  • 무결성: 헤더 일부와 내용에 대한 MIC(인증 태그)를 붙여 변조를 탐지

또 프레임마다 증가하는 PN(패킷 번호)으로 같은 프레임을 다시 보내는 재전송 공격을 막습니다.

방식 어디서
CCMP-128 WPA2·WPA3-Personal 기본 — 가장 널리 쓰임
GCMP-256 WPA3-Enterprise 192-bit, Wi-Fi 7 고속·MLO 환경
TKIP 옛 WPA. 새 장비에서는 금지

비교

항목 TKIP CCMP-128 CCMP-256 GCMP-128 GCMP-256
블록 암호 RC4 AES-128 AES-256 AES-128 AES-256
모드 스트림 + Michael CCM (CTR + CBC-MAC) CCM GCM (CTR + GHASH) GCM
MIC 길이 8옥텟 (Michael) 8옥텟 16옥텟 16옥텟 16옥텟
헤더 8옥텟 (IV/ExtIV) 8옥텟 8옥텟 8옥텟 8옥텟
프레임당 추가 20옥텟 (ICV 포함) 16옥텟 24옥텟 24옥텟 24옥텟
병렬 처리 — 어려움 (CBC-MAC 직렬) 어려움 쉬움 쉬움
스위트 번호 (00-0F-AC:n) 2 4 10 8 9

GCM은 MIC 계산(GHASH)을 병렬로 할 수 있어 수 Gbps급 하드웨어에 유리합니다. 60 GHz(11ad)에서 먼저 도입된 이유입니다.

CCMP 프레임 구조

부분 길이 내용
MAC 헤더 24–36옥텟 Protected Frame 비트 = 1
CCMP 헤더 8옥텟 PN0, PN1, 예약, Key ID(+ExtIV 비트), PN2–PN5
암호화된 본문 가변
MIC 8 / 16옥텟
FCS 4옥텟
입력 구성
Nonce (13옥텟) Nonce Flags(우선순위 = TID, 관리 프레임 표시) ‖ A2(송신 주소) ‖ PN(6옥텟)
AAD Frame Control(일부 비트 0으로 가림) ‖ A1 ‖ A2 ‖ A3 ‖ Sequence Control(시퀀스 번호 가림) ‖ A4 ‖ QoS Control(TID 등)

Retry 비트나 시퀀스 번호처럼 재전송 시 바뀔 수 있는 필드는 AAD에서 0으로 가려서, 재전송 프레임도 같은 MIC로 검증됩니다.

재전송 방지

수신 측은 TID(및 관리 프레임)별로 마지막으로 받은 PN을 기억하고, 그보다 크지 않은 PN을 가진 프레임은 버립니다. A-MPDU와 Block Ack 재정렬 때문에 PN 검사는 재정렬 이후에 해야 합니다.

전문가 노트 — nonce 재사용과 성능

nonce 재사용의 치명성. CCM·GCM 모두 같은 키·같은 nonce로 두 번 암호화하면 키 스트림이 같아져 평문 XOR이 노출됩니다. GCM은 추가로 인증 키(H)까지 복구될 수 있어 위조가 가능해집니다. KRACK이 위험했던 이유이며, 구현은 키 설치 시 PN을 절대 되돌리지 않아야 합니다.

MLO와 PN. Wi-Fi 7 MLD에서는 링크가 달라도 같은 TK·같은 PN 공간을 공유합니다. 링크별로 PN을 따로 세면 nonce가 충돌할 수 있기 때문입니다. 재정렬도 MLD 단위로 합니다.

성능 감각. 23 Gbps급 EHT 링크에서 1500바이트 MPDU는 초당 약 190만 개입니다. AES-GCM 하드웨어 엔진은 이를 실시간 처리해야 하므로, 칩셋은 데이터 경로에 암호 엔진을 내장하고 호스트는 키 설치만 담당하는 것이 일반적입니다.