본문 바로가기
Network Infra 쉽게 이해하기/VPN 쉽게 이해하기

IPSec VPN 쉽게 이해하기 #2

by 네트워크 엔지니어 환영 2021. 8. 7.
반응형

지난 문서에서 IPSec의 정의, IP 패킷을 암호화/인증하기 위해 사용하는 프로토콜 헤더 AH(Authentication Header), ESP(Encapsulating Security Payload)와 IKE(Internet Key Exchange)에 대해 간략하게 언급했습니다. 이번 문서에서는 앞서 언급한 3가지 핵심 요소인 AH, ESP, IKE에 대해 자세히 알아보고자 합니다. AH / ESP 헤더 부착 과정과 터널 생성 과정은 Transport Mode(이하 전송 모드)가 아닌 Tunnel Mode(이하 터널 모드)를 가정하고 설명합니다.

 

AH & ESP

AH 헤더와 ESP 헤더는 IPSec 터널이 생성된 이후 VPN이 패킷(데이터)을 암호화/인증할 때 사용됩니다. 

Authentication Header(이하 AH)와 Encapsulating Security Payload(이하 ESP)는 IP 패킷의 보안성을 부여하기 위한 프로토콜 헤더로 패킷을 암호화/인증하는 역할을 합니다. 이 둘을 사용하는 이유는 IPSec 터널 내를 흐르는(실질적으로 공인망을 지나다니는) 데이터 패킷을 암호화하고 인증하여 외부 침입으로부터 보호하는 것이죠. 지난 문서에서 말씀드린 것처럼 인터넷 프로토콜 설계 시 패킷의 암호화에 대한 고려가 전혀 반영되어있지 않기 때문에 프로토콜 헤더를 추가로 부착하는 방법을 사용해 IP 패킷의 암호화를 실현하는 것이죠. IPSec VPN을 통과하는 패킷은 AH & ESP를 통해 암호화/인증을 실현하고 IPSec 터널을 오고 갑니다. 

Authentication Header(AH)

IP 패킷의 `무결성`,`인증`에만 사용되는 헤더 (제한적 역할)

- 출처 : 정보통신기술용어해설 -

AH는 IP 패킷의 무결성을 입증하기 위한, 다시 말해 패킷이 변질되지 않았음을 '인증'하기 위한 프로토콜 헤더입니다. 패킷의 데이터 부분에 해당하는 IP Payload(이하 페이로드)와 IP 헤더를 인증한 후 인증 데이터를 생성하여 AH 헤더에 이를 포함시켜 패킷에 부착합니다. 그리고 New IP Header(공인 IP)를 추가로 씌워 기존 AH 헤더, IP 헤더와 IP 페이로드를 캡슐화합니다. 아래 그림과 함께 설명하겠습니다.

