무선 LAN 보안
무선 LAN 보안의 두 가지 과제 단말과 AP의 상호 인증 데이터의 암호화를 위한 키 분배 단말은 자신이 연결하려는 AP가 자신이 등록된 신뢰할 수 있는 AP인지 어떻게 확인할 것인가? AP는 연결하려고 하는 단말이 등록된 단말인지 어떻게 확인할 것인가? 데이터의 암호화를 위한 키 분배 데이터 암호화를 위한 세션키(대칭키)를 AP와 단말은 어떻게 공유해서 사용할 것인가?
무선 LAN 보안 프로토콜 WEP(Wired Equivalent Privacy) 802.11i 1999년 IEEE 802.11 무선 LAN 표준 40bits의 대칭키와 임의로 선택된 24bits의 초기 벡터(IV)로 조합된 64bits 키의 RC4 암호 알고리즘 사용 대칭키를 사용한 단말 인증(AP 인증은 안 함) 802.11i WEP의 보안 취약점으로 WEP를 대체하기 위하여 2004년 발표
WEP AP 내의 모든 단말들은 동일한 키를 사용한다. 공유하고 있는 대칭키에 의한 단말 인증 대칭 키 알고리즘 기반 기밀성 단말의 인증 데이터 무결성 각 패킷은 다른 키로 암호화 이전 패킷이 손실되더라도 복호화하는데 지장이 없다. AP 내의 모든 단말들은 동일한 키를 사용한다. 공유하고 있는 대칭키에 의한 단말 인증 AP 인증은 하지 않는다. 하드웨어 혹은 소프트웨어로 구현할 수 있다.
Nonce와 대칭키를 이용한 개체 인증 Nonce: number (R) used only once –in-a-lifetime How: Alice는 Bob이 보낸 nonce R을 서로 공유하고 있는 대칭키로 암호화하여 보낸다. “I am Alice” R K (R) A-B Alic는 존재하고 오직 Alice만이 대칭키를 갖고 있으므로 이 사람은 분명히 Alice이다.
WEP 인증(단말 인증) AP authentication request nonce (128 bytes) nonce encrypted shared key success if decrypted value equals nonce
WEP 암호화 (1) 쌍방은 공유할 WEP 대칭키(104 bits 혹은 40bits)를 수동으로 설치한다. 송신 노드는 데이터 부분에 대해서 CRC-32를 계산한다. 이것을 ICV로 사용한다. 송신 노드는 매 프레임 마다 24-bit의 initialization vector (IV)를 임의로 선택한다. IV를 key에 연결하여 128-bit key를 만든다. 송신 노드는 keyID (8-bit 필드)를 덧 붙인다. 128-bit key를 pseudo random number generator에 입력하여 keystream을 구한다. (data + ICV)를 RC4로 암호화한다. encrypted data ICV IV MAC payload Key ID MAC 헤더 FCS
WEP 암호화 (2) 매 프레임 마다 새로운 IV 사용
WEP 복호화 암호화 data ICV IV MAC 페이로드 Key ID 수신노드는 IV를 추출한다. IV와 공유하고 있는 대칭키를 pseudo random generator에 입력하여 키스트림(keystream)을 구한다. 키스트림과 암호화된 데이터(+ICV)를 XOR하여 복호화 ICV로 데이터 무결성 검증 이것은 앞에서 배운 MAC (message authentication code) 혹은 전자 서명과는 다른 방법이다.
802.11 WEP encryption 보안 구멍: 공격: 24-bit IV, 프레임 마다 하나의 IV -> IV는 결국 재사용된다. IV는 평문으로 전송 -> 재사용된 IV가 드러남 공격: Trudy는 Alice로 하여금 알려진 평문 d1 d2 d3 d4 …을 암호화하도록 한다. Trudy 발견: ci = di XOR kiIV Trudy는 ci di를 알고 또한 kiIV 를 계산할 수 있다. Trudy는 연속되는 암호화 키스트림 k1IV k2IV k3IV …을 알 수 있다. 다음 번 동일한 IV가 사용된다면 Trudy는 복호화할 수 있다.!
802.11i 단말/AP의 상호 인증(WPA)의 두 가지 형태 동적인 암호화를 위한 대칭키 분배 절차 2개의 암호화 알고리즘 WPA 개인 인증 방식(WPA-PSK) WPA 기업(인증 서버를 통한 상호 인증) 동적인 암호화를 위한 대칭키 분배 절차 2개의 암호화 알고리즘 TKIP(Temporal Key Integrity Protocol)- WPA 스트림 암호화 알고리즘 48bit IV CCMP – WPA2 블록 암호화 알고리즘 AES와 유사
WPA-PSK 인증 방식 station AP PMK <-PSK Beacon (인증 방법, 암호 방식) station AP Authenication Request Authenication Response (success) Association Request (TKIP, PSK, auth) Association Response (success. A_ID) PMK <-PSK PMK <-PSK <- (password, SSID) EAPoL-Key msg (AP_nonce, KRC=n) PTK EAPoL-Key msg ({MIC}KCK, S_nonce, KRC=n) PTK KCK, KEK, TK KCK, KEK, TK EAPoL-Key msg ((H(msg,KCK), AP_nonce, KRC=n+1, {GTK}KEK) GTK(group key) 생성 H(msg,KCK)으로 AP 인증 EAPoL-Key msg (H(msg,KCK), S_nonce, KRC=n+1) H(msg,KCK)으로 단말 인증
WPA-PSK 암호화 키 PTK = Psuedo-Random Function(PMK, AP MAC addr, STA MAC addr, AP_nonce, S_nonce) PTK를 분할해서 Key Confirmation Key(KCK), Key Encryption Key(KEK), Temporal Key(TK)를 생성 KCK : 상호 인증에 사용 (HMAC에서 사용하는 비밀값) KEK : Group Key(GTK)를 암호화해서 보내는데 사용 TK : 데이터 암호화 키 TKIP 혹은 CCMP는 TK를 키로 사용하여 데이터를 보낼 때 암호화한다.
인증 서버를 이용한 상호 인증 802.1X에서 규정한 인증서를 기반으로 한 상호 인증 EAP-TLS, EAP-TTLS, Protected EAP 단말(station)과 인증 서버 간에 상호 인증 인증 서버는 인증 결과를 AP에게 알려 준다. 단말이 생성한 pre-master-secret를 사용하여 PMK를 구하고, PSK 방식의 4-way handshake와 동일한 방식으로 TK와 GTK를 구한다.
EAP: extensible authentication protocol station-to-AP (EAP over LAN) AP to 인증 서버 (RADIUS over UDP) wired network EAP TLS EAP EAP over LAN (EAPoL) RADIUS IEEE 802.11 UDP/IP