농소
WEP & Vulnerability 본문
우선 WEP(Wired Equivalent Privacy)는 1999년의 IEEE 802.11 규약의 일부분으로
무선 LAN 운용 간의 보안(단말과 AP 간 통신의 기밀성)을 위해 사용되는 알고리즘입니다.
WEP는 전송되는 MAC 프레임들을 40bit 길이의 WEP 공유 비밀 키와
임의로 선택되는 24bit 길이의 IV(Initial Vector)로 조합된 총 64비트의 키를 이용하여
RC4 스트림 암호 방식으로 보호하는 방식인데요
WEP의 키 길이는 40bit로 사용하다가 기존의 키의 길이가 작아서
키 길이를 104bit로 늘린 WEP2가 있습니다
WEP 구조
-----------------------------------------------------------------------------------------------------------------------
[IV/KeyID]
RC4로 암호화할 때 사용할 3바이트 크기의 IV 값과 나머지를 0으로 채울 6비트의 패딩 값
그리고 4가지의 비밀키 중에 하나의 KeyID 값 2비트가 있습니다
---------------------------------------------------------------------------
[Data]
상위 계층 데이터
----------------------------------------------------------------------------
[ICV(Integrity Check Value) 무결성 체크 값]
무결성 보장을 위한 CRC-32값, 데이터와 함께 암호화를 합니다.
CRC-32는 데이터의 신뢰성을 검증하기 위한 에러 검출 방법의 일종이라고 보시면 됩니다.
WEP 암호화 과정
-----------------------------------------------------------------------------------------------------------------------
우선 송수신자는 WEP에서 사용할 40bit의 서로 사전에 공유한 비밀키를 설정합니다
그 후 MAC 데이터 부분에 대한 CRC-32의 걸과 값인 32bit의 ICV를 페이로드 끝에 추가하고
3바이트의 IV 랜덤 값을 생성하고, 4바이트 길이의 {IV, Pad, KeyID}를 MAC 헤더 다음에 삽입합니다.
다음으로 24bit 크기의 IV와 40bit 크기의 공유키로 구성된 64bit의 per-packet seed 값을 만들고
해당 Seed 값을 난수 생성기로 돌려 Keystream을 생성하여 해당 Payload와 XOR 합니다
-----------------------------------------------------------------------------------------------------------------------
암호화 과정과 같이 공유키와 IV를 조합해 Seed 값을 만들고 난수 생성기를 돌려
Keystream을 생성합니다. 해당 암호문과 Keystream을 XOR 해 복호화 하여 평문과 ICV 값을 얻고요
복호화 된 평문의 ICV 값과 복호화 한 ICV' 와 비교를 해
메시지가 변조됐는지를 확인하고 마치게 됩니다.
WEP는 이와 같은 스트림 암호의 특성상 빠르고 구조가 간단해서 잘 쓰이고 있었는데요
여러 취약점이 발견되어서 사용중단 되었고
현재 AES 알고리즘을 이용하는 WPA2를 사용하고 있습니다.
-----------------------------------------------------------------------------------------------------------------------
WEP 취약점
자, 취약점을 알아보겠습니다
우선 24bit의 IV는 평문으로 전송이 되고
4개의 공유키중 하나는 세션 연결 중에 갱신되지 않습니다(동일한 키를 계속 사용함)
세션이 지속되는 동안 IV의 비트수는 24bit 즉 2^24 = 16,777,216 엄청 짧죠? ㅎ
세션이 계속 유지되다보면 IV가 0부터 1씩 증가해서 16,777,216 까지 사용을 합니다
그럼 끝까지 사용하면 어떻게 될까요? 네 기존에 사용했던 IV값을 재사용 하게 되겠죠?
자! 여기서 동일한 키를 계속 사용하고 썻던 IV값을 또 사용하게 됩니다 그럼 무슨일이 벌어날까요?
네 동일한 Keystream이 만들어 지게됩니다. !!!
자 그럼 keystream과 메시지를 XOR 하여 암호화를 하게 되는데요
P1,P2를 동일한 Keystream으로 암호화한 암호문 C1,C2를 수집합니다.
XOR의 특성상 다음과 같이 연산을 수행 할수있는데요
두 번째 평문을 쉽게 복호할 수 있게됩니다.