VPN 유출과 위장 검사

유출은 VPN이 구축하는 터널을 빠져나가는 당신에 대한 모든 측정값입니다. 옛 경로를 계속 이동하는 값, 또는 웹페이지가 터널을 완전히 우회하여 브라우저에 직접 물을 수 있는 값입니다. 위장 검사는 그 짝이 되는 테스트입니다. 사이트는 수집할 수 있는 모든 측정값 — 주소, 시계, 언어, 하드웨어, 리졸버 — 을 가져와 서로 비교하며, 비밀이 아닌 모순을 찾습니다. 위장은 하나의 값이 잘못되어 보여서 실패하는 경우가 거의 없습니다. 일치해야 할 두 값이 일치하지 않아서 실패합니다. 두 절반을 모두 브라우저 지문 테스트에서 직접 실행하고, 설정을 하나 바꾸기 전에 페이지가 가져갈 수 있는 측정값의 전체 목록은 웹사이트가 당신에 대해 아는 것에서 읽어보세요.

VPN은 정확히 한 가지를 바꾼다

VPN은 하나의 기계적인 일을 하며, 그것을 잘합니다. 트래픽을 출구 서버로 가는 암호화된 터널에 감싸고, 당신이 방문하는 사이트는 당신 대신 그 서버를 봅니다. 공용 IP 주소가 바뀝니다. 그 주소에 붙은 도시와 나라도 함께 바뀝니다. 그 주소를 소유한 네트워크 — 보통 가정용 광대역 회선이 아니라 호스팅 회사나 VPN 제공업체 — 도 바뀝니다. 당신의 유일한 질문이 “이 사이트는 내가 어느 주소에서 온다고 생각하는가?”였다면, 작동하는 VPN은 그에 완전히 답하며, 이 글의 어떤 내용도 그와 모순되지 않습니다.

다른 모든 것은 정확히 있던 자리에 남습니다. 기기는 움직이지 않습니다. 화면 크기, 그래픽 칩, 설치된 글꼴, 배터리 동작, 오디오 스택, 그리고 브라우저 지문으로 결합되는 수십 가지 작은 하드웨어 및 소프트웨어 측정값은 터널이 열리기 전과 후가 동일합니다. 시계는 움직이지 않으므로 시스템 시간대는 당신이 실제로 있는 곳을 계속 보고합니다. 브라우저와 운영체제의 언어는 움직이지 않습니다. 쿠키, 로그인한 계정, 탐색 기록은 움직이지 않습니다. 터널은 패킷의 경로를 바꾸며, 그 끝의 기계를 다시 꾸미지 않습니다.

이 분열이 대부분의 “VPN 탐지”가 잘못 명명된 이유입니다. 일반적인 경우 누구도 VPN 프로토콜, 터널, 암호화된 연결을 탐지하지 않았습니다. 탐지된 것은 불일치입니다. IP는 한 나라를 주장하고 시계는 다른 나라를 주장하며, 주소는 데이터 센터에 속하는데 지문은 가정용 노트북을 묘사하고, 언어 목록은 결코 여행하지 않는 여행자를 묘사합니다. 사이트는 움직인 층과 움직이지 않은 층 사이의 간격을 채점합니다. 따라서 유출을 이해하는 것은 사실 터널에 관한 것이 아니라, 터널이 남기고 간 모든 것을 감사하는 것입니다.

WebRTC: 터널 주변을 걷는 주소

WebRTC는 페이지 내 음성, 영상, 피어 투 피어 데이터 뒤에 있는 브라우저 기술입니다. 두 브라우저를 직접 연결하려면 먼저 각각에 어떻게 도달할 수 있는지 발견해야 하며, 그 발견 과정을 ICE라고 합니다. 쉽게 말하면, 브라우저는 후보 — 자기 자신의 가능한 주소 — 를 모아 상대방에게 제시합니다. 일부는 스스로에게 물어 배우고, 다른 일부는 STUN 서버에 간단한 질문을 하여 배웁니다. “당신이 앉은 곳에서 보면, 나는 어느 주소에서 걸고 있습니까?” 답은 서로 다른 후보 유형으로 돌아오며, 그 차이가 유출 이야기의 전부입니다.

