[네트워크/보안] 개발자를 위한 IPsec 프로토콜 완벽 해부 (AH vs ESP, 패킷 구조)

복세편살·2026년 1월 29일

Security

목록 보기
3/5
post-thumbnail

AWS나 네트워크 보안을 공부하다 보면 IPsec (Internet Protocol Security)이라는 단어를 무조건 마주치게 됩니다. 기술 면접 단골 질문이기도 하죠.

"VPN이랑 IPsec은 무슨 관계인가요?"
"터널 모드는 뭐고 전송 모드는 뭔가요?"

오늘은 뜬구름 잡는 비유는 빼고, 가장 직관적인 '택배 포장' 예시개발자를 위한 패킷 구조를 통해 IPsec의 작동 원리를 완벽하게 파헤쳐 보겠습니다.


1. 개념 정립: VPN이 '인터페이스'라면, IPsec은 '구현체'

개발자(Java 등)라면 이 비유 하나로 둘의 관계가 정리됩니다.

  • VPN (Virtual Private Network): Interface
  • "가상의 사설망을 구축한다"는 목표(추상화)입니다.
  • IPsec: Class (Implementation)
  • VPN이라는 목표를 달성하기 위해 OSI 3계층(Network Layer)에서 실제로 구현한 기술 표준입니다.
  • (참고: SSL VPN, WireGuard 등은 또 다른 구현체들입니다.)

즉, IPsec을 공부한다는 건 "VPN이라는 기능을 구현하기 위해 커널 레벨에서 패킷을 어떻게 포장하는가?"를 배우는 것입니다.


2. IPsec의 첫 번째 선택: 어떤 상자에 담을까? (프로토콜)

데이터(Payload)를 어떤 보안 용기에 담을지 결정하는 단계입니다.

✉️ AH (Authentication Header): "투명 비닐 봉투"

  • 비유: 내용물이 훤히 보이는 투명 봉투에 넣고, 입구에 '봉인 도장(인증)'만 찍은 상태입니다.
  • 특징: 누가 보냈는지(인증), 도장이 훼손됐는지(무결성)는 알 수 있지만, 지나가는 해커가 내용을 다 읽을 수 있습니다. (암호화 X)
  • 결론: 비밀번호를 투명 봉투에 담을 순 없죠? 실무에서는 거의 안 씁니다.

🧳 ESP (Encapsulating Security Payload): "철제 금고"

  • 비유: 데이터를 튼튼한 철제 금고에 넣고 자물쇠를 채운 상태입니다.
  • 특징: 데이터를 암호화(Encryption)하여 아무도 못 보게 잠급니다. 인증과 무결성도 당연히 제공합니다.
  • 결론: 보안의 왕입니다. 우리가 "IPsec VPN을 쓴다"라고 하면 99%는 이 ESP 금고를 의미합니다.

3. IPsec의 두 번째 선택: 어떻게 배송할까? (전송 모드)

데이터를 금고(ESP)에 담았다면, 이제 송장(주소)을 어디에 붙일지 정해야 합니다. 여기가 가장 중요합니다.

🚗 전송 모드 (Transport Mode): "자물쇠 가방 배송"

  • 방식: 금고(데이터) 손잡이에 '최종 목적지 주소' 송장을 바로 붙여서 보냅니다.
  • 구조: [Original IP] + [ESP Header] + [Encrypted Data]
  • 단점: 내용물은 안전하지만, 배달부(해커/라우터)가 "아, 이 금고는 철수가 영희한테 보내는 거구나"라고 단번에 알아챕니다. 누가 누구랑 통신하는지 경로가 노출되죠.
  • 용도: 주로 서버와 서버(Host-to-Host)가 직접 통신할 때 사용합니다.

