VPN (Virtual Private Network, 가상 사설망)
- 네트워크 보안 프로토콜
- 인터넷 같은 공중망을 이용해 사설망이 요구하는 서비스를 제공할 수 있도록 구축한 망이다.
- 공중망을 공유하기 때문에 낮은 비용으로 서비스를 제공할 수 있다.
- 터널링 프로토콜과 보안과정을 거치기 때문에 보안성이 우수하다.
- 내부 주소 및 내부 라우터를 숨기며, 데이터 암호화, 사용자 인증, 사용자 권한 기능을 제공한다.
- 사용자 필요에 따라 IPSec, TLS/SSL, MPLS등의 보안 프로토콜을 적용한 네트워크를 구축할 수 있다.
단점으로는 ISP마다 서로 다른 기술을 채택하여 연동에 문제가 있으며 표준이 부족하다.
VPN 구현 기술
- 터널링
- 송신자와 수신자 사이에 일종의 파이프를 구성하는 것으로 사설망과 같은 보안 기능을 제공한다.
- 암호화 및 인증
- 네트워크의 패킷은 스푸핑, 하이재킹, 스니핑 등으로 정보가 노출될 수 있지만 VPN 에서는 대칭키 암호(DES, SEED, AES 등)으로 암호화 한다.
- 암호화에 사용된 대칭키는 공개키 암호방식(RSA, ElGamal 등)으로 키를 교환한다.
- 메시지 인증은 MAC 또는 해시함수를 이용하여 메시지의 무결성을 증명한다.
- 사용자 인증은 VPN 접속시 보안 서버로 부터 인증 받으며, 공유키, 공개키, 인증서, 전자서명 등을 사용한다.
- 접근 제어
- 패킷 정보를 이용하여 필터링을 하지만 암호화된 패킷에는 적용이 불가능 하다.
VPN의 터널링을 제공하는 프로토콜
- 2계층에서 지원하는 프로토콜
- L2TP(Layer 2 Tunneling Protocol), L2F(Layer 2 Forwarding Protocol), PPTP(Point-to-Point Tunneling Protocol)
- 3계층에서 지원하는 프로토콜
- IPSec, GRE(일반 라우팅 캡슐화)
- MPLS는 별도의 계층
2계층 터널링 프로토콜
- PPTP
- MS사의 윈도우 NT 서버에서만 동작, PPP(Point-to-Point Protocol)패킷을 IP 패킷으로 캡슐화하여 네트워크에서 전송하는 터널링 기법으로 1:1 통신만 가능하다.
- L2F
- 하나의 터널에 여러개의 연결을 지원하여 다자간 통신이 가능하다.
- TCP가 아닌 UDP프로토콜을 사용한다.
- L2TP
- L2F기반의 PPTP와 호환성을 고려한 터널링 프로토콜
- 다자간 통신 + 터널인증 + IP + X.25 등의 프로토콜을 지원
- 암호화와 압축으로 보안 기능 지원
- 사용자 인증을 지원하고, 터널 유지에 TCP가 아닌 UDP를 사용한다.
3계층 터널링 프로토콜
- IPSec (IP Security)
- IP계층의 보안을 위해 사용되는 터널링 프로토콜
- IP계층에서 서비스하므로 상위 계층 프로그램의 변경이 불필요. 암호화된 패킷은 보통의 I패킷과 동일한 형태이므로 네트워크 상에서 라우팅이 가능하다.
- AH와 ESP를 통해 IP데이터그램의 인증, 무결성, 기밀성 등을 제공한다.
MPLS
3계층 주소(IP주소) 를 이용해 각 라우터가 가진 레이블 정보와 비교하여 부가적인 MPLS 레이블 정보를 덧붙임.
레이블 정보는 각 라우터마다 계속 변경됨
모든 라우터가 MPLS 기능을 수행하는 것이 아니라 일부 지정된 라우터만 수행한다.
패킷의 지연시간을 감소시키고, 높은 수준의 서비스를 지원가능하다.
인증
- 데이터 인증 : MD5, SHA-1 등의 해시 알고리즘을 사용한다.
- 사용자 인증 : Peer-Peer 방식(패스워드 기반 방식) 과 클라이언트-서버 방식(RADIUS : 중앙 서버에서 사용자 인증) 이 존재한다.
IPSec (IP Security)
IP(네트워크) 계층 보안을 위한 표준화
양 종단 간 또는 보안/터널 게이트웨이에 보안 서비스를 제공해 주는 IP 계층 보안 프로토콜이다.
IPv6는 기본적으로 IPSec을 포함한다.
IPSec 동작 모드 : 전송모드 , 터널모드
- 전송모드
- IP패킷 전체를 보호하는 것이 아닌 IP패킷의 페이로드만 보호하는 방식이다.
- 전송 계층에서 전달된 데이터에 대해 IPSec의 헤더를 추가하는 방식이다.
- IPSec의 헤더가 추가되면 IPSec 헤더 + 페이로드를 하나의 IP페이로드로 인식하고 IP계층(네트워크 계층)의 헤더를 붙인다.
- 일반적으로 호스트 대 호스트 간의 패킷 보안에 사용된다.
- 터널 모드
- 전송계층에서 전달된 데이터에 IP계층의 헤더를 붙이고 IPSec 프로토콜의 헤더를 추가로 붙인다.
- 추가로 IPSec의 헤더가 붙었기 때문에 IP주소가 가려지게 되므로 새로운 IP계층의 헤더를 다시 붙인다. 이를 통해 IP패킷 전체를 보호한다.
- 일반적으로 보안/터널 게이트웨이 구간의 패킷 보안을 위해 사용된다.
- 출발지와 최종 목적지 주소 노출이 안되서 좋지만 새롭게 붙여지는 IP헤더에는 보안/터널 게이트웨이의 주소가 붙으므로 이것이 노출될 가능성이 있다.
IPSec의 세부 프로토콜 : AH 프로토콜, ESP 프로토콜
- AH(Authentication Header) 프로토콜
- 발신지의 호스트를 인증하고 IP패킷으로 전달되는 페이로드의 무결성을 보장하기 위한 것
- 메시지 다이제스트를 만들기 위해 해시 함수와 대칭키를 사용한다.
- ESP에서도 동일한 기능이 제공되므로 현재 사용을 자제하고 있다.
- ESP (Encapsulating Security Payload) 프로토콜
- 발신지 인증, 데이터 무결성, 암호화 제공
위 그림에서 보면 맨위는 일반패킷
두번째는 IPSec 사용시 전송모드에서의 패킷
세번째는 터널모드에서의 패킷 형태이다.
ESP HDR(헤더)에는 보안 파라미터 인덱스, Sequence number(재전송공격 방지에 사용)가 들어가고 , ESP Trailer에는 패킷 정보등이 들어간다.
ESP 의 인증 데이터가 ESP Auth에 들어간다.
→ 전송 모드의 경우 전송계층의 데이터와 ESP 트레일러가 암호화되고, 터널 모드의 경우 원본 IP패킷 전체와 ESP 트레일러가 암호화된다.
SSL/TLS (Secure Socket Layer)
SSL이 원래 이름이고 SSL3.0을 표준화 시킨 것이 TLS이다.
클라이언트 - 서버 환경에서 TCP 기반의 어플리케이션에 대한 종단간 보안 서비스를 제공하기 위해 만들어진 전송계층 보안프로토콜이다. 즉, 인터넷 상에서 데이터 전송시에 안전하게 데이터가 오갈 수 있도록 도와주는 레이어라고 할 수 있다.
각 어플리케이션이 SSL을 사용할 경우 그렇지 않은 경우와 구분하기 위해 고유한 포트를 할당한다.
예를들어 https(443/tcp), smtps(465/tcp), ftps(990/tcp), telnets(992/tcp)
→ 기밀성(대칭키 암호화 방식 사용), 무결성(메시지 인증코드 MAC을 이용하여 송수신 메시지의 무결성 확인), 인증(공개키 인증서를 이용하여 서버 - 클라이언트 상호간 인증)을 제공한다.
- Handshake 프로토콜
- 양 종단간 보안 파라미터를 협상하는 프로토콜
- Change Cipher Spec 프로토콜
- 양 종단간에 협상된 보안 파라미터를 사용 가능하게 적용시키기 위한 프로토콜
- Alert 프로토콜
- SSL/TLS 통신 과정의 오류 통보하는 프로토콜
- Application Data 프로토콜
- application layer의 데이터를 전달하기 위한 프로토콜
- Record 프로토콜
- 협상된 보안 파라미터를 이용해 실제 암호화/복호화, 무결성 검증 등을 수행하는 프로토콜
- 대칭키 암호 사용하여 상위 프로토콜의 메시지를 암호화하고 타겟 호스트와 통신한다.
암호 스위트 (cipher suite) 방식 사용
적용하는 암호 기술에서 문제가 생기면 전체를 바꾸는 것이 아니라 일부분만 교체하는 방식이다.
하지만 클라이언트와 서버가 서로 같은 기술을 사용해야 하므로 뭐든 자유롭게 고를 수 있지 않고 서로 협의를 해야한다.
SSL/TLS의 상태유지 프로토콜
SSL/TLS는 각 세션과 연결별로 상태정보를 유지하는 프로토콜로서 Full Handshake를 통해 세션을 생성하고, 이 세션 정보를 공유하는 다수의 연결을 Abbreviation Handshake를 통해 생성한다.
세션 정보 : 두 호스트 간의 보안연관, 세션 식별자 등의 보안파라미터 정보
연결 : 실제 통신이 이루어지는 단위, 해당 연결에만 사용하는 임시적 보안 파라미터 정보 저장
SSL/TLS Handshake 프로토콜 동작 과정
- Client → Server에게 Clent_Hello (클라이언트가 서버에 접속하여 [프로토콜 버전, 사용 가능한 Cipher Suite] 들)전달
- 클라이언트의 SSL/TLS 버전, 암호 도구(cipher suite)목록(키교환 및 인증 알고리즘, 대칭 암호 알고리즘, 해시 알고리즘 등) 세션 ID등 전달.
- Server → Client에게 Server_Hello( [선택한 Cipher Suite, 서버 인증서] 를) 전달
- 사용할 SSL/TLS 버전, 암호 도구와 새롭게 생성된 세션 ID 정보 등 전달
- 서버는 필요시 서버의 인증서, 키 교환에 필요한 정보, 클라이언트 인증서 요청 메시지를 전달한다.
- 클라이언트는 키 교환에 필요한 파라미터를 서버에 전달한다. 필요시 요청받은 인증서 등도 보낸다. 또한 서로 협상한 보안 파라미터 정보를 적용했다는 메시지도 보낸다.
- 서버는 협상한 보안 파라미터 정보를 적용했다는 메시지를 클라이언트에게 보내고 협상을 완료한다.
흔히 TCP/IP 4계층에서 보안 관련 프로토콜의 대표적인 예를 보면
- Application Layer - HTTPS, SSH, PGP, S/MIME
- Transport Layer - SSL/TLS
- Network Layer - IPSec, VPN
- Data Link Layer - L2TP
VPN vs SSL/TLS 비교 및 차이점 요약
- 보호 범위:
- SSL/TLS: 특정 애플리케이션(예: 웹 브라우저와 서버 간의 통신)에서 데이터를 암호화하고 보호.
- VPN: 전체 네트워크 트래픽을 보호하여 모든 인터넷 활동을 안전하게 함.
- 작동 레이어:
- SSL/TLS: 전송 계층에서 작동하여 애플리케이션 계층의 데이터를 보호.
- VPN: 네트워크 계층에서 작동하여 IP 패킷 수준에서 보호.
- 사용 목적:
- SSL/TLS: 주로 애플리케이션 간의 안전한 데이터 전송을 위해 사용.
- VPN: 원격 네트워크 접속과 전체 네트워크 트래픽 보호를 위해 사용.
- 구현 방식:
- SSL/TLS: 주로 HTTPS로 웹 사이트와의 안전한 통신을 위해 웹 브라우저에서 많이 사용됨.
- VPN: 터널링 프로토콜(IPsec, OpenVPN 등)을 사용하여 사설 네트워크와의 안전한 연결을 만듦.
SSL/TLS와 VPN은 모두 보안 통신을 위해 사용되지만, SSL/TLS는 주로 애플리케이션 간의 안전한 데이터 전송을 위한 프로토콜이고, VPN은 원격 네트워크 접속과 전체 네트워크 트래픽 보호를 위한 기술이다. SSL/TLS는 특정 애플리케이션 데이터의 보호에 중점을 두고, VPN은 넓은 범위의 네트워크 활동을 보호하는 데 중점을 둔다고 할 수 있겠다.
+
- Application layer와 Transport Layer 사이에는 Application Layer의 데이터를 암호화/복호화 해주는 SSL/TLS 라는 레이어가 있다.
- SSL/TLS는 서버 인증서를 활용하여 세션키를 교환한다.
참고
https://ddongwon.tistory.com/58
https://vnfmsehdy.blogspot.com/2016/08/27-vpn-ipsec-ssltls.html
'CS > 네트워크' 카테고리의 다른 글
HTTP vs HTTPS 외 프로토콜 종류 (0) | 2024.01.19 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본지식] 04- Http 메서드 (0) | 2023.10.07 |
[모든 개발자를 위한 HTTP 웹 기본지식] 03- Http 기본 (0) | 2023.10.07 |
[모든 개발자를 위한 HTTP 웹 기본지식] 01- 인터넷 네트워크 (0) | 2023.10.03 |
[네트워크] 웹풀스택과정 4W_10 _01: Server (0) | 2023.08.08 |