<AH 헤더가 장착된 IP 패킷, 아래(출처 : https://networklessons.com/)>

위 그림의 위 패킷은 원래의 패킷이고 아래 패킷은 AH 헤더가 부착된 패킷입니다. IPSec VPN의 터널을 통과하는 패킷은 아래 패킷과 같은 모습을 하는 것이죠. 아래 패킷을 보시면 AH 헤더를 확인할 수 있는데 이 헤더에는 AH 헤더 사용 목적이라 할 수 있는 인증 데이터가 있습니다. 인증 데이터는 사설 IP에 대한 정보가 있는 IP 헤더와 IP 페이로드, 그리고 New IP Header를 해쉬 알고리즘(HMAC, MD5, SHA 등)을 이용해 고정 크기의 블록으로 만든 것입니다. 공격자가 IP 페이로드 혹은 IP 헤더에 조작한다면 조작된 데이터에 해쉬 알고리즘을 적용 시 헤더 내 인증 데이터와 일치하지 않을 테니 외부의 개입 여부를 단번에 알 수 있겠지요. 

<AH 헤더 내부(출처 : 정보통신기술용어해설)>

그밖에 페이로드 내부의 프로토콜 헤더를 알려주는 'Next Header', 페이로드의 길이를 정의하는 'Payload Length' 등이 있죠. AH 헤더의 세부내용은 위 그림에 자세히 나와 있습니다. 헤더에서도 보시다시피 AH는 인증에 관한 작업을 수행할 뿐 패킷의 암호화에는 전혀 관여하지 않습니다. 그렇기 때문에 데이터가 쉽게 노출되어 안전하지 않아 잘 사용되지 않지요.

Encapsulating Security Payload(ESP)

ESP 헤더는 AH 헤더의 인증 기능에 더해 AH 헤더의 약점인 패킷 암호화 기능을 갖춘 프로토콜 헤더입니다. 암호 알고리즘(DES, 3DES, AES)과 함께 암호화 키를 사용하여 패킷을 암호화합니다. 그렇기에 IPSec VPN을 사용한다고 하면 대부분 패킷에 ESP 헤더를 부착하여 전송한다고 볼 수 있죠. ESP는 패킷의 페이로드와 IP 헤더를 암호화하고 ESP 헤더와 선택사항인 인증 데이터를 부착한 후, New IP Header(공인 IP)를 씌워 패킷을 캡슐화합니다. 아래 그림과 함께 설명하겠습니다.

<ESP 헤더가 장착된 IP 패킷, 아래(출처 : https://networklessons.com/)>

위 그림의 위 패킷은 원래의 패킷이고 아래 패킷은 ESP 헤더가 적용된 패킷입니다. IPSec 터널을 통과하는 패킷은 아래 패킷과 같은 모습으로 통과하는 것입니다. 아래 패킷을 보시면 ESP 헤더, ESP Trailer, ESP Auth 등의 헤더가 보입니다. ESP Trailer는 패킷을 암호화하면 필수적으로 생성되는, 페이로드와 인증 데이터를 구분하기 위한 'Padding'과 내부 프로토콜 헤더에 관한 정보를 담고 있죠. ESP 헤더는 IP 헤더와 IP 페이로드 그리고 ESP Trailer를 암호화합니다. 그리고 이 암호화한 IP 헤더 & 페이로드, Trailer에 해쉬 알고리즘을 적용하여 인증 데이터인 ESP Auth를 생성하여 부착합니다. ESP Trailer와 ESP Auth가 필수적인 역할을 담당하다 보니 ESP 헤더는 많은 정보를 담고 있지 않습니다.

<ESP 헤더 내부(출처 : 정보통신기술용어해설)>

위 그림은 ESP 헤더와 ESP Trailer 내부를 자세히 표현하고 있죠. '가변'이라 써진 곳이 ESP Auth입니다. ESP 헤더의 주목적이 암호화인 데다 인증 데이터까지 ESP Auth에 포함되어 있기 때문에 ESP 헤더에는 별다른 정보가 없습니다. 

AH 헤더와 ESP 헤더 패킷을 자세히 보시면 Security Parameter Index(이하 SPI)를 확인하실 수 있는데요. 이는 Security Association(보안연관, SA)의 식별번호입니다. Security Association(이하 SA)이란 VPN과 VPN이 데이터를 안전하게 교환하기 위해 쌍방 간에 합의되는 사항, 즉 VPN 간의 협약을 의미합니다. VPN과 VPN이 협상하여 터널을 생성하고 데이터를 암호화하는 만큼 서로 사용 가능한 알고리즘 혹은 프로토콜, 기타 정보를 확인을 해야겠죠? 그러므로 SA에는 VPN 간 서로를 인증할 방법, 터널의 유지 시간, 인증 데이터를 생성하기 위한 해쉬 알고리즘 합의, IP 페이로드를 암호화하기 위한 암호 알고리즘, 패킷을 암호화하는데 사용하는 키를 생성할 알고리즘, 터널 동작 모드(Tunnel/Transport) 결정뿐만 아니라 AH / ESP 헤더 사용에 대한 합의 등이 포함됩니다. VPN이 어느 VPN에 연결되느냐에 따라 목적지가 다를 수밖에 없기 때문에 터널마다 각각의 SA를 갖게 되고, SA를 식별하기 위한 번호가 필요하니 바로 그것이 SPI인 것이죠.

 AH 헤더와 ESP 헤더 그리고 SA의 정의에 대해 살펴보았으니 이제 SA를 생성 혹은 협의하는 과정, 다시 말해 터널을 생성하고 데이터를 암호화할 키를 교환하는 과정을 보고자 합니다. 바로 Interent Key Exchange입니다.

 

Internet Key Exchange(IKE)

IPSec의 보안연관(SA) 생성을 위한 복합 프로토콜, 그에 따른 키 교환을 수행

- 출처 : 정보통신기술용어해설 - 

Ineternet Key Exchange(키 교환 복합 프로토콜, 이하 IKE)는 IPSec의 SA 생성을 위한 복합 프로토콜입니다. '복합 프로토콜'이라 부른 이유는 IKE가 새롭게 설계한 프로토콜이 아닌 ISAKMP (Internet Security Association and Key Management Protocol)라는 키 교환 프로토콜의 구조와 설계, 메시지 포맷을 명시한 프로토콜을 기반으로 OAKLEY, SKEME와 같은 키 교환 프로토콜을 결합하여 만든 프로토콜이기 때문입니다. 다르게 말하면 IKE는 ISAKMP이라는 빵틀에서 OAKLEY, SKEME라는 시럽을 묻히고 나온 따끈따끈한 빵인 것이죠. 추가로 ISAMKP 프로토콜은 SA 협상시 포트 번호를 'UDP Port 500'을 사용할 것을 명시하고 있기 때문에 IKE 또한 'UDP Port 500'를 사용합니다.

본론으로 돌아와 IPSec VPN의 사용 목적은 곧 데이터의 안전한(암호화된) 교환입니다. 그렇게 하기 위해서는 데이터의 교환에 사용될 요소들, 즉 SA의 안전한(암호화된) 교환이 필수적입니다. 이를 실현하기 위해 IKE가 존재하며 IKE는 곧 IPSec 터널을 생성하고 상대방을 인증하며, 패킷을 암호화/인증할 알고리즘과 암호화 키를 안정적으로 교환할 수 있는 과정을 정의한 프로토콜입니다. 이를 두 개로 나누어보면 다음과 같죠.

1. VPN간 안전한 Phase 2 SA 교환을 위한 Phase 1 터널 생성과 상대방(Peer VPN) 인증(IKE Phase 1, ISAKMP SA)
2. 패킷(데이터)의 암호화 알고리즘 결정과 암호화 키 교환(IKE Phase 2, IPSec SA)

1번은 IPSec 터널을 생성하여 패킷을 암호화/인증하기 이전에 '패킷(데이터)의 암호화 알고리즘 결정 및 암호화 키 교환'을 위한 환경을 마련하는 것입니다. 추가로 IKE Phase 1 터널 생성 과정 중 상대방을 인증하기 위한 수단을 암호화/인증하기 위한 알고리즘, 암호화 키 교환 또한 수해합니다. 아래 그림과 동일합니다.

<IKE Phase 1의 터널 생성(출처 : https://networklessons.com/)>

2번은 IPSec 터널이 생성된 상태에서 패킷을 암호화/인증할 수단을 교환하여 패킷 교환 준비를 끝마치는 과정입니다. 패킷을 암호화할 암호 알고리즘, 암호화 키를 교환합니다. 1번 터널을 기반으로 패킷 교환이 가능한 터널을 생성합니다.

<IKE Phase 2의 터널 생성(출처 : https://networklessons.com/)>

IKE에서는 1번을 IKE Phase 1 혹은 ISAKMP SA라고 부르며, 2번을 IKE Phase 2 혹은 IPSec SA라고 부릅니다. 말그대로 IKE를 두 개의 과정으로 나누어 터널을 생성하고 패킷을 암호화/인증할 알고리즘과 암호화 키를 안전하게 교환합니다. 여담으로 여기서 ISAKMP SA, IPSec SA처럼 'SA'를 붙인 이유는 두 과정이 데이터를 안전하게 교환하기 위해 쌍방 간에 합의되는 사항을 합의하고 그에 따른 수단을 교환하는 과정이기에 붙인 것입니다.

이 문서에서는 AH 헤더 / ESP 헤더의 정의와 사용 이유, IKE의 정의에 대해 살펴보았습니다. 다음 문서에서는 IKE의 터널 생성 과정에 대해 자세히 설명하도록 하겠습니다. 감사합니다.

반응형

댓글