
AWS나 네트워크 보안을 공부하다 보면 IPsec (Internet Protocol Security)이라는 단어를 무조건 마주치게 됩니다. 기술 면접 단골 질문이기도 하죠.
"VPN이랑 IPsec은 무슨 관계인가요?"
"터널 모드는 뭐고 전송 모드는 뭔가요?"
오늘은 뜬구름 잡는 비유는 빼고, 가장 직관적인 '택배 포장' 예시와 개발자를 위한 패킷 구조를 통해 IPsec의 작동 원리를 완벽하게 파헤쳐 보겠습니다.
개발자(Java 등)라면 이 비유 하나로 둘의 관계가 정리됩니다.
InterfaceClass (Implementation)즉, IPsec을 공부한다는 건 "VPN이라는 기능을 구현하기 위해 커널 레벨에서 패킷을 어떻게 포장하는가?"를 배우는 것입니다.
데이터(Payload)를 어떤 보안 용기에 담을지 결정하는 단계입니다.
데이터를 금고(ESP)에 담았다면, 이제 송장(주소)을 어디에 붙일지 정해야 합니다. 여기가 가장 중요합니다.
[Original IP] + [ESP Header] + [Encrypted Data][New IP] + [ESP Header] + [Encrypted Original IP + Data]개발자라면 실제 바이트 덩어리가 어떻게 변하는지 봐야 직성이 풀리죠.
가장 많이 쓰이는 [ESP + 터널 모드] 조합일 때, 패킷은 이렇게 변합니다.
[ Original IP Header ] + [ TCP Header ] + [ Data: "Hello" ]
커널의 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)
핵심 포인트:
Original IP까지 암호화되었기 때문에, 최종 목적지가 어디인지 외부에서는 절대 알 수 없습니다.A. 네, 쓰면 더 좋습니다. (이중 암호화)
HTTPS는 내용물(L7)을 보호하고, IPsec은 배송 경로(L3) 자체를 보호합니다.
둘을 같이 쓰면 [ IPsec 암호 [ HTTPS 암호 [ Data ] ] ] 형태가 되어, VPN 관리자조차 여러분의 HTTPS 통신 내용을 볼 수 없는 '제로 트러스트(Zero Trust)' 환경이 완성됩니다.
A. IPsec 자체는 프로토콜(S/W)입니다.
하지만 실무에서 보는 기업용 'VPN 장비'는 이 IPsec 연산(AES-256 등)을 빠르게 처리하기 위해 가속 칩(ASIC)을 탑재한 특수 목적의 리눅스 컴퓨터입니다.
IPsec은 단순한 보안 도구가 아니라, 인터넷이라는 불안한 공용망 위에 우리만의 전용 고속도로를 건설하는 토목 공사와 같습니다.
앞으로 AWS에서 Site-to-Site VPN을 설정하거나 패킷 로그를 볼 때, "아, 지금 내 데이터가 금고(ESP)에 담겨 이중 박스 포장(터널 모드)이 된 상태구나!"라고 이미지를 떠올려 보세요. 훨씬 이해가 빠를 겁니다.