호스트 후보는 기기가 직접 보유한 주소입니다. 역사적으로 라우터가 준 192.168 같은 로컬 네트워크 주소입니다. 서버 반사 후보는 STUN 서버가 관찰한 공용 주소, 즉 외부 세계가 보는 주소입니다. WebRTC가 새로웠을 때 페이지는 두 가지를 자유롭게 수집할 수 있었고, 두 가지 고전적인 유출이 생겼습니다. LAN 주소는 사이트에 쓸모가 없음에도 빠져나갔고, 더 나쁜 것은 브라우저가 VPN 터널 밖이나 옆에서 STUN 서버에 물을 때 반사 후보가 위장 뒤의 실제 공용 주소를 드러냈다는 점입니다. VPN은 웹 트래픽에 대해 완벽하게 작동하고 있는데, 옆 채널이 숨기고 있던 것을 조용히 공개하고 있었습니다.

현대 브라우저는 이를 크게 좁혔습니다. Chrome과 Firefox는 이제 일반적으로 호스트 주소를 무작위 mDNS 이름 — 실제 LAN IP 대신 회전하는 .local 호스트 이름 — 으로 대체하므로, 페이지는 라우터로 다시 연결할 수 없는 후보를 봅니다. 구현은 브라우저와 버전마다 다르고, 일부는 WebRTC를 터널을 통해 올바르게 라우팅하며, 기업용이나 확장 프로그램으로 변경된 설정은 또 다르므로, 두 개의 정직한 테스트가 의견이 다를 수 있습니다. 무딘 수정은 주의해서 다루세요. WebRTC를 완전히 비활성화하면 유출은 멈추지만 정당한 통화도 깨집니다. 반면 후보를 “속인다”고 약속하는 확장 프로그램은 종종 그럴듯한 주소를 그럴듯하지 않은 주소로 바꾸며, 그럴듯하지 않은 후보 자체가 위장 검사가 채점할 수 있는 모순입니다.

DNS: 집에 남은 리졸버

방문하는 모든 이름은 무엇인가가 연결되기 전에 주소로 번역되어야 하며, 그 번역은 리졸버가 합니다. 브라우저나 시스템이 인터넷 제공업체가 할당한 리졸버 — 터널 밖에서 직접 도달 — 를 계속 사용하면, 모든 조회가 동시에 두 가지 방식으로 유출됩니다. 조회 자체는 일반 DNS 트래픽의 평문 패턴으로 ISP에 가서, 뒤따르는 페이지가 VPN을 통해 이동함에도 당신이 어떤 이름을 해석하는지 드러냅니다. 그리고 당신을 대신해 어떤 리졸버가 물었는지 관찰할 수 있는 사이트는 당신이 대략 어디에 있는지 알게 되는데, 사람들은 압도적으로 실제 위치와 가까운 리졸버를 사용하기 때문입니다.

그 두 번째 유출은 들리는 것보다 더 미묘하며, 그에 대한 표준 테스트는 우아합니다. 테스트 페이지는 브라우저가 한 번도 존재한 적 없는 이름 — 테스터가 제어하는 도메인 아래의 긴 무작위 하위 도메인 — 을 조회하게 합니다. 이름이 고유하므로 어떤 캐시에도 없기 때문에, 리졸버는 테스터의 권한 있는 서버에 직접 물을 수밖에 없습니다. 그 서버는 이제 리졸버의 주소를 보고, 그 네트워크와 나라를 페이지에 보고할 수 있습니다. EDNS 클라이언트 서브넷 정보를 사용하는 변형은 더 좁힐 수 있는데, 일부 리졸버는 당신 주소 범위의 일부를 쿼리와 함께 친절하게 전달하기 때문입니다. 이 중 어느 것도 터널을 깨뜨릴 필요가 없으며, 당신의 조회가 페이지와 다른 길을 갈 필요만 있습니다.

함정은 대부분 악의가 아니라 구성입니다. 분할 터널 설정은 속도나 로컬 접근을 위해 트래픽의 일부 — 종종 DNS를 포함 — 를 의도적으로 VPN 밖으로 보냅니다. 모든 기기에 ISP 리졸버를 배포하는 라우터는 그 중 하나에서 VPN이 실행되는 동안에도 계속 그렇게 합니다. 자체 암호화 DNS 설정이 있는 브라우저는 시스템과 VPN 제공업체의 리졸버를 모두 우회하여, 하나의 유출을 고치는 동시에 새 리졸버가 출구와 다른 나라에 있을 경우 일관성 문제를 조용히 만들 수 있습니다. 작업 규칙은 이 글의 나머지 부분과 같습니다. 리졸버는 출구가 주장하는 곳에 살아야 하며, 터널을 통해 도달해야 하며, 둘 다 사실인지 아는 유일한 방법은 밖에서 테스트하는 것입니다.

