IPsec이란?

 

 

1. IPsec = IP + Security

IPsec은 이름부터 Internet Protocol Security의 약어임에서 짐작할 수 있듯이, IP 네트워크의 두 통신 지점 간의 데이터 전송을 보호하는 프로토콜입니다.

 

IPsec은 나름 역사가 짙으면서도 생소하게 다가올 수 있지만, 오늘날 인터넷 환경에서 나름의 지분을 갖는 것은 다름아닌 VPN 서비스 때문입니다.

 

VPN 연결으로 해외 서버에 연결하거나 또는 직장인들이라면 외부에서 부득이하게 사내망에 접속하는 등의 용례처럼 데이터를 암호화하여 남이 전송되는 정보를 훔쳐볼 수 없게하는 목적도 있겠지만, 본질적으로 VPN, 그리고 IPsec은 기본 IP 네트워크가 제공하지 않던 데이터 인증/무결성/기밀성을 제공하는 데 의미가 있습니다.

 

최초 개발 이후 OpenVPN이나 Wireguard와 같은 프로토콜이 VPN 영역에서 상당한 경쟁자로 부상하였음에도, 여전히 IPsec은 본래의 입지를 오랫동안 유지하고 있습니다.

 

 

2. IPsec의 구성요소



IPsec은 하나의 프로토콜이 아니라, 아래 3가지 프로토콜의 모음입니다.

이미지 출처: https://rezwanlink.wordpress.com/2018/08/28/overview-of-the-ipsec-protocol-suite/

 

  • Authentication Header (AH): 패킷 인증과 데이터 무결성을 체크합니다. AH는 패킷에 헤더를 추가하고, 이 헤더 안에 패킷 내용에 대한 암호화 해시값을 포함시킵니다. 패킷을 수신한 호스트는 이 해시값을 이용하여 패킷이 전송되는 도중에 변조되지 않았는지 확인 가능합니다. 
  • Encapsulating Security Payload (ESP): 패킷 페이로드 부분을 암호화합니다. 또한, 패킷이 중복 발생되지 않았는지 확인할 수 있도록 패킷 헤더에 시퀀스 번호를 추가합니다.
  • Internet Key Exchange (IKE): 통신 세션 내에서 사용될 암호화 키 및 알고리즘을 상의합니다. 여기에 포함되는 요소들을 SA (Security Association)라고 부릅니다.


실질적으로 AH 헤더만으로는 암호화의 효력이 발생하지 않으며, 최신 버전의 ESP 프로토콜은 AH의 기능을 대부분 포함하도록 설계되어 있습니다. 

 

 

3. IPsec 터널 생성 과정

 

가장 먼저 해야할 일은 IP 패킷을 안전하게 전송할 '터널(Tunnel)'을 만드는 것입니다. 위에서 살펴본 IPsec 요소 중, IKE가 이 작업을 맡고 있습니다. IKE는 2단계에 걸쳐 터널을 생성하는데, 그 결과물은 아래와 같이 2중 구조의 형태를 갖습니다.

이미지 출처: https://networklessons.com/cisco/ccie-routing-switching/ipsec-internet-protocol-security#Authentication_Header_Protocol

 

IKE phase 1 Tunnel

통신을 하려는 두 노드는 우선 상호 인증을 수행하고, 패킷을 암호화하는 key 교환에 앞서 준비 단계를 가집니다. 암호화 키를 먼저 무작정 전송했다가는 plaintext 그대로 노출될테니까요. 그래서 phase 1에서 만드는 터널은 phase 2에서 교환할 암호화 파라미터들을 안전하게 보호하려는 목적을 갖습니다.

 

Phase 1 터널을 생성하기 위해서 두 통신 노드는 다음과 같은 파라미터들(ISAKMP SA라고도 부릅니다)을 상호 합의하에 결정해야 합니다. 

  • 인증 알고리즘 (ex., RSA)
  • 인증 정보의 무결성을 입증하기 위한 해싱 알고리즘 (ex., MD5, SHA, ...)
  • IKE 메시지를 암호화 하기위한 알고리즘 (ex., DES, 3DES, AES ...)
  • Phase 2에서 암호키를 생성할 알고리즘 (ex., DES, 3DES, AES ...)

 

IKE phase 2 Tunnel

Phase 2는 실질적으로 패킷을 암호화하는 방식에 대해 결정하는 단계입니다. Phase 1에서 합의한 암호키 생성 알고리즘으로 키를 만들어 내는 것부터 시작해서, 다음과 같은 부가적인 전송 옵션을 결정합니다.

  • 사용할 IPsec 프로토콜 헤더 (ex., ESP, AH, ESP+AH)
  • IPsec의 운용 방식 (Tunneling/Transport, 아래에 자세히 설명 예정)
  • 암호키를 갱신하는 주기

 

이러한 정보(다른 말로 IPsec SA라고 표현합니다)를 토대로 phase 2 터널을 생성해내면, 비로소 안전한 데이터 패킷 전송이 이뤄집니다.

 

4. Tunneling mode  vs  Transport mode

 

Phase 2를 설명할 때, 고려해야 한다고 했던 요소 중 하나가 IPsec의 운용 방식이였는데요. 여기에는 Transport modeTunnel Mode 2가지가 존재합니다. 두 Mode은 IPsec 패킷 헤더를 처리하는 방식에서 차이가 존재합니다.

 

Transport mode

Transport mode는 패킷의 페이로드 부분만 암호화하고 기존 패킷 헤더 데이터는 원상태 그대로 유지합니다. ESP/AH 헤더는 IP 헤더 뒤에 위치하게 되게, 바로 그 뒤에 암호화된 데이터 페이로드가 뒤따릅니다.

 

일반적으로 호스트-게이트웨이 또는 호스트-호스트 간 직접 연결에 사용됩니다.

 

Tunnel mode

Tunnel mode IP 헤더와 데이터 페이로드 부분까지 전부 빠짐없이 암호화되는 방식입니다. ESP/AH 헤더는 Transport mode와는 정반대로 IP 헤더보다 앞에 새로운 헤더인 것마냥 붙게 됩니다.

 

Tunnel mode는 게이트웨이 간 연결에 주로 사용됩니다. 패킷은 한 네트워크 망을 떠나는 순간(위 그림에서 Gateway 1을 통해 외부로 나갈 때) 암호화되며, 타겟 네트워크의 게이트웨이에 도착하면 복호화가 이뤄집니다. 각 네트워크에 배치된 게이트웨이는 패킷의 원래 주인에게 평문으로 이뤄진 패킷을 포워딩해줍니다. 헤더 영역은 각 private network의 토폴로지 정보를 담고 있으며, 터널 모드에서는 이러한 정보가 패킷이 public internet을 통해 움직이는 동안 노출되지 않도록 헤더까지 암호화하는 것입니다.

 

반응형