요즘 회사 퇴근하고 블로그 쓰는데
쓰고나면 기분이 좋다.
챌린지끝나고도 쓰고 싶은데, 나 언제까지 갈 수 있을까..?
오늘은 Wifi 네트워크의 인증 절차 중 아주 중요한 요소인 4-way handshake의 과정에 대해 설명하려 한다.
지금까지 Web 개발을 공부하면서 3 ways handshake는 많이 들었다.
TCP 통신 시 양 단의 소켓을 생성하는 과정이었던걸로 기억하는데..(확실히는 아직도 잘 모르겠다)
Wifi에서 무선 네트워크 통신 시 누군가 패킷을 훔쳐 데이터를 확인하더라도
데이터를 알아볼 수 없게 난수화하여 데이터를 보내게 된다.
이 데이터는 해석할 수 있는 key를 가지고 있어야만 복호화 함수에 적용하여 데이터를 추출해낼 수 있는데
이 비밀 Key를 생성하고 주고 받는 과정이 4-Way Handshake이다.
즉, 이후 데이터 통신에서 사용할 암호화 키를 AP와 Client가 공유하기 위해 수행하는 과정으로 이해하면 된다.
TCP 통신에서의 3-way handshake보다 한단계 더 있는 이유는 아무래도
이 key를 양단이 공유하기 위해 서로가 데이터를 주고 받아야 하기 때문이라고 생각된다.
물론 3-way와의 목적자체가 다르긴하지만.
4-Way Handshake Process
이제 4-way handshake의 과정을 알아볼건데,
이 과정은 WPA2 암호화 방식과 WPA3 암호화 방식에서 서로 다르다.
다르다기보단 WPA3가 새로운 Key 공유 방식을 도입하여 더 보안 성능이 향상되었는데,
WPA2에서 발생했던 'KRACK' 이라는 4-way handshake의 취약점에 대한 공격이 드러나게 되서 해당 process를 보완하게 되었다.
그래서 WPA2와 WPA3 각각의 4-Way Handshake의 과정이 어떻게 수행되는지 나눠서 확인해보겠다.
- WPA2
먼저 WPA2의 4-웨이 핸드셰이크는 사전에 약속되어 공유된 PMK라는 키를 통해 암호화 키인 PTK를 생성한다.
WPA-personal 방식인 PSK에서는 AP의 비밀번호가 사전 공유 키인 PMK가 되고,
Enterprise에서는 802.1X 인증과정의 마지막 단계에서 제공받는 키가 PMK가 된다.
그럼 MSG1부터 순서대로 과정을 확인해보자.
먼저 AP에서 난수 Anonce를 생성하여 스테이션에 전달하고,
스테이션에서는 또다른 난수인 Snonce를 생성하고 Anonce와 조합하여앞에 보이시는 함수로 PTK를 생성한다.
여기서 PMK 키도 같이 사용되고 있다.
그리고 Snonce와 함께 MIC라는 무결성 검증 코드를 AP에 전송하는데,
이 MIC는 메시지 본문과 PTK를 조합하여 해시 함수에 돌린 결과값이어서,
해당 해시 함수를 복호화하면 상대방이 PTK가 올바른지 확인할 수 있다.
이후 두번째 메시지를 받은 AP 또한 Station 에게 받은 난수와
가지고 있던 난수를 조합하여 동일한 PTK를 생성하여 MIC 값을 검증한다.
검증이 완료되면 MIC와 브로드캐스트 통신에 사용되는 GTK를 Client에 전송한다.
이때 GTK는 멀티캐스트, 브로드캐스트용 비밀 key인데
생방송 송출과 같은 스트림에 대한 비밀 key라고 보면 된다.
통신을 받은 STATION 은 MIC를 검증하고 GTK를 잘 받았음을 응답하며
4-way handshake는 종료되고 본격적인 데이터 통신이 시작된다.
키 교환 결과는 위 그림과 같다.
GTK는 AP와 연결된 모든 STATION 에게 브로드캐스트 하는 키이므로 모두 동일한 GTK 키를 가지지만,
PTK는 각각 독립된 쌍의 키를 공유하기 때문에 AP는 연결된 STATION 만큼 PTK를 저장하고 있다.
아까 말했듯이 WPA2에는 보안 취약점이 존재한다.
굉장히 복잡한 암호화를 수행하는 것처럼 보이지만, 사전에 공유된 PSK나 Enterprise 세션키를 직접 주고받기 때문에 탈취 가능성이 있고 이후 주고 받는 난수까지 모두 탈취한다면 PTK를 유도해낼 우려가 있기 때문이다.
그래서 차용한게 바로 WPA3의 개쩌는 키 공유 알고리즘인 "디피-헬만 알고리즘" 방식이다.
이게 진짜 처음엔 뭔 개소리지? 했음
키를 공유하지 않는데 키가 공유된대
말도 안되는데 근데 사실 말도 안되는 지능을 가진 사람들은 개많음.
- WPA3
아무튼 이후 WPA3에서는 사전에 명시적으로 주고 받는 PMK의 방식에서 보안의 취약점이 드러난다고 판단하여 4handshake 직전에 PMK를 직접 주고받지 않고 생성하는 SAE 라는 절차를 추가하게 된다.
이 SAE 인증 절차는 디피 헬만 키 교환 알고리즘을 통해서 PMK를 사전에 주고 받지 않고도 서로가 동일한 PTK로 동기화됬음을 확신할 수 있다.
먼저 커밋 단계를 보자.
각 스테이션과 AP는 난수를 생성하여 디피헬만 알고리즘 수식의 지수에 적용하여 공개값을 도출하여 주고 받는다.
이때 그림에 있는 알고리즘의 g와 p 상수는
WPA2 인증 시에 명시적으로 주고받았던 PMK역할을 하는 PSK나 Enterprise 세션키를 통해 도출되고,
이 방식을 PAKE 방식이라고 한다.
커밋 단계가 끝나면 컨펌 단계에서 알고리즘의 g상수 대신에
서로한테 받은 공개값을 수식에 대입하면 서로 동일한 값이 도출되는데 이를 PMK로 사용하게 된다.
서로는 MIC를 통해 서로가 같은 PMK인지 확인하고 SAE 절차는 마치며 4Ways 핸드셰이크로 넘어간다.
이 과정은 PMK를 직접 전달하는 과정이 없고 실제로 통신하는 공개값인 A와 B는 탈취당해도 PMK를 도출해낼 수 없어서 탈취 공격에 대한 저항성이 증가하게 된다.
'모바일' 카테고리의 다른 글
[Wifi Network Study] 암호화 방식 별 특징 (1) | 2024.11.12 |
---|---|
Wifi Network - IEEE 802.1X Authentication process (0) | 2024.11.10 |
WiFi Enable process 분석 - Wifi Scanning (3) (0) | 2024.11.09 |
WiFi Enable process 분석 - Wifi Scanning (2) (3) | 2024.11.08 |
WiFi Enable process 분석 - StateMachine이란 ? (1) (3) | 2024.11.07 |