VPN
Virtual Private Network (가상 사설망)
- "멀리 떨어진 네트워크를 마치 같은 네트워크인 것처럼 연결하는 기술"
개념
- VPN 터널 (인터넷): "가상 랜선"
- 실제론 공용 인터넷을 그대로 사용하지만 암호화 되어 외부에서 볼 수 없고,
논리적으로 분리된 사설 네트워크처럼 동작
- 실제론 공용 인터넷을 그대로 사용하지만 암호화 되어 외부에서 볼 수 없고,
- "중계기"
터널링원본 패킷을 "다른 패킷 안에" 넣어서 전송
패킷 흐름
- 원본 패킷
- Src: VPN IP
- VPN 네트워크의 가상 IP 할당
- ⚠️ 라우팅 테이블을 먼저 확인하여 송신 인터페이스에 따라 Src IP 를 할당
- Dst: 목표 서버
- Src: VPN IP
- 라우팅 규칙에 따라 가상 인터페이스(WireGuard 가상 인터페이스) 로 전송
- 패킷 전체를 암호화
- 새 IP 헤더를 추가
- Src: 집 공인 IP
- Dst: VPN 서버 공인 IP
- VPN 모듈(WireGuard 커널 모듈) 이 알고 있음 (설정 파일에서 읽어옴)
- UDP 전송
- 원본 패킷은 TCP 이기 때문에 연결 보장
- 라우팅 규칙에 따라 물리 인터페이스(eth0) 로 전송
- VPN 서버에서 패킷을 복호화 하여 원본 패킷 추출
- 목적지로 TCP 전송
- 목적지가 VPN 네트워크에 등록된 내부망의 경우: 원본 패킷 그대로 전송
- 목적지가 외부인 경우: Src 만 VPN 서버 공인 IP 로 변경(NAT 처리)하여 전송
사설 IP 대역
10/8172.16/12:172.16.0.0~172.31.255.255192.168/16
WireGuard
VPN 프로토콜
- 암호화된 터널을 만드는 "규칙"
- Network Layer 3 에서 동작
- 모든 네트워크 트래픽을 암호화
특징
- 최신 암호화 사용
- ChaCha20
- 소프트웨어에서 최적화됨
- AES보다 모바일에서 빠름
- 하드웨어 가속 불필요
- Curve25519
- RSA보다 훨씬 빠름
- 작은 키 사이즈 (32바이트)
- 양자 내성 연구 중
- ChaCha20
- 키 기반 인증
- 사전에 교환한 공개키로 서로 같은 비밀 값을 만들어(ECDH 계산)
이를 통해 세션 키를 생성하여 통신- ECDH: 내 비밀키 × 상대 공개키 = 공유 비밀
- 핸드셰이크마다 임시 키도 만들어 ECDH 계산
- 임시키도 사용하여 여러 공유 비밀을 가지고 키를 만들고
이를 또 가공하여 세션 키 생성
- 임시키도 사용하여 여러 공유 비밀을 가지고 키를 만들고
- 사전에 교환한 공개키로 서로 같은 비밀 값을 만들어(ECDH 계산)