VPN

hi2li·2026년 3월 29일

IT를 공부하면서 VPN을 굉장히 많이 들어보았다.
단순히 가상 사설망 이라는 이름에서 오는 감으로 그냥 넘어갔었는데, 이번기회에 조금 더 deep하게 알아볼 수 있었다.

VPN의 등장배경

  • 예전에는 지사와 지사가 네트워크로 연결이 되려면 "전용선"이라는 것을 깔아서 연결해야했다. 전용선을 이용하면 인터넷망을 거치지 않고 말그대로 전용으로 사용할 수 있어 안정적이고 빠르게 데이터 전송이 가능했다.
  • 하지만 치명적인 단점이 하나 있었는데 바로 설치의 어려움과 가격이었다. 지사마다 물리선으로 연결하려면 선을 매립하는 데 어려움이 있었을 것이고 전용선의 가격은 매우 비쌌기 때문에 지사가 늘어날수록 그 비용은 훨씬 더 커졌을 것이다.
  • 이러한 문제점을 가지고 사람들은 아래와 같은 생각을 하게 되었다

인터넷 위에 가상의 전용선을 만들 수 없을까?

  • 인터넷이 발전하고 있었기 때문에 인터넷을 사용하여 지사들을 연결하는 방법들에 대해서 고민했다.
  • 인터넷은 모두가 사용하는 망이기 때문에 악의적인 공격이 오면 보안적으로 위험해질 수 있다.
    -> 이에 대해 연구하면서 인터넷을 사용하지만 전용선처럼 사용할 수 있는 VPN 이라는 기술이 등장하게 되었다.

VPN이란?

  • Virtual Private Network

  • 인터넷을 사용하지만 “암호화 + 터널”을 만들어서 마치 전용선 처럼 사용할 수 있게 하는 깃ㄹ.

  • 즉 “공용망 위에 사설망을 가상으로 만드는 것”이다.

VPN은 크게 터널링 + 암호화 + 인증 + 무결성 이렇게 4가지 개념이 함께 들어가있다.

[1] 터널링

  • 터널링을 통해 패킷을 감싸서 안의 내용을 숨겨줄 수 있다.

  • 원래의 네트워크 패킷 위에 새로운 헤더를 붙인다 -> 외부에서는 내부 패킷의 존재만 알 수 있고 네트워크 경로를 감출 수 있다.

  • 하지만 터널링 만으로는 보안이 완전하지 않다. 패킷을 열어볼 수 있다면 내부 데이터를 그대로 확인할 수 있기 때문이다.

  • 이때 암호화 없이 터널링만 하게되면 패킷을 깠을 때 내용이 보이게 된다.

    터널링은 겉으로 봤을 때 원래 내용을 숨겨주는 것이다. 단, 보호까지 해주지는 않는다.

[2] 암호화

  • 내용을 이해할 수 없게 하는것

  • 터널링만 적용하면 패킷을 열어보는 순간 내부 데이터가 그대로 노출된다.
    이 문제를 해결하기 위해 사용하는 것이 암호화다.

  • 암호화를 적용하면 패킷을 강제로 열어보더라도 내용을 해석할 수 없다.

  • VPN에서는 대칭키 암호화와 비대칭키 암호화를 함께 사용한다.

  • 먼저 비대칭키 기반의 키 합의 과정을 통해 안전하게 세션 키를 생성한다.
    대표적으로 Diffie-Hellman 방식이 사용된다.

이 과정에서는 실제 키를 네트워크로 보내지 않고, 서로 계산을 통해 동일한 키를 만들어낸다.
즉, 키를 전달하지 않고도 공유할 수 있다. (공개값 교환 → 서로 계산 → 동일한 공유키 생성)

이렇게 만들어진 세션 키는 실제 데이터 암호화에 사용된다.
세션 키는 한 번의 통신 동안만 사용되며, 보안을 위해 주기적으로 변경된다.

이후 실제 데이터 암호화는 대칭키 방식으로 수행된다.
대칭키 방식은 속도가 빠르기 때문에 실시간 통신에 적합하다.

[3] 인증

  • 서로가 신뢰할 수 있는 대상인지 확인

  • 인증은 통신을 시작하기 전에 상대방이 진짜인지 확인하는 과정이다.

대표적인 인증 방식은 다음과 같다.

  1. PSK 방식
    미리 동일한 키를 공유하여 인증하는 방식으로 구현이 간단하지만, 키 유출 시 보안에 취약하다.

  2. 인증서 기반 방식
    PKI를 이용하여 상대 장비를 인증하는 방식으로, 보안성과 신뢰성이 높아 기업 환경에서 사용된다.

  3. ID/Password 방식
    원격 접속 VPN(Remote Access)에서 사용자 인증에 사용되는 방식으로, 계정 정보를 기반으로 인증한다.

