VPN
contents
1. 핵심 개념: VPN이란 무엇인가?
가장 근본적인 수준에서 VPN은 공용 네트워크(인터넷) 상에서 로컬 머신(클라이언트)과 원격 서버(VPN 서버) 사이에 암호화된 사설 데이터 터널을 생성하는 기술입니다.
일반적인 인터넷 사용 시 데이터의 흐름은 다음과 같이 공개됩니다:
- 사용자 $\rightarrow$ ISP(통신사) $\rightarrow$ 웹사이트
- 위험 요소: ISP는 사용자가 요청하는 모든 내용을 볼 수 있습니다. 웹사이트는 사용자의 실제 IP 주소(디지털 신원/위치)를 볼 수 있습니다.
VPN을 사용할 때:
- 사용자 $\rightarrow$ [암호화된 터널] $\rightarrow$ VPN 서버 $\rightarrow$ 웹사이트
- 결과: ISP는 사용자가 특정 서버로 '알 수 없는 데이터'를 보낸다는 것만 알 수 있습니다. 웹사이트는 사용자가 아닌 'VPN 서버'가 접속한 것으로 인식합니다.
2. 작동 원리: "터널링(Tunneling)" 프로세스
"터널"은 물리적인 케이블이 아니라, 캡슐화(Encapsulation) 와 암호화(Encryption) 를 통해 생성된 논리적인 경로입니다.
A. 캡슐화 (패킷 안의 패킷)
편지를 보내는 상황을 상상해 보세요.
- 원본 데이터 (편지 내용): 실제 요청 데이터입니다(예: "https://www.google.com/search?q=Google.com 접속 요청"). 여기에는 사용자의 출발지 IP와 목적지 IP가 포함됩니다.
- 캡슐화 (편지 봉투): VPN 클라이언트는 이 원본 패킷을 새로운 패킷 안에 감쌉니다.
- 새로운 헤더: 겉면의 패킷에는 새로운 출발지(사용자)와 새로운 목적지(VPN 서버 IP)가 적힙니다.
B. 암호화 (잠금 장치)
"편지"를 "봉투"에 넣기 전에 내용을 뒤섞어 버립니다. 누군가 겉면의 패킷을 가로채서 뜯어보더라도, 해독할 수 없는 난수 코드만 보게 됩니다.
C. 처리 흐름 (Process Flow)
- 핸드셰이크 (Handshake): 클라이언트와 VPN 서버가 공개 키를 교환하여 신원을 확인하고 "세션 키"에 동의합니다.
- 암호화: 사용자의 컴퓨터가 세션 키(주로 AES-256)를 사용하여 데이터를 암호화합니다.
- 전송: 암호화된 데이터가 캡슐화되어 VPN 서버로 전송됩니다.
- 복호화: VPN 서버가 패킷을 받아 겉면을 벗겨내고, 세션 키를 사용해 내부 데이터를 복호화합니다.
- 전달 (Forwarding): 서버는 원본 요청을 최종 목적지(예: https://www.google.com/search?q=Google.com)로 보냅니다.
- 반환: 응답 데이터에 대해 이 과정이 역으로 진행됩니다.
3. VPN 프로토콜: 통신 규칙
프로토콜은 터널이 형성되는 방식과 암호화 처리 방식을 결정합니다. VPN 선택 시 가장 기술적으로 중요한 부분입니다.
| 프로토콜 | 아키텍처 | 속도 | 보안 | 비고 |
|---|---|---|---|---|
| WireGuard | 최신, 경량화 | 매우 빠름 | 높음 (ChaCha20) | 새로운 업계 표준입니다. 커널(OS 핵심) 레벨에서 동작하며, 코드 라인 수가 약 4,000줄(OpenVPN은 10만 줄 이상)에 불과하여 빠르고 감사가 용이합니다. |
| OpenVPN | 전통적, 강력함 | 보통 | 매우 높음 (AES-256) | 오랫동안 사용된 표준입니다. 설정이 유연(TCP/UDP)하지만, "컨텍스트 스위칭" 오버헤드로 인해 WireGuard보다 느립니다. |
| IKEv2/IPsec | 모바일 친화적 | 빠름 | 높음 | WiFi에서 LTE/5G로 전환될 때 즉시 재연결되므로 모바일 기기에 적합합니다. iOS/macOS에 내장되어 있습니다. |
| L2TP/IPsec | 구형 | 느림 | 좋음 | 이중 캡슐화로 인해 속도가 느리며, 방화벽에 의해 쉽게 차단됩니다. 거의 사장되었습니다. |
| PPTP | 구형 (사용 금지) | 빠름 | 취약함 | 90년대 Microsoft가 개발했습니다. 보안이 매우 취약하여 쉽게 해킹됩니다. 사용하지 마세요. |
4. 암호학 (Cryptography): 내부 구조
"매우 상세한" 설명을 위해 데이터를 보호하는 수학적 원리를 살펴보겠습니다.
- 대칭 키 암호화 (Symmetric Encryption - 데이터 스트림용):
- 속도가 빠르기 때문에 실제 파일 전송에 사용됩니다.
- 표준: AES-256 (Advanced Encryption Standard). 슈퍼컴퓨터로 무차별 대입(Brute-force)해도 수백만 년이 걸립니다.
- WireGuard: 모바일 CPU에서 AES보다 더 빠른 ChaCha20을 사용합니다.
- 비대칭 키 암호화 (Asymmetric Encryption - 핸드셰이크용):
- 오직 시작 단계에서 대칭 키(Symmetric Key)를 안전하게 교환하기 위해서만 사용됩니다.
- RSA (2048/4096-bit): 개인 키(비밀)와 공개 키(공유)를 사용합니다.
- ECDH (Elliptic Curve Diffie-Hellman): WireGuard가 사용하는 더 현대적이고 효율적인 방식입니다.
- 해싱 (Hashing - 데이터 무결성):
- 전송 중 데이터가 변조되지 않았음을 보장합니다.
- 알고리즘: SHA-256 또는 SHA-512. 패킷의 비트가 하나라도 바뀌면 해시값이 달라져 VPN이 해당 패킷을 폐기합니다.
5. VPN 아키텍처의 종류
A. 원격 액세스 VPN (Remote Access - 소비자/직원용)
일반적으로 사람들이 말하는 "VPN"입니다.
- 시나리오: 카페나 집에서 인터넷을 하거나 회사 파일에 접근할 때 사용합니다.
- 구성: 사용자 기기(노트북/폰)에 클라이언트 소프트웨어를 설치합니다.
B. 사이트 간 VPN (Site-to-Site - 기업용)
- 시나리오: 뉴욕 본사와 런던 지사가 있습니다.
- 구성: 각 위치의 라우터끼리 서로 연결됩니다.
- 결과: 런던의 직원이 뉴욕에 있는 프린터를 마치 옆방에 있는 것처럼 사용할 수 있습니다. 직원 개개인의 노트북에 별도 소프트웨어를 설치할 필요가 없습니다.
6. 고급 기술 기능
분할 터널링 (Split Tunneling)
어떤 앱을 VPN으로 보내고, 어떤 앱을 일반 ISP로 보낼지 선택하는 기능입니다.
- 메커니즘: VPN 클라이언트가 OS의 라우팅 테이블(Routing Table) 을 수정합니다.
- 예시: "
192.168.1.x(프린터) 트래픽은 인터페이스 A로 보내고,0.0.0.0/0(인터넷)은 인터페이스 B(VPN)로 보내라."
킬 스위치 (Kill Switch)
VPN 연결이 끊어질 경우 인터넷을 차단하는 안전장치입니다.
- 메커니즘: 시스템 레벨의 방화벽 규칙을 생성하여 "목적지가 VPN 서버 IP가 아닌 경우 모든 트래픽을 차단한다"라고 설정합니다.
- 이유: 이것이 없으면 VPN이 1초만 끊겨도 OS가 즉시 ISP 연결로 전환하여 실제 IP가 노출될 수 있습니다.
난독화 (Obfuscation / Stealth Mode)
검열(예: 중국의 황금방패)을 우회하기 위해 사용됩니다.
- 메커니즘: VPN 데이터 패킷을 SSL/TLS 암호화 레이어로 한 번 더 감싸서, 일반적인 HTTPS 웹 트래픽(443 포트)처럼 보이게 만듭니다. 방화벽은 이를 "OpenVPN 프로토콜"이 아닌 "웹 서핑"으로 인식합니다.
7. 신뢰의 역설 (중요!)
VPN은 익명성을 완벽하게 보장하는 것이 아니라, 신뢰의 대상을 옮기는 것입니다.
- VPN 미사용: ISP(KT, SKT, LG U+ 등)가 데이터를 로그/판매하지 않을 것이라고 신뢰함.
- VPN 사용: VPN 제공업체(Nord, Express 등)가 데이터를 로그/판매하지 않을 것이라고 신뢰함.
- 핵심: "노 로그(No Logs)" 정책은 법적 주장일 뿐 기술적 장벽이 아닙니다. 트래픽이 그들의 서버를 통과하므로 마음만 먹으면 로그를 남길 수 있습니다. 따라서 평판과 제3자 감사가 매우 중요합니다.
요약
VPN은 두 지점 간의 트래픽을 인증하고 암호화하는 보안 도구입니다. WireGuard와 같은 프로토콜을 사용하여 데이터 패킷을 캡슐화하고, AES나 ChaCha20으로 암호화하여 IP 주소를 숨기고 외부 감시로부터 데이터 무결성을 보호합니다.
references