특별한 AdGuard VPN 프로토콜의 작동 원리
오랫동안 저희는 광고 차단 앱과 브라우저 확장 프로그램을 개발하는 데 집중했습니다. 2년 전에 저희는 자체 VPN 서비스를 개발하기로 결심했습니다. 자체 VPN을 개발하는 이유는 다음과 같습니다.
-
AdGuard 모바일 앱이 VPN 앱과 호환성 문제가 있었습니다. 그래서 호환성을 보장할 수 있는 자체 VPN을 개발했습니다. 이제 두개의 AdGuard 앱이 하나의 VPN 서비스로 함께 작동할 수 있습니다.
-
둘째, VPN은 저희 회사철학과 굉장히 관련된 서비스였습니다.
-
마지막으로, 수년 동안 AdGuard 소프트웨어를 개발하면서 네트워크 트래픽 필터링 분야에서 전문가가 되었습니다. 그래서 저희는 평범한 VPN과 다른 특별한 서비스를 제공할 수 있었습니다.
경쟁사와 AdGuard VPN 주요 차이점은 기존 프로토콜 대신 자체 VPN 프로토콜을 사용한다는 것입니다.
이 기사에서는 왜 기존 프로토콜에 만족하지 않았는지 왜 자체 프로토콜을 만들었지 살펴보겠습니다.
스포일러: 다른 VPN보다 AdGuard VPN 프로토콜은 감지하기가 어렵고 속도가 빠릅니다.
하지만 먼저 몇 가지 기술적 측면을 보겠습니다.
인터넷 작동 원리
걱정하지 마세요. 인터넷 작동 방법을 자세히 설명하지 않을 것입니다. 제일 중요한 부분만 알려 드리겠습니다. 인터넷상의 모든 통신은 컴퓨터와 서버 간의 작은 데이터 ‘패킷’ 전송을 기반으로 합니다. 이 패킷은 몇 가지 유형으로 구분하며, 각각 패킷이 다양한 용도를 다합니다. 패킷 캡슐화 및 처리 규칙을 프로토콜이라고 합니다.
IP 프로토콜
IP 주소는 네트워크 데이터 전송의 메커니즘인 IP 프로토콜의 일부입니다. 각 패킷은 데이터, 발신자와 수신자의 IP 주소로 구성됩니다.
수신자는 발신자가 누구인지 알고 있으므로 일부 데이터를 다시 돌려보낼 수 있습니다. 하지만 인터넷상에서 전적인 IP 프로토콜은 거의 사용되지 않습니다. 대신에 IP 프로토콜 기반으로 하는 TCP와 UDP 프로토콜이 사용됩니다.
TCP 프로토콜
TCP는 비유하자면 인터넷의 엔진같은 것입니다. 웹 사이트를 방문하면 데이터 전송에 TCP가 사용될 가능성이 큽니다.
TCP 패킷은 4 부분으로 구성됩니다.
-
발신자와 수신자의 주소를 포함한 IP 패킷 헤더.
-
발신자와 수신자의 포트 번호. 운영 체제가 처리를 위해 패킷을 전송할 프로그램을 인식하려면 포트 번호가 필요합니다.
-
패킷 시퀀스 번호. 보낸 패킷은 순서대로 수신자에게 도착하지 않을 수 있습니다. 그래서 시퀀스 번호의 기능으로 인해 패킷들이 올바른 순서로 정렬됩니다.
-
패킷 유형. 이 속성은 아래 설명할 ‘전송 보장’을 구현하는 데 필요합니다.
어떤 네트워크를 사용하든 전송된 패킷 중 일부가 손실될 가능성이 있습니다. 그래서 전송된 각 패킷에 대한 응답으로 수신자는 수신을 승인하는 TCP 영수증 패킷을 전송합니다. 따라서 TCP 프로토콜은 패킷이 목적지에 도달하도록 보장합니다. 발신자가 승인을 얻지 못하면 승인이 최종적으로 수신될 때까지 패킷을 다시 보냅니다.
UDP protocol UDP 프로토콜
UDP는 널리 사용되는 IP 기반 프로토콜입니다. IP 프로토콜과 차이점은 데이터, 발신자와 수신자의 주소를 제외하고 UDP 프로토콜은 포트 번호를 전송한다는 것입니다. 애니메이션에서 볼 수 있듯이 UDP는 전송 승인이 없기 때문에 TCP보다 데이터 패킷을 더 빠르게 전송합니다. 그러나 패킷이 전송될지 보장할 수 없습니다.
VPN 프로토콜 작동 원리
누군가에게 편지나 이메일을 보낼 때 내용, 제목, 서명 없이도 할 수 있지만 받는 사람의 주소 없이는 할 수 없습니다. 마찬가지로 인터넷에서 데이터를 보내려면 IP 주소가 필요합니다.
웹 사이트를 방문하면 IP 주소가 표시되므로 사용자 위치를 파악하는 것은 어렵지 않습니다. VPN을 사용하면 집/직장 또는 스마트폰에서 암호화된 연결을 통해 인터넷의 다른 지점(예. 다른 국가)으로 데이터를 라우팅한 후 공용 인터넷으로 라우팅할 수 있습니다.
암호화로 인해 집 또는 직장 주소 대신 ‘터널’의 다른 쪽 끝에서 가져온 IP 주소가 데이터에 할당됩니다. 이제 웹 서버에 연결하면 실제 IP 주소가 아니라 VPN 엔드 포인트에 속한 다른 사람의 IP 주소가 표시됩니다. 따라서 웹 사이트를 방문하면 개인 정보가 공개되지 않습니다.
이제 기술적인 부분을 살펴 볼까요? VPN이 작동하는 방식은 장치와 VPN 서버간에 데이터가 전송되고 암호화된다는 것입니다. 이 데이터를 전송하고 암호화하는 규칙을 VPN 프로토콜이라고 합니다. 가장 널리 사용되는 VPN 프로토콜은 OpenVPN, WireGuard 및 IPSec입니다. 이 프로토콜은 거의 동일하게 작동하고 기능적으로 매우 유사하지만 암호화 및 연결 설정 방법이 다릅니다.
해당 프로토콜 작동 방식을 살펴보겠습니다. 웹 사이트를 방문할 때 VPN이 활성화된 경우, VPN 서버는 사용자와 웹 사이트 사이를 중재합니다. 먼저는 암호화된 IP 패킷이 서버로 전송됩니다. VPN 서버는 패킷을 해독하고, 발신자 주소(즉, 사용자의 IP)를 변경한 다음, 패킷을 다시 수신자(즉, 웹 사이트)에게 보냅니다. 보통 이는 UDP 전송을 사용하여 수행됩니다. 승인을 기다릴 필요가 없기 때문에 더 빠릅니다.
기존 VPN 프로토콜의 한계
OpenVPN, WireGuard, IPSec 등과 같은 널리 사용되는 모든 VPN 프로토콜에는 두 가지 단점이 있습니다.
- 네트워크 수준에서 쉽게 탐지당하고 차단될 수 있습니다.
- 이 프로토콜을 '숨기기'하면 성능이 저하됩니다.
VPN 사용을 숨기기 위해 데이터 흐름은 종종 TCP 연결로 ‘포장’되며, 때로는 트래픽이 일반 웹 사이트 연결처럼 보이도록 추가로 암호화됩니다. 안타깝게도 이 방식에는 단점이 있습니다. TCP를 사용하기 때문에 전송 승인이 필요합니다.
따라서 널리 사용되는 VPN 프로토콜을 사용하면 항상 문제에 직면 해왔습니다. 그러므로 사용자들은 항상 빠르지만 쉽게 감지되는 프로토콜 또는 느리지만 쉽게 감지되지 않는 프로토콜 둘 중 하나를 선택해야 합니다.
AdGuard VPN 프로토콜의 장점
다른 프로토콜의 단점을 고려하여 자체 프로토콜을 개발했습니다. AdGuard VPN 프로토콜의 장점을 살펴볼까요?
- 일반적인 HTTPS 트래픽과 AdGuard VPN 트래픽을 구별하기는 거의 불가능합니다. 즉, AdGuard VPN 서버에 연결은 일반 웹 사이트의 연결과 정확하게 동일하다는 것입니다.
- 암호화에는 HTTPS(TLS)를 사용합니다. HTTPS(TLS)는 세계에서 가장 널리 사용되는 암호화 방법이며 이를 구현하는 라이브러리는 지속적으로 보안 감사를 받습니다.
일부 기존 VPN 프로토콜도 암호화 작업을 처리하므로 VPN을 사용한다는 사실은 감지하기 어렵습니다. 그러나 그런 경우에는 속도가 느려지겠지만, AdGuard는 여러 솔루션 덕분에 이러한 문제가 없습니다.
-
HTTP/2 전송 프로토콜을 사용하므로 고속을 유지하면서 AdGuard VPN 프로토콜을 감지하는 것은 불가능합니다.
-
다른 프로토콜과 달리 AdGuard VPN 프로토콜은 패킷이 아닌 데이터로 작동합니다. AdGuard VPN은 각 연결에 대해 별도의 ‘터널’을 설정하고, 각 HTTP/2 스트림은 하나의 연결에 해당합니다. AdGuard VPN은 이 터널을 통해 데이터를 전송하고 이를 통해 승인 패킷을 보내지 않음으로써 작업 속도를 높일 수 있습니다. VPN 서버로(또는 서버에서 클라이언트로) 보내기 전에 여러 패킷의 데이터를 하나로 버퍼링 할 수 있기 때문입니다. 또한 패킷 수가 적을수록 승인이 더 적게 필요합니다.
개발 계획
HTTP/3로 전환
첫번째로 저희들이 할 것은 서버와 통신하기 위해 HTTP/3 및 QUIC 프로토콜로 전환하는 것 입니다. HTTP/3는 최신 HTTP 버전입니다. 새로운 프로토콜은 연결 상태가 양호하고 안정적일 때 속도에 영향을 주지 않지만 연결 상태가 나쁠 때(예: 모바일 장치 또는 공용 Wi-Fi에 연결할 때) 그 이점이 나타납니다. 새로운 프로토콜의 장점은 패킷 재전송 및 HoLB(Head of Line Blocking) 대기열을 유발하지 않으며 연결 마이그레이션도 허용한다는 것입니다. 주요 장점은 이미 언급한 것 처럼 나쁜 조건에서 연결 품질이 향상된다는 것입니다.
TCP 및 기타 프로토콜(TLS, SSL, HTTP/1.1 및 HTTP/2)은 한동안 사용되었지만 원활하게 작동하려면 거의 완벽한 조건이 필요합니다. 이 프로토콜은 안정적인 고품질 연결 (예.홈 Wi-Fi 네트워크)을 사용하는 환경에서 잘 작동합니다. 그러나 저품질 연결 (예. 모바일 네트워크)에서는 약한 신호, 느린 연결 및 패킷 손실을 유발하는 기타 문제를 겪을 수 있습니다. 이러한 손실은 재전송 및 HoLB로 이어지고, 5G를 사용하더라도 엘리베이터와 역간 긴 지하철 구간에서는 연결이 나빠질 수 있습니다. 이러한 문제는 HTTP/3를 통한 VPN으로 해결됩니다, 예를 들어 엘리베이터에 들어가거나 다른 이유로 네트워크가 변경 되더라도 VPN 연결이 끊이지 않습니다.
현재 이 새로운 구현의 프로토타입을 테스트하고 있습니다. 몇달 이내 출시될 예정입니다.
오픈 소스
아시다시피 AdGuard 많은 제품이 오픈 소스입니다. 저희 회사는 오픈 소스 소프트웨어의 개념이 사람들을 돕고 기술 개발에 기여한다고 믿기 때문에 지원을 아끼지 않고 있습니다. 하지만 저희 접근 방식은 개인정보보호 친화적이므로 가능한 경우에만 제품을 오픈 소스로 만듭니다.
향후 프로토콜 구현을 공개할 예정입니다. 안타깝게도 지금은 작업이 많기 때문에 프로젝트를 준비할 시간이 충분하지 않으나, 올해 말까지 서버 및 클라이언트 구현 코드를 공개할 수 있기를 바랍니다.
저희 프로토콜은 모든 AdGuard VPN 모바일 및 데스크톱용 프로그램에서 사용됩니다. 여러분의 데이터를 가장 안정적이게 보호하기 위해 AdGuard 제품을 다운로드하세요.
또한 AdGuard 제품에 대한 댓글이나 SNS로 의견을 남겨 주시면 감사하겠습니다.