[4] 무결성

  • 데이터가 변조되지 않았음을 보장하는 성질

  • 암호화는 데이터를 읽지 못하게 만드는 역할을 하지만, 데이터 자체를 변조하는 것까지 막지는 못한다.

  • 즉, 공격자가 데이터를 바꾼 후 그대로 전달할 수도 있다. 즉, 수신자는 그 데이터가 원본인지 알 수 없게 된다.

  • 그래서 필요한 것이 무결성이다.

동작 과정은 다음과 같다.

먼저 송신 측에서 데이터를 생성한다.
그 다음, 데이터와 세션 키를 이용해 HMAC을 생성한다.

이때 송신자와 수신자는 이미 Diffie-Hellman 등의 방식으로 동일한 세션 키를 공유하고 있다.
이 키를 이용해 HMAC을 생성한다.

이후 데이터와 HMAC을 함께 전송한다.

수신 측에서는 데이터를 받은 후, 동일한 방식으로 HMAC을 다시 계산한다.
그리고 송신자가 보낸 HMAC과 비교한다.

두 값이 같으면 데이터는 변조되지 않은 것으로 판단한다.
값이 다르면 데이터가 변경된 것으로 보고 폐기한다.

HMAC을 사용하는 이유는 단순 해시의 한계를 보완하기 위해서다.

만약 데이터와 해시값만 함께 전송한다면,
공격자는 데이터를 변조한 뒤 새로운 해시를 계산해 붙일 수 있다.

이 경우 변조 여부를 탐지할 수 없다.

하지만 HMAC은 데이터와 비밀키를 함께 사용한다.
비밀키를 모르면 올바른 HMAC을 생성할 수 없기 때문에,
데이터 위변조를 효과적으로 방지할 수 있다.

VPN의 구성방식 (구조/유형)

  • VPN는 인터넷 위에 안전한 통신 경로를 만드는 기술이다
  • 이떄 누가 누구와 연결되느냐에 따라서 크게 두 가지로 나뉜다.

1) site-to-site

  • 지점과 지점을 연결
  • 서로 떨어져있는 두 개 이상의 LAN을 VPN터널로 연결해서 마치 하나의 사설망 처럼 통신하게 만드는 방식
  • VPN 연결을 만드는 주체는 라우터, VPN게이트웨이, 방화벽등의 장비이다.
  • 사용자는 VPN의 존재를 잘 모름.
  • 거의 상시 연결에 가까움

→ 사용자의 PC를 사용하지 않음.

2) Remote access

  • 개인 사용자와 지점을 연결
  • 외부에 있는 개별 사용자가 인터넷을 통해 회사 내부망에 안전하게 접속하는 방식
  • 라우터등 장비끼리 연결하는것이 아니라 “사용자 단말 자체가 VPN클라이언트 역할을 한다”
  • 사용자가 VPN 접속을 인식함.
  • 동작흐름
    1. 사용자가 VPN 클라이언트를 실행한다.
    2. 회사 VPN 서버에 접속 요청을 보낸다.
    3. ID/PW, 인증서, MFA 같은 인증 절차를 수행한다.
    4. 인증이 성공하면 VPN 터널이 생성된다.
    5. 사용자는 내부망 접근용 IP나 라우팅 정보를 받는다.
    6. 이후 사용자의 트래픽은 VPN을 통해 회사망으로 전달된

remote access에서의 터널링 범위 → 인터넷 트래픽은 어떻게 보낼까?

  1. Full Tunnel

    사용자가 업무 트래픽 말고도 인터넷 트래픽까지 회사망을 통해서 사용하는 것

    회사에서 트래픽을 통제할 수 있기 때문에 보안이 매우 강함

  2. split Tunnel

    업무 트래픽은 VPN회사망으로 사용하고 인터넷 트래픽은 로컬에서 직접 사용하는 것이다.

    속도가 빠르지만 트래픽 통제가 어렵기 때문에 회사망쪽으로의 공격 경로가 증가된다.

IPSec

  • IP 계층에서 동작하는 보안 프로토콜 집합
  • 암호화, 무결성, 인증을 전부 제공한다.
  • VPN을 구현하는 방식중 하나이다.
  • 구성요소
    • AH : 암호화없이 무결성과 인증을 제공
    • ESP : 암호화. 필요시 무결성과 인증을 제공
    • IKE(키 교환) : IPSec통신에 사용할 키를 안전하게 생성, 교환하고 여러가지 보안 설정(어떤 암호화, 어떤 해시, 키 여러 개 생성, 갱신,)을 협상하는 프로토콜
    • ISAKMP : 보안 연결인 SA를 만들과 관리하기 위한 절차와 틀을 정의하는 관리 프레임워크
      • ISAKMP가 프레임워크라고 하면 실제로 구현하고 움직이는 프로그램이 IKE이다.

        ISAKMP (구조 정의)
           ↓
        IKE (동작 구현)
           ↓
        Diffie-Hellman (키 생성 도구)

SSL VPN

  • 애플리케이션 계층에서 동작하는 VPN
  • 웹 기반, 브라우저로 접속 가능
  • 사용자 단위 VPN
  • 설정 쉬움
profile
갈망하자

0개의 댓글