계속해서 IPSec 터널 생성과정에 해당하는 Internet Key Exchange(이하 IKE)의 터널 생성 과정에 대해 알아보고자 합니다. 지난 문서에서 언급한 것처럼 IKE는 두 개의 과정으로 나뉩니다. IKE Phase 1(ISAKMP SA)와 IKE Phase 2(IPSec SA)가 바로 그것이죠. 각각의 역할은 아래와 같습니다.
1. VPN간 안전한 Phase 2 SA 교환을 위한 Phase 1 터널 생성과 상대방(Peer VPN) 인증(IKE Phase 1, ISAKMP SA)
2. 패킷(데이터)의 암호화 알고리즘 결정과 암호화 키 교환(IKE Phase 2, IPSec SA)
먼저 IKE Phase 1을 통해 상대방(Peer VPN)을 인증하고 Phase 2의 협의사항(IPSec SA)을 암호화하여 전달하기 위해 사용할 암호 알고리즘을 결정, 암호화 키를 교환합니다. IKE Phase 2를 실시할 환경인 IKE Phase 1 터널을 만드는 것이죠. 그리고 IKE Phase 2를 통해 패킷(데이터)을 암호화할 알고리즘과 암호화 키를 교환하고 패킷의 무결성을 검증할 방법을 협의합니다. 사용자가 교환할 패킷(데이터)을 어떻게 교환할지를 협의하는 단계입니다. 또한 AH 헤더 혹은 ESP 헤더의 선택 역시 Phase 2에서 이루어지죠. 이제부터 이 과정에 대해 살펴보겠습니다.
IKE를 이용한 터널 생성 과정
IKE Phase 1(ISAKMP SA)
1. ISAKMP SA 제안 및 협의
2. 인증 정보 교환을 통한 상대방 VPN(Peer VPN) 인증
3. 인증 정보 암호화 및 Phase 2에서 사용할 암호화 키 생성
IKE Phase 1의 목표는 ISAKMP SA를 협상하여 안전한 터널을 생성하고 상대방을 인증하는 것입니다. 여기서 '안전한 터널'이란 패킷의 암호화된 교환에 직접적인 영향을 미치는 수단(IKE Phase 2 SA)을 암호화하여 전달할 수 있는 터널을 의미합니다. 그렇기 위해 목적 달성을 위해 위 3가지를 실시합니다. 패킷 교환의 직접적인 수단을 안전하게 전달하기 위해 사전에 터널을 생성하기 위함이죠.
이 터널은 Phase 2에서 협상할 SA를 암호화하기 위한 대칭키를 생성할 뿐만 아니라 상대방 VPN에 대한 인증을 담당합니다. 이 인증에 필요한 인증 정보 또한 대칭키를 이용해 암호화됩니다. 이를 위해 ISAKMP SA를 통해 상대방을 인증하고 대칭키를 생성할 방법을 협의하는 것입니다. 여담으로 Phase 1은 Main Mode와 Aggressive Mode 두 가지가 존재합니다. 위 목표 중 1번에 해당하는 Phase 1에서의 협의사항(ISAKMP SA)은 다음과 같습니다.
(Diffie-Hellman 키 교환 알고리즘에 대한 기본 이해가 필요합니다.)
- Hash : 인증 정보 교환 시 인증 정보가 변질되지 않았음을 증명하기 위한 해쉬 코드 첨부에 사용되는 해쉬 알고리즘
(MD5, SHA) - Authentication : 상대방 VPN을 인증하기 위한 방법
(Pre-shared Key, RSA Encryption, RSA Signature) - DH(Diffie-Hellman) Group : 인증 정보를 암호화할 키를 생성하는 대칭키 교환 알고리즘으로 Phase 2에서 사용
(DH Group 1, DH Group 2, DH Group 5) - Lifetime : Phase 1 Tunnel이 유지되는 시간, 다시 말해 새로운 키를 생성하는 주기를 의미
(통상적으로 86400초) - Encryption : 키 교환 알고리즘과 함께 인증 정보를 암호화할 암호화 알고리즘
(AES, DES, 3DES)
Phase 1에서 사용되는 위 5개의 SA를 어떻게 교환하는지 확인해보겠습니다.
① VPN 간 사용 가능한 SA를 협의합니다. 한쪽 VPN이 먼저 ISAKMP 세트(위에서 언급한 5개의 SA)를 제안하면 상대방 VPN이 이를 확인한 후, 자신이 사용 가능한 ISAKMP 세트 중 일치하는 것을 확인하여 답변을 보냅니다.
② ①에서 결정된 Diffie-Hellman(DH) 키 교환 알고리즘을 사용, 키 재료(Key Materials)를 교환하여 VPN 간 공통적인 대칭키를 생성합니다. 이는 인증 정보 암호화 및 Phase 2의 대칭키 생성에 사용됩니다.
③ ①에서 결정된 해쉬 알고리즘 및 암호화 알고리즘, ②에서 생성된 대칭키를 이용하여 인증 정보를 암호화하여 서로에게 전송함으로써 인증 과정을 마치고 서로를 인증하며 터널을 생성합니다.
위 과정을 통해 2대의 VPN은 서로를 인증하고 공통으로 사용 가능한 대칭키를 확보하여 Phase 2에서 교환할 SA를 암호화할 준비를 마쳤습니다. 즉 Phase 1 터널이 생성되었음을 의미하지요.
IKE Phase 2(IPSec SA)
1. IPSec SA 제안 및 협의
2. 패킷을 암호화할 암호화 키 생성 및 인증
IKE Phase 2의 목표는 Phase 1에서 생성된 안전한 터널을 기반으로 패킷을 암호화/인증할 실질적인 SA을 협의하고 패킷을 암호화하여 전송할 터널을 생성하는 것입니다. IPSec VPN 사용의 실질적인 목표이죠. 이를 실현하기 위해 위 2가지를 실시합니다. 여기서 기억해야 할 것은 Phase 2의 터널에서 오가는 SA는 모두 Phase 1에서 생성한 대칭키 / 결정한 암호화 알고리즘에 의해 암호화된다는 것입니다.
이 터널은 패킷을 암호화/인증하기 위한 SA를 다시 한번 협상하게 되며 이 과정에서 Phase 1에서 생성한 대칭키에 키 재료(Key Materials)를 추가로 교환하여 새로운 대칭키를 만들어 냅니다. 이 키는 패킷을 암호화하는 데 사용되는 키로 수학적으로 Phase 1와 연관이 매우 깊죠. 여담으로 Phase 2는 Quick Mode 하나만 존재합니다. 위 목표 중 1번에 해당하는 Phase 2에서의 협의사항(IPSec SA)은 다음과 같습니다.
- IPSec Protocol : 패킷 인증/암호화를 위한 프로토콜 헤더 선택
(AH / ESP) - Encapsulation Mode : IPSec 터널의 운용 모드 선택
(Transport / Tunnel) - Encryption : 패킷을 암호화할 암호화 알고리즘 선택
(AES, DES, 3DES) - Authentication : 패킷을 인증할 해쉬 알고리즘 선택
(MD5, SHA) - Lifetime : Phase 2 Tunnel이 유지되는 시간, 다시 말해 Phase 1의 대칭키를 기반으로 키를 재생성하는 주기를 의미
(Phase 1보다 낮게 책정, < 86400초) - Perfect Forward Secrecy(PFS, Option) : 키를 주기적으로 교환하도록 강제하는 기능 설정, 옵션 사항
①한쪽 VPN이 먼저 IPSec 세트(위에서 언급한 6가지 SA)를 제안하면 상대방 VPN이 이를 확인한 후, 자신이 사용 가능한 IPSec 세트 중 일치하는 것을 확인하여 답변을 보냅니다. 여기에 패킷(데이터)에 실질적인 영향을 주는 AH / ESP, Transport Mode / Tunnel Mode, 암호화 알고리즘, 해쉬 알고리즘, PFS 등이 포함됩니다. 말 그대로 IPSec VPN의 사용 의의에 해당하는 SA를 협의하는 과정이라고 할 수 있죠.
앞서 IPSec VPN은 Phase 1에서 생성한 대칭키를 기반으로 Phase 2에서 추가적인 키 재료(Key Materials)를 서로에게 보내 새로운 대칭키를 생성한다고 말씀드렸는데요. 이를 위해 랜덤 난수 값인 'Nonce'를 교환합니다. 상대방 VPN이 IPSec SA 확인 답변과 함께 'Nonce'를 반대편 VPN에 전송합니다. 이 'Nonce'는 새로운 대칭키를 생성하기 위한 키 재료로 사용될 뿐만 아니라 재전송 공격(Replay Attack)을 방지하기 위한 수단으로 사용됩니다. SA에 협의된 Nonce는 한 번만 사용되고 더 이상 사용되지 않습니다. 해커가 이 Nonce가 포함된 암호화 패킷을 훔쳐 전송하더라도 '한 번만 사용되어야 할 이 패킷'이 또 사용되었으므로 VPN이 이를 알아채고 거부할 수 있죠. 말그대로 '재전송'된 패킷임을 알아차리고 거부하는 것입니다. 다시 말하면 이 'Nonce'를 통해 서로를 인증한다고 볼 수 있습니다.
(재전송 공격 : 해커가 암호화된 패킷을 가로챈 후, 가공하지 않고 '재전송'하여 마치 송신자인 행세를 하는 공격)
②한쪽 VPN이 마찬가지로 'Nonce'를 상대방 VPN에게 전송합니다. 그리하여 새로운 대칭키가 탄생하고 이 대칭키는 패킷을 암호화하는 데 사용됩니다.
위 2개의 Phase를 통해 IPSec 터널이 완성되었으며 이제 VPN과 VPN은 패킷을 암호화/인증하여 전송할 수 있게 됩니다. 마지막으로 눈여겨볼 점은 Phase 1 터널과 Phase 2 터널의 'Lifetime'입니다. 본래 암호화 키는 오래 사용되면 사용될수록 보안이 약화됩니다. 아무리 암호화된 패킷이라 하더라도 동일한 암호화 키에 의해 패턴이 반복된다면 공격에 취약해지기 마련이죠. 소위 말해 '키가 닳는다'라고 표현합니다. 그렇기에 터널을 새롭게 생성하여 새로운 키를 생성합니다.
그럼 "Phase 2의 터널만을 새롭게 생성하면 되는 것이 아닌가?" 하는 의문이 들 수 있습니다. 이 글을 자세히 보신 분은 기억하시겠지만 Phase 2의 대칭키는 Phase 1의 대칭키와 수학적으로 연관이 깊다고 말씀드렸죠. Phase 1의 대칭키를 기반으로 Phase 2의 대칭키가 만들어집니다. 그렇기에 Phase 1와 Phase 2 터널 모두 Lifetime을 갖는 것입니다. 이를 떠나 Phase 2에서 키의 교환 주기를 강제해 보안을 더욱 강화하기 위해 사용하는 것이 바로 Perfect Forward Secrecy(이하 PFS)이며 PFS를 통해 생성되는 대칭키는 Phase 1의 대칭키와 아무런 관련이 없습니다.
(PFS에 관해서는 HTTPS 통신과정 쉽게 이해하기 번외편(Perfect Forward Secrecy)를 참조하세요!)
다음 문서에서는 이 터널을 기반으로 VPN이 패킷을 어떻게 전달하는지 IP Header의 변화를 중심으로 살펴보도록 하겠습니다. 또한 패킷이 아닌 사용자 관점에서 패킷을 어떻게 넘겨주는지도 확인해보겠습니다.
* 참고 문서
https://www.ciscopress.com/articles/article.asp?p=25474&seqNum=7
https://networklessons.com/cisco/ccie-routing-switching/ipsec-internet-protocol-security#IKE_Phase_2
https://sc1.checkpoint.com/documents/R76/CP_R76_VPN_AdminGuide/13847.htm
'Network Infra 쉽게 이해하기 > VPN 쉽게 이해하기' 카테고리의 다른 글
SSL VPN 쉽게 이해하기 #1 (15) | 2023.01.01 |
---|---|
IPSec VPN 쉽게 이해하기 #4 (20) | 2021.09.12 |
IPSec VPN 쉽게 이해하기 #2 (6) | 2021.08.07 |
IPSec VPN 쉽게 이해하기 #1 (15) | 2021.07.17 |
VPN 쉽게 이해하기 (21) | 2021.07.01 |
댓글