WPA 크랙의 전말
저번 주말부터 WPA가 깨졌다는 뉴스가 돌기 시작했습니다. 모레부터 도쿄에서 PacSec 2008 컨퍼런스가 열리는데 Erik Tews 씨가 Gone in 900 Seconds, Some Crypto Issues with WPA 라는 제목으로 WEP와 WPA의 취약점에 대해 발표한다고 합니다.
처음에는 정확한 정보가 알려지지 않았기 때문에 추측만 무성했는데요. 어제 논문을 입수했습니다. 기술 문서에 WEP와 WPA 공격하기로 넣어두었으니 참고하시기 바랍니다. 이 논문에 대해서 잘 정리한 글은 Battered, but not broken: understanding the WPA crack 입니다. 오늘은 이 글을 번역해서 소개해드릴까 합니다.
----
학계에서 가장 널리 사용되는 무선 네트워킹 암호의 취약점이 발견되었습니다. 이 취약점은 WiFi Protected Access (WPA)의 기반을 구성하는 802.11i 표준에 존재합니다. 따라서 전세계적 파장이 있을 전망입니다. 독일 연구자 Erik Tews는 이번에 도쿄에서 열리는 PacSec 컨퍼런스에서 공저자이자 aircrack-ng 팀원인 Martin Beck과 함께 WPA의 하위 호환성으로 인한 취약점을 밝힐 예정입니다.
Erik Tews는 독일에 있는 Technical University of Darmstadt에서 박사 과정으로 암호학을 연구하고 있습니다. Tews의 말에 의하면 WPA에 Temporal Key Integrity Protocol (TKIP)를 사용하는 경우에 임의의 데이터를 네트워크에 보낼 수 있는 작은 틈이 있어서, 예전에 WEP를 공격할 때 썼던 공격 기법을 변형하여 사용할 수 있었다고 합니다.
Tews/Beck 방법을 요약하면 이렇습니다. 공격자는 패킷을 스니핑하고, 패킷을 약간 변형한 다음 이를 무선 AP로 전송해서 체크섬 일치 여부를 확인합니다. 이 공격은 키를 알아내는게 아니고, 개별 패킷의 복호화만 가능할 뿐입니다. 아주 짧은 패킷의 경우에만 이 기법을 사용할 수 있지만, ARP처럼 패킷이 짧고 브로드캐스트로 인해 패킷 내용 대부분을 뻔히 알 수 있는 경우에는 쉽게 ARP 포이즈닝 공격을 할 수 있고 DNS 스푸핑이나 다른 종류의 포이즈닝도 가능할 수 있습니다.
무선 취약점의 역사
802.11b 스펙은 무선 데이터가 평문으로 전송되기 때문에 도청이 매우 쉽다는 우려를 불식시킬 목적으로 만들어진 것입니다. Wired Equivalent Privacy (WEP)는 이더넷 잭과 동일한 수준의 보안을 제공한다는 아주 간단한 목표를 가지고 있습니다. 그러나 금새 깨졌지요. 2001년부터 크랙이 가능했고, 2004년에 이르러서는 완전히 박살이 났습니다. 심지어 2007년 들어서는 1분 안에 WEP 키를 추출하는 방법도 나왔습니다. (그래서 지금은 AP를 방화벽 바깥에 놓고, VPN을 사용하는게 정석입니다.)
802.11i 작업 그룹은 WEP를 더 강도 높은 방식으로 대체할 목적으로 구성되었습니다. 이 작업 그룹에서 2개의 솔루션이 나왔는데 하나는 하위 호환성을 지원하는 방식이고, 다른 하나는 새로운 방식입니다. 802.11i는 1999년부터 선적된 모든 WiFi 장치를 포괄할 수 있는 새로운 무선 암호 방식으로 TKIP를 제시했습니다. 오래된 장치라도 펌웨어와 드라이버 업데이트만 수행하면 TKIP를 사용할 수 있었습니다. TKIP가 먼저 만들어졌고 WPA의 일부분이 되었습니다.
그 이후에 Advanced Encryption System (AES) 지원이 추가되었습니다. 이 방식은 Counter Mode with CBC-MAC (Cipher Block Chaining Message Authentication Code) 라는 긴 이름의 프로토콜을 사용합니다. (줄여서 CCMP라고 부릅니다.) 이 방식은 AES를 암호화와 무결성 보증에 사용합니다. 이번에 Tews와 Beck이 발견한 취약점은 TKIP 방식에만 적용되고, AES 쪽은 관련이 없습니다.
시간이 흐르면서 802.11i는 WPA를 갱신하여 WPA2 표준을 만들었습니다. WPA는 TKIP 방식만 필수로 지정하고 있었으나, WPA2는 TKIP와 AES 모두를 필수로 지정하고 있습니다. 2002 후반부터 선적된 모든 802.11g 장치는 AES 지원이 가능합니다. Wi-Fi Alliance는 2006년 3월부터 WiFi 인증에 WPA2 지원을 필수 사항으로 넣었습니다.
이번 연구에서 지적된 부분은 802.11i의 하위 호환 기능입니다. WPA 알고리즘이 옛날 WEP 알고리즘을 처리하는 하드웨어에 호환되도록 만들다보니 익스플로잇이 가능한 틈이 남아있게 된 것입니다.
WEP 깨기: chop, chop!
(역주: chop은 Perl에서 문자열의 마지막 글자를 제거하는 함수입니다.) TKIP는 체크섬 관련 부분에 취약점이 있습니다. 체크섬은 무결성과 데이터의 정확성을 보장하는데 사용됩니다. 무선 전송할 때 전송 오류가 발생할 가능성이 높기 때문에, 이 체크섬을 이용해서 수신 도중에 오류나 변조가 있었는지 확인하게 됩니다.
WEP에서 이 체크섬 부분이 취약하게 만들어졌기 때문에, 패킷의 데이터를 변조하고 새로운 체크섬을 계산해서 넣는게 가능합니다. Tews 씨는 WEP 키를 얻을 필요 없이 패킷을 복호화 할 수 있는 공격 도구를 만들었는데 이를 chopchop이라고 부릅니다.
chopchop은 데이터의 마지막 바이트를 잘라내고 다른 바이트를 대신 붙인 다음, 맞을 가능성이 있는 체크섬 값을 새로 써넣습니다. AP에게 이렇게 변조된 패킷을 보내면, AP는 체크섬이 안 맞는 경우 거부 패킷을 전송합니다. 이 과정을 무한 반복하더라도 WEP는 아무런 제제를 가하지 않습니다.
TKIP는 Message Integrity Code (MIC)라는 새로운 무결성 계층을 추가했습니다. 보통 Michael이라는 별명으로 부른다네요. chopchop 같은 간단무식한 공격을 방지하기 위해, 60초 안에 Michael 체크섬이 2번 틀리면 클라이언트가 60초 동안 다운되고 AP에게 새로운 키를 요청하도록 되어있습니다. AP도 역시 같은 상황에 처하면 60초 동안 다운되고 모든 클라이언트에게 키를 재발급합니다. (802.11i는 패스워드 문자열이나 네트워크 키를 바꾸지 않고도 새로운 마스터 키를 생성할 수 있습니다.)
WEP와 TKIP 알고리즘이 차례대로 사용되고, 게다가 Michael 코드는 여전히 취약한 WEP 방식으로 체크섬이 계산되기 때문에, Michael 방어 기제를 회피하면서 chopchop 공격하는 것이 가능하게 되었습니다.
Tews는 ARP 브로드캐스트처럼 매우 짧은 패킷의 경우에 추측해야 되는 바이트의 수가 그리 많지 않다는 점을 강조했습니다. 가령 ARP 패킷의 경우에 보통 출발지와 목적지 IP의 마지막 숫자, Michael 코드 8바이트, WEP 체크섬 4바이트를 제외하고 나머지 데이터는 전부 알 수 있는 내용입니다. chopchop으로 Michael과 WEP를 한 번 깨고 나면, 60초에 한 번씩 나머지 2바이트를 때려맞춰 볼 수 있습니다. 평균적으로 12분에서 15분 정도면 값을 알아낼 수 있습니다.
이제 데이터를 모두 알아냈기 때문에 역산으로 키스트림(key stream)을 얻어낼 수 있습니다. 그렇지만 TKIP에는 TSC라는 리플레이 방지 카운터가 있습니다. 이 카운터를 이용해서 패킷을 네트워크에 다시 전송하거나 같은 키스트림을 재사용하지 못하도록 되어 있습니다.
그런데 여기서 802.11e를 이용하는 우회 방안을 찾아낸 것이죠. 원래 802.11e는 QoS 용도로 여러 개의 큐를 가지고 있습니다. 가령 음성 패킷 같은 경우에 다른 일반 데이터보다 우선적으로 전송되도록 지원하려고 만든 것인데, 이를 이용하면 7~15번 정도 임의의 데이터로 패킷을 재전송할 수 있습니다. TSC 카운터를 올리지 않고도 다른 큐에서 같은 키스트림을 사용할 수 있기 때문입니다.
이렇게 알려지지 않은 바이트 수가 많지 않은 경우에 공격이 가능합니다. TCP/IP SYN 패킷이나 DNS 쿼리가 공격 대상이 될 수 있겠지요. 이 방법으로 TKIP 키나 다른 키를 알아낼 수는 없지만, AP에서 클라이언트로 가는 패킷에 인젝션이 가능합니다. ARP 포이즈닝은 당연히 가능합니다.
오버하지 마세요. 대부분의 경우에는 안전합니다.
마치 TKIP 키가 깨진 것처럼 소문이 돌고 있습니다만, 사실이 아닙니다. 키스트림 하나를 알아낼 수 있을 뿐이지 키스트림을 생성하는데 사용되는 키를 알아내는 것이 아닙니다.
공격 기법을 요약하자면, TKIP를 사용하는 장치를 대상으로 네트워크에 떠다니는 짧은 패킷을 복호화하고 다시 암호화하면서 일부 내용을 바꿔칠 수 있다는 얘기가 되겠습니다. 분명 심각한 공격이긴 합니다만, 키 자체가 깨진 것은 아닙니다.
그러므로 다른 사람이 자기 무선 대역폭을 훔쳐 쓰지 못할 용도로 보안 기능을 사용하는 일반 사용자의 경우에는 별로 문제가 되지 않습니다. 이 공격 기법만 가지고 가정이나 기업 네트워크를 뚫고 들어갈 수 있는 것도 아니고, 데이터를 전부 복호화해서 훔쳐 볼 수 있는 것도 아닙니다.
그리고 AES를 사용한다면 이런 공격으로부터 안전합니다. 대부분의 기업과 높은 보안을 요구하는 네트워크의 경우에는 이미 몇 년 전부터 AES를 사용하고 있습니다.
AP에서 키를 정기적으로 갱신하는 네트워크에서는 공격이 성공하기 어렵습니다. 기업에서 사용하는 AP가 키 갱신 기능을 가지고 있을지는 잘 모르겠지만, 네트워크 관리자라면 한 번 찾아서 설정해보시기 바랍니다. Tews 씨의 말에 의하면, 일정량의 트래픽이 통과할 때마다 키를 다시 발급하는 AP도 있다고 합니다. 이런 경우 트래픽량이 많은 네트워크에서는 키가 빠른 주기로 갱신되므로 공격이 성공하기 어렵습니다.
이제 마무리하겠습니다. WPA는 깨지지 않았습니다. TKIP도 아직 안전합니다. 그렇지만 이번 공격과 앞으로 이루어질 연구를 고려한다면, 빠른 시일 내에 AES로 옮겨가는 것이 안전하리라 생각합니다.
by xeraph | 2008-11-10 08:30:34 | 미분류 | 트랙백 (2) | 덧글 (0)
Tracked from nchovy's me2DAY 2008-11-10 08:31:20
WPA 크랙의 전말
Tracked from gendoh's me2DAY 2008-11-10 10:05:37
WPA 관련 취약점: 어려운 말들은 집어 치우고 암호 걸기나 하는 사람이 얼마나 될까나. 요즘 AP랑 무선장비들은 다 AES 지원되니 눈꼽만큼 느려지긴 해도 AES 팍팍 걸어주는거 강추.