모순: 스스로와 다투는 위장

페이지가 1초 만에 가져갈 수 있는 네 가지 측정값을 생각해 보세요. IP 주소는 당신을 암스테르담에 둡니다. 시스템 시간대는 UTC−5와 아메리카의 한 도시를 보고합니다. 브라우저 언어 목록은 네덜란드에서 거의 사용되지 않는 언어로 시작하며, 네덜란드어는 어디에도 없습니다. 그리고 사용자 에이전트는 Windows 데스크톱을 주장하는데 그래픽 렌더러는 모바일 칩을 지목합니다. 이 값들 중 어느 하나도 단독으로는 아무것도 증명하지 않습니다 — 여행자, 해외 주재원, 가상 머신, 이상한 구성이 매일 무고하게 각각을 만들어 냅니다. 함께 합치면, 그들은 다툽니다. 위장 검사는 단순히 그 다툼을 듣고 가중치를 부여하는 기계입니다.

일부 모순은 너무 자주 반복되어 표준 배터리(검사 세트)가 되었습니다. 시간대 대 IP 국가가 가장 시끄럽습니다. 시계는 페이지가 읽기에 trivial하고 대부분의 VPN 사용자는 그것을 바꾸려는 생각을 결코 하지 않기 때문입니다. 언어 대 IP 국가는 더 부드럽습니다 — 사람들은 합법적으로 제2언어로 탐색합니다 — 하지만 출구 국가 언어의 완전한 부재는 여전히 셉니다. 사용자 에이전트 대 플랫폼은 조잡한 속임수를 잡습니다. 하나의 운영체제를 주장하는 문자열에 대해 터치 지원, 화면 형태, GPU 렌더러가 다른 것을 묘사합니다. 호스팅 ASN 대 주거 이야기는 가장 조용하고 종종 가장 결정적입니다. 출구 주소는 데이터 센터 네트워크에 속하는데, 세션의 다른 모든 것은 현실에서는 광대역 제공업체에서 올 평범한 가정 사용자를 묘사합니다.

이것이 바로 사이트가 실제로 채점하는 것이 단일 값이 아니라 일관성인 이유입니다. 사기 시스템, 남용 필터, 스트리밍 카탈로그는 VPN이 존재한다는 것을 증명할 필요가 거의 없습니다. 위험 수치가 필요하며, 모순은 그에 투입할 저렴하고 견고한 증거입니다. 주소, 시계, 언어, 리졸버, 하드웨어가 같은 이야기를 하는 세션은 여전히 VPN 세션일 수 있습니다 — 하지만 그에 대해 채점할 내부 다툼을 제시하지 않으므로, 말하는 이야기대로 처리됩니다. 반대로 VPN을 전혀 사용하지 않는 사용자도 순수한 지저분함으로 나쁘게 채점될 수 있습니다. 다른 나라에서 이미지화된 업무용 노트북, 외국어로 남겨진 브라우저, 다른 대륙에 있는 기업 리졸버. 검사는 일관성을 측정합니다. 결코 터널을 실제로 측정한 적이 없습니다.

일관되어 보이기 위한 체크리스트

검사자가 당신을 읽는 순서대로 작업하세요. 출구 국가를 먼저 선택하세요, 의도적으로, 그리고 다른 모든 것이 그에 따르게 하세요 — 당신이 선택한 장소와의 일관성은 나중에 꾸민 무작위 출구를 이깁니다. 시스템 시간대를 그 나라에 맞게 설정하세요, 브라우저 시계만이 아니라, 페이지는 시스템 존을 읽기 때문입니다. 브라우저 언어를 맞추세요: 출구 국가의 언어를 맨 앞에 두거나 최소한 목록에 넣고, 가능한 곳에서는 그 언어로 탐색하세요. 각 단계는 층 사이의 다툼 하나를 제거하며, 함께 사이트가 가장 많이 확인하는 모순을 다룹니다.

