OpenVPN: TLS 기반 VPN 아키텍처
OpenVPN이 제어 채널에 TLS를 사용하고 데이터 채널에 구성 가능한 암호를 사용하는 방식을 학습합니다.
OpenVPN: TLS 기반 VPN 아키텍처은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
OpenVPN 2채널 아키텍처
OpenVPN은 제어 채널과 데이터 채널이라는 두 개의 별도 채널을 사용합니다. 제어 채널은 TLS를 사용하여 인증, 세션 설정, 구성 교환을 처리합니다. 데이터 채널은 제어 채널을 통해 협상된 대칭 암호로 암호화된 실제 VPN 트래픽을 전달합니다. 이러한 분리를 통해 OpenVPN은 키 관리에 TLS 생태계 전반을 활용할 수 있습니다.
제어 채널: 키 협상을 위한 TLS
OpenVPN 제어 채널은 완전한 TLS 세션을 실행합니다. 양쪽은 공유된 CA가 서명한 X.509 인증서를 사용하여 인증합니다. TLS는 키 교환, 인증서 검증, 데이터 채널 암호 매개변수 협상을 제공합니다. TLS는 ECDHE를 지원하므로 제어 채널은 완전한 순방향 비밀성을 제공합니다. 따라서 CA 키를 알고 있더라도 캡처한 세션에서 데이터 채널 키를 복구할 수 없습니다.
데이터 채널 암호화
데이터 채널 암호화는 TLS 제어 채널을 통해 협상됩니다. OpenVPN 2.4 이상에서는 기밀성과 무결성을 한 번의 연산으로 모두 제공하는 AEAD 암호 AES-256-GCM이 기본값입니다. 이전 버전에서는 AES-256-CBC와 HMAC-SHA256을 별도로 사용했습니다. AEAD 모드는 별도의 MAC 검증이 필요하지 않고 패딩 오라클 공격을 방어하므로 선호됩니다.
tls-crypt: 사전 공유 키로 TLS 래핑
tls-crypt 옵션은 사전 공유 키를 사용하는 대칭 HMAC 인증 봉투 안에 클라이언트 헬로를 포함한 전체 TLS 세션을 넣습니다. 따라서 인증되지 않은 클라이언트는 TLS 핸드셰이크를 시작할 수도 없으며, 초기 패킷이 아무런 응답 없이 삭제됩니다. 이를 통해 OpenVPN 서버를 TLS 기반 DDoS 증폭 공격으로부터 보호하고 VPN 서버가 실행 중이라는 사실을 숨깁니다.
tls-auth와 tls-crypt 비교
이전 방식인 tls-auth 옵션은 TLS 제어 채널 패킷에 HMAC 태그를 추가하지만 패킷을 암호화하지는 않습니다. 따라서 패킷 주입은 방지하지만 관찰자에게 TLS 핸드셰이크가 여전히 노출됩니다. tls-crypt는 제어 채널 래퍼를 암호화하고 인증하여 DoS 방어와 트래픽 분석 방어를 모두 제공합니다. 현재는 tls-crypt를 사용할 것을 권장하며, tls-auth는 tls-crypt-v2를 위해 더 이상 사용하지 않습니다.
인증서 기반 클라이언트 인증
OpenVPN은 VPN의 인증 기관이 서명한 X.509 인증서를 사용하여 클라이언트를 인증합니다. 각 클라이언트에는 고유한 인증서와 개인 키가 발급됩니다. 서버는 인증서 체인을 검증하고, 선택적으로 인증서 폐기 목록(CRL)을 확인하여 폐기된 인증서를 거부할 수 있습니다. 인증서를 폐기하면 해당 클라이언트의 접근 권한이 즉시 제거됩니다. 키를 변경하면 모든 클라이언트에 영향을 미치는 PSK 기반 시스템과는 다릅니다.
UDP와 TCP 전송 비교
OpenVPN은 UDP(기본값이며 권장됨) 또는 TCP를 통해 실행할 수 있습니다. UDP는 패킷 손실이 발생했을 때 TCP 계층과 VPN 애플리케이션 계층 양쪽에서 재전송이 중복되는 TCP-over-TCP 문제를 피하므로 성능 저하가 크게 줄어듭니다. 그러나 일부 네트워크는 UDP를 차단합니다. TCP 포트 443에서 OpenVPN을 실행하면 HTTPS 트래픽만 허용하는 방화벽을 우회할 수 있지만, 패킷 손실 상황에서는 성능이 저하됩니다.
tun과 tap 인터페이스 모드
OpenVPN은 tun(라우팅) 모드 또는 tap(브리징) 모드로 작동합니다. tun 모드는 지점 간 IP 네트워크 인터페이스를 생성하여 클라이언트와 VPN 네트워크 사이에서 IP 패킷을 라우팅합니다. tap 모드는 이더넷 브리지 인터페이스를 생성하여 브로드캐스트와 IP가 아닌 프로토콜을 포함한 이더넷 프레임을 전달합니다. tun 모드는 더 효율적이므로 대부분의 VPN 사용 사례에 적합하며, 네트워크 세그먼트를 브리징하거나 IP가 아닌 프로토콜을 사용해야 할 때는 tap 모드가 필요합니다.
클라이언트 구성을 위한 푸시 지시문
OpenVPN 서버는 연결하는 클라이언트에 구성 지시문을 자동으로 푸시할 수 있습니다. 일반적인 푸시 지시문으로는 push "route 10.0.0.0 255.0.0.0"(클라이언트에 경로 추가), push "dhcp-option DNS 10.0.0.1"(DNS 서버 설정), push "redirect-gateway def1"(모든 클라이언트 트래픽을 VPN을 통해 라우팅)이 있습니다. 이를 통해 개별 클라이언트 구성 파일을 수정하지 않고도 클라이언트 구성 관리를 중앙화할 수 있습니다.
OpenVPN의 완전 순방향 비밀성
OpenVPN은 제어 채널에서 TLS ECDHE(타원 곡선 Diffie-Hellman 임시 키)를 사용하여 완전한 순방향 비밀성을 달성합니다. 각 TLS 세션마다 새로운 임시 키 쌍을 사용하므로 세션 키는 서버의 장기 인증서 개인 키로부터 파생할 수 없습니다. 오늘 암호화된 트래픽을 캡처하고 나중에 서버 인증서를 얻더라도 과거 세션을 복호화할 수 없습니다.
OpenVPN 2.5 이상에서 취약한 암호 폐기
OpenVPN 2.5에서는 역사적으로 기본 암호였던 Blowfish 암호(BF-CBC)를 더 이상 사용하지 않습니다. BF-CBC는 장시간 세션에서 SWEET32 생일 공격에 취약한 64비트 블록 크기를 사용합니다. 최신 OpenVPN의 기본값은 AES-256-GCM입니다. OpenVPN 2.5에서는 데이터 채널의 비 AEAD 암호도 더 이상 사용하지 않으며 TLS 최소 버전 요구 사항을 강화하여 TLS 1.0 및 1.1 지원을 중단했습니다.
OpenVPN 제어 채널과 데이터 채널 비교
OpenVPN 제어 채널의 주요 기능은 무엇입니까?
OpenVPN 아키텍처 요약
OpenVPN 요약: 제어 채널은 인증과 암호 협상에 TLS를 사용하고, 데이터 채널은 협상된 AEAD 암호(기본값 AES-256-GCM)를 사용하며, tls-crypt는 인증되지 않은 핸드셰이크를 방지하도록 TLS를 래핑하고, ECDHE는 순방향 비밀성을 제공하며, 인증서 기반 클라이언트 인증은 CRL 폐기를 지원하고, 성능을 위해 UDP를 TCP보다 우선하며, IP 라우팅 사용 사례에는 tun 모드를 우선합니다.
AI 튜터와 함께 Cryptology Academy을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 67
- 레슨
- 261
자주 묻는 질문
“OpenVPN: TLS 기반 VPN 아키텍처” 강의는 무료인가요?
네 — “OpenVPN: TLS 기반 VPN 아키텍처” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“OpenVPN: TLS 기반 VPN 아키텍처”에서 뭘 배우나요?
OpenVPN이 제어 채널에 TLS를 사용하고 데이터 채널에 구성 가능한 암호를 사용하는 방식을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“OpenVPN: TLS 기반 VPN 아키텍처” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- IPsec: IKEv2, ESP 및 AH 프로토콜
- WireGuard: ChaCha20과 Curve25519 VPN
- OpenVPN: TLS 기반 VPN 아키텍처
- VPN 프로토콜 비교: 보안과 성능