RSN과 4-Way Handshake¶
규격 · 개정판
802.11-2024 Clause 12 (RSNA 설정, 키 계층, 4-Way Handshake, Group Key Handshake, EAPOL-Key 프레임) · RSN 요소 (Clause 9) · 802.11i-2004에서 도입
한눈에 보기
인증이 끝나면 AP와 단말은 공통의 비밀 PMK를 갖습니다(PSK면 암호에서, SAE·EAP면 그 교환에서). 하지만 PMK로 바로 암호화하지 않고, 4-Way Handshake로 이번 연결 전용 키 PTK를 새로 만듭니다.
- AP가 무작위 수 ANonce를 보냄
- 단말은 자기 무작위 수 SNonce와 PMK로 PTK를 계산하고, SNonce와 "키를 아는 증거(MIC)"를 보냄
- AP도 같은 PTK를 계산해 MIC를 확인하고, 그룹 키 GTK를 암호화해 보냄
- 단말이 "설치 완료"를 알림
PMK가 같아도 매 연결마다 nonce가 달라 PTK가 새로 만들어집니다. 암호나 PMK는 공중에 한 번도 나가지 않습니다.
키 계층¶
| 키 | 만드는 법 | 용도 |
|---|---|---|
| PSK / 암호 | 사용자 입력 | (WPA2) PMK = PBKDF2-SHA1(암호, SSID, 4096회, 256비트) |
| PMK | PSK, SAE, EAP(MSK 앞 256비트), OWE에서 유도 | 장기 공유 비밀 |
| PTK | PRF(PMK, "Pairwise key expansion", min(AA,SPA)‖max(AA,SPA)‖min(ANonce,SNonce)‖max(ANonce,SNonce)) | 이번 연결의 키 묶음 |
| ├ KCK | PTK 앞부분 | EAPOL-Key MIC 계산 |
| ├ KEK | PTK 중간 | GTK 등 키 데이터 암호화 (AES Key Wrap) |
| └ TK | PTK 뒷부분 | 유니캐스트 데이터 암호화 (CCMP/GCMP) |
| GTK | AP가 생성 | 브로드캐스트·멀티캐스트 암호화 |
| IGTK / BIGTK | AP가 생성 | 그룹 관리 프레임·비콘 무결성 (PMF) |
AA = AP MAC 주소, SPA = STA MAC 주소. MLO에서는 MLD MAC 주소를 씁니다.
4-Way Handshake¶
sequenceDiagram
participant S as STA (Supplicant)
participant A as AP (Authenticator)
Note over S,A: 공통 PMK 보유 (PSK·SAE·EAP)
A->>S: M1: ANonce, (PMKID)
Note over S: SNonce 생성, PTK 계산
S->>A: M2: SNonce, RSN 요소, MIC(KCK)
Note over A: PTK 계산, MIC 확인, RSN 요소 비교
A->>S: M3: ANonce, RSN 요소, MIC, [GTK·IGTK·BIGTK]KEK, Install
Note over S: MIC 확인, TK·GTK 설치
S->>A: M4: MIC
Note over A: TK 설치 → 802.1X 포트 열림
| 메시지 | 주요 내용 | 확인하는 것 |
|---|---|---|
| M1 | ANonce, Key Replay Counter, (PMKID KDE) | — |
| M2 | SNonce, STA의 RSN 요소, MIC | STA가 PMK를 앎 |
| M3 | ANonce, AP의 RSN 요소, MIC, 암호화된 GTK 등 | AP가 PMK를 앎, 다운그레이드 방지(RSN 요소 재확인) |
| M4 | MIC | 설치 완료 |
M2·M3에서 결합 단계의 RSN 요소를 다시 보내 비교하는 것은, 공격자가 비콘을 위조해 약한 암호를 고르게 하는 것을 막기 위해서입니다.
Group Key Handshake¶
GTK는 주기적으로(또는 단말이 떠날 때) 바뀝니다. AP는 결합된 모든 단말에게 2-메시지 Group Key Handshake(EAPOL-Key, KEK로 암호화한 새 GTK)로 새 키를 보냅니다.
RSN 요소¶
| 필드 | 예 (WPA3-Personal) |
|---|---|
| Version | 1 |
| Group Data Cipher Suite | 00-0F-AC:4 (CCMP-128) |
| Pairwise Cipher Suite List | 00-0F-AC:4 |
| AKM Suite List | 00-0F-AC:8 (SAE) |
| RSN Capabilities | MFPC = 1, MFPR = 1 (PMF 필수), PTKSA Replay Counter |
| PMKID List | (재결합 시 캐시된 PMKSA) |
| Group Management Cipher Suite | 00-0F-AC:6 (BIP-CMAC-128) |
전문가 노트 — PSK의 약점, KRACK, PMKID
오프라인 사전 공격. WPA2-PSK에서 공격자가 M1·M2를 캡처하면 ANonce, SNonce, 주소, M2의 MIC를 모두 압니다. 후보 암호마다 PBKDF2(4096회) → PTK → KCK → MIC를 계산해 비교하면 암호를 확인할 수 있습니다. GPU로 초당 수십만–수백만 후보를 시험하므로 짧거나 사전에 있는 암호는 안전하지 않습니다.
PMKID. \(PMKID = \text{HMAC-SHA1-128}(PMK, \text{"PMK Name"} \| AA \| SPA)\). 일부 AP가 M1에 PMKID를 넣어 보내서, 공격자는 클라이언트 없이 AP에 결합 시도만으로 사전 공격 재료를 얻을 수 있었습니다(2018).
KRACK. 단말이 M3 재전송을 받으면 이미 설치한 TK를 다시 설치하면서 nonce(PN)를 0으로 되돌리는 구현이 많았습니다. CCMP/GCMP에서 nonce 재사용은 키 스트림 재사용이라 복호·위조가 가능해집니다. 표준은 이후 "같은 키는 재설치하지 않는다"는 규칙을 명시했습니다.
PTK 길이. CCMP-128 + SHA1/SHA256 AKM이면 KCK 128, KEK 128, TK 128비트(총 384비트). GCMP-256과 SHA-384 AKM(예: Suite-B-192, SAE-EXT-KEY의 큰 그룹)은 KCK 192, KEK 256, TK 256비트로 커집니다.