그런 다음 옆 채널을 닫으세요. WebRTC를 터널 안에 유지하거나, 브라우저 내 통화를 결코 사용하지 않는다면 완전히 끄고 — 그리고 추정하지 말고 브라우저가 실제로 어떤 동작을 하는지 다시 확인하세요. DNS가 터널을 통해 출구 이야기에 맞는 리졸버로 해석되는지 확인하고, 제시하는 이야기가 주거용일 때는 주거용 출구를 선호하세요. 어떤 시계 설정도 데이터 센터 ASN을 고칠 수 없기 때문입니다. 변경할 때마다 브라우저 지문 테스트를 다시 실행하고 사이트가 하듯 읽으세요. 하나의 빨간 깃발을 찾는 것이 아니라, 전체 페이지가 하나의 이야기를 하는지 묻는 것입니다. 이런 테스트가 보여주는 측정값을 수집하지 않고 실행될 수 있는 이유는 개인정보 테스트가 데이터를 보관하지 않는 방법을 보세요.

정직한 단서로 마무리하세요. 보이지 않음을 약속하는 체크리스트는 당신에게 거짓말을 하고 있기 때문입니다. 일관성은 모순을 제거합니다. 정체성을 제거하지는 않습니다. 브라우저 지문 — 첫 번째 섹션에서 가만히 있던 하드웨어, 글꼴, 그래픽, 설정의 조합 — 은 여전히 방문과 주소를 넘어 기기를 골라낼 수 있으며, 당신의 행동, 계정, 습관은 어떤 네트워크 측정값보다 더 신뢰할 수 있게 당신을 식별합니다. 일관된 위장은 우연한 탐지의 비용을 높이고 쉽고 자동화된 종류를 막습니다. 시간을 두고 행동을 관찰할 수 있는 단호한 관찰자에 맞서서는, 그것은 결코 보장이 아니었으며, 그런 보장을 당신에게 파는 도구나 제공업체는 더 신뢰할 것이 아니라 덜 신뢰해야 합니다.

출처 및 추가 읽기

자주 묻는 질문

VPN이 내 지문을 숨기나요?

아니요. VPN은 사이트가 보는 주소를 바꾸며, 그 뒤의 기기에 대해서는 아무것도 바꾸지 않습니다. 화면, 그래픽 렌더러, 글꼴, 언어, 시간대 및 나머지 지문 측정값은 터널이 켜져 있든 꺼져 있든 동일하므로, 지문은 서로 다른 출구와 주소를 넘어 세션을 연결할 수 있습니다. 지문 값을 숨기거나 무작위화하는 것은 브라우저 수준의 별도 문제입니다 — 그리고 잘못 무작위화된 값은 자체 모순을 만들며, 이는 브라우저 지문 테스트가 주장된 플랫폼과 실제 렌더러가 일치하지 않을 때 보여주는 바입니다.

ISP를 신뢰한다면 DNS 유출이 위험한가요?

VPN을 무엇을 위해 원했는지에 달려 있습니다. 제공업체를 신뢰하고 다른 출구 주소만 원했다면 DNS 유출은 별로 중요하지 않을 수 있습니다 — 다만 리졸버는 에코 테스트를 실행하는 모든 사이트에 여전히 실제 국가를 드러내어, 다른 해가 없더라도 위장을 깨뜨릴 수 있습니다. 제공업체가 당신이 어떤 이름을 해석하는지 보지 않기를 원했다면, 유출은 그 목적을 완전히 무너뜨립니다. 조회 패턴이 탐색 패턴의 윤곽이기 때문입니다. “위험한”은 잘못된 프레임입니다. 올바른 질문은 유출이 당신이 터널을 사서 하려던 바로 그 일을 조용히 취소하는지 여부입니다.

테스트는 내 WebRTC가 괜찮다고 하는데 다른 사이트는 동의하지 않는 이유는 무엇인가요?

보통 두 테스트가 다른 것을 보고 있고, 둘 다 정직하기 때문입니다. 현대 브라우저는 호스트 후보를 회전하는 mDNS 이름 뒤에 가리므로, 한 테스트는 .local 자리 표시자만 보았기 때문에 “IP 유출 없음”이라고 보고하고, 다른 테스트는 후보의 존재 자체, 반사 주소, 또는 후보 국가와 출구 국가의 불일치를 표시합니다. 권한도 중요합니다. 마이크나 카메라 접근 권한을 부여받은 페이지는 그렇지 않은 페이지보다 더 많이 알 수 있으며, 브라우저와 버전은 기본으로 노출하는 것이 다릅니다. 테스터 간의 의견 차이는 각자가 어느 층을 읽는지에 대한 정보이며, 어느 하나가 고장났다는 증거는 아닙니다.