🚛 터널 모드 (Tunnel Mode): "이중 박스 포장 (안심 소포)"

  • 방식: 금고를 '커다란 겉박스'에 한 번 더 넣고, 박스 겉면에는 '중계 센터(VPN 장비)' 주소만 적습니다.
  • 구조: [New IP] + [ESP Header] + [Encrypted Original IP + Data]
  • 장점: 배달부는 이 박스가 물류센터로 간다는 것만 알 뿐, 박스를 뜯기 전까진 그 안의 금고가 실제로 누구에게 갈 물건인지 절대 알 수 없습니다.
  • 용도: 본사와 지사(Site-to-Site)를 연결할 때 필수적으로 사용합니다. (회사의 내부 IP 주소 체계까지 완벽히 숨김)

4. [Deep Dive] 패킷 까보기 (Packet Structure)

개발자라면 실제 바이트 덩어리가 어떻게 변하는지 봐야 직성이 풀리죠.
가장 많이 쓰이는 [ESP + 터널 모드] 조합일 때, 패킷은 이렇게 변합니다.

1단계: 원본 패킷 (Plain Text)

[ Original IP Header ] + [ TCP Header ] + [ Data: "Hello" ]
  • 해커가 스니핑(Sniffing)하면 "Hello"가 그대로 보입니다.

2단계: IPsec 캡슐화 후 (Encrypted)

커널의 IPsec 엔진을 통과하면 L3 계층이 통째로 겉박스에 포장됩니다.

[ New IP Header ]           <-- 1. 겉박스 송장 (출발: VPN게이트웨이 / 도착: 상대방게이트웨이)
[ ESP Header ]              <-- 2. 금고 식별번호 (SPI, Sequence Number)
[ *********************** ]
[ * [ Original IP ]     * ] <-- 3. 암호화된 영역 시작
[ * [ TCP Header ]      * ]     (원래 주소와 데이터가 모두 암호문으로 변했습니다)
[ * [ Data: "Hello" ]   * ]     (해커는 이 안을 절대 볼 수 없습니다)
[ *********************** ]
[ ESP Trailer & Auth ]      <-- 4. 봉인 도장 (HMAC)

핵심 포인트:

  1. New IP Header: 인터넷 라우터들은 이 겉박스 주소만 보고 패킷을 배달합니다.
  2. Encrypted Payload: 원래의 Original IP까지 암호화되었기 때문에, 최종 목적지가 어디인지 외부에서는 절대 알 수 없습니다.

5. FAQ: IPsec에 대한 오해와 진실

Q1. HTTPS를 쓰는데 굳이 IPsec VPN을 또 써야 하나요?

A. 네, 쓰면 더 좋습니다. (이중 암호화)
HTTPS는 내용물(L7)을 보호하고, IPsec은 배송 경로(L3) 자체를 보호합니다.
둘을 같이 쓰면 [ IPsec 암호 [ HTTPS 암호 [ Data ] ] ] 형태가 되어, VPN 관리자조차 여러분의 HTTPS 통신 내용을 볼 수 없는 '제로 트러스트(Zero Trust)' 환경이 완성됩니다.

Q2. IPsec은 소프트웨어인가요, 하드웨어인가요?

A. IPsec 자체는 프로토콜(S/W)입니다.
하지만 실무에서 보는 기업용 'VPN 장비'는 이 IPsec 연산(AES-256 등)을 빠르게 처리하기 위해 가속 칩(ASIC)을 탑재한 특수 목적의 리눅스 컴퓨터입니다.


6. 마치며

IPsec은 단순한 보안 도구가 아니라, 인터넷이라는 불안한 공용망 위에 우리만의 전용 고속도로를 건설하는 토목 공사와 같습니다.

앞으로 AWS에서 Site-to-Site VPN을 설정하거나 패킷 로그를 볼 때, "아, 지금 내 데이터가 금고(ESP)에 담겨 이중 박스 포장(터널 모드)이 된 상태구나!"라고 이미지를 떠올려 보세요. 훨씬 이해가 빠를 겁니다.

0개의 댓글