브라우저가 데이터를 유출하고 있어요 — 막는 방법

· 2026-03-31 업데이트됨 · nologin.tools
privacy browser guide analysis

Hero image

새로운 시크릿 탭을 열어봐요. 쿠키도 없고, 방문 기록도 없고, 로그인도 안 한 상태예요. 익명처럼 느껴지죠.

하지만 전혀 그렇지 않아요.

EFF의 Panopticlick 연구에 따르면, 브라우저의 83.6%가 고유한 핑거프린트를 가지고 있어요. 쿠키를 하나도 설정하지 않고도 방문하는 모든 사이트에서 신원을 파악할 수 있는 수준이에요. 브라우저 플러그인까지 포함하면 이 수치는 94.2%까지 올라가요. 시크릿 모드는 아무 소용이 없고, 쿠키를 지워도 마찬가지예요.

실제로 무엇이 유출되고 있고, 어떻게 대응할 수 있는지 알아봐요.

브라우저가 실제로 보내는 정보

페이지를 로드할 때마다 브라우저는 자신에 대한 방대한 정보를 자동으로 전송해요. JavaScript가 실행되기도 전에, HTTP 요청 헤더가 이미 브라우저 이름과 버전, 운영체제, 선호 언어, 인코딩 지원 정보를 노출하고 있어요. 어떤 확인이나 동의도 없이 자동으로 이루어지는 일이에요.

JavaScript는 상황을 훨씬 악화시켜요. 사이트는 화면 해상도(작업 표시줄이 차지하는 부분 포함), 정확한 시간대, CPU 코어 수, 기기 메모리 용량(2의 제곱수로 반올림되지만 여전히 유용해요), 선호 색상 테마를 읽을 수 있어요. 이것들 모두 권한 팝업이 필요 없어요.

FingerprintJS 같은 현대적인 핑거프린팅 라이브러리는 브라우저당 100개 이상의 개별 속성을 수집해요. 이것들을 해시값으로 합치면 세션을 넘어서도, 같은 기기의 다른 브라우저에서도, 심지어 시크릿 모드에서도 유지되는 식별자가 만들어져요. FingerprintJS는 쿠키가 삭제된 후에도 재방문자를 99.5% 정확도로 재식별할 수 있다고 주장해요.

불편한 진실은, 많은 사람들이 “프라이버시 보호”라고 생각하는 것들—쿠키 삭제, VPN 사용, 시크릿 모드—이 핑거프린팅에는 전혀 효과가 없다는 거예요. 그것들은 다른 문제에 대한 해결책이에요.

WebRTC 문제 (VPN이 도움이 안 되는 이유)

WebRTC는 브라우저 내 화상 통화를 구현하는 API예요. Google Meet, Discord, Zoom 웹 버전이 모두 이것을 사용해요. 브라우저 간에 직접 P2P 연결을 맺어야 하기 때문에 실제 네트워크 주소를 알아야 해요.

문제는 이거예요. 어떤 웹사이트든 몇 줄의 JavaScript만으로 WebRTC 연결 시도를 트리거할 수 있어요. 사용자 상호작용도, 권한도 필요 없어요. 피어 간 가장 빠른 경로를 찾기 위해 WebRTC는 ICE(Interactive Connectivity Establishment)라는 프로토콜을 사용하는데, 공개 STUN 서버에 연락해요. 그 STUN 서버 응답에 실제 공인 IP 주소가 포함되어 있어요.

VPN은 이것을 차단하지 못해요. WebRTC 트래픽은 UDP를 사용하며, 브라우저의 HTTP 트래픽과 다른 방식으로 OS 네트워크 계층에서 처리돼요. 대부분의 VPN 구현은 단순히 이것을 가로채지 않아요. VPN이 실행 중이어도 웹사이트는 아래 코드로 1초 안에 실제 IP를 알아낼 수 있어요.

const pc = new RTCPeerConnection({iceServers:[{urls:"stun:stun.l.google.com:19302"}]});
pc.createDataChannel("");
pc.createOffer().then(o => pc.setLocalDescription(o));
pc.onicecandidate = e => { /* your real IP is in e.candidate.candidate */ };

이것이 WebRTC 유출이에요. 상용 핑거프린팅 SDK, 광고 기술 플랫폼, 사기 방지 시스템 모두에서 기록된 문제예요.

차단 방법: Firefox는 about:config에서 media.peerconnection.enabledfalse로 설정해 WebRTC를 완전히 비활성화할 수 있어요. 다만 브라우저 내 화상 통화가 안 되는 트레이드오프가 있어요. uBlock Origin의 고급 설정에는 “WebRTC가 로컬 IP 주소를 유출하는 것 방지” 옵션이 있는데, 더 덜 파괴적이에요——WebRTC는 작동하면서 로컬 IP 노출만 차단해요. Brave는 기본적으로 쉴드 패널에서 로컬 IP 유출을 차단해요.

IPLeak을 통해 현재 브라우저가 노출하고 있는 WebRTC ICE 후보를 확인해 유출 여부를 검증할 수 있어요.

DNS 유출: VPN의 또 다른 구멍

브라우저에 도메인을 입력하면 DNS 리졸버가 IP 주소로 변환해요. VPN을 사용하고 있다면 그 쿼리는 VPN 터널을 통해 VPN 제공자의 리졸버로 가야 해요——ISP가 아닌 곳으로요.

DNS 유출은 VPN에도 불구하고 쿼리가 ISP로 가는 경우예요. 방문한 모든 도메인이 VPN 여부와 상관없이 ISP에 노출돼요. 트래픽 내용은 암호화되어 있지만, ISP는 화요일 저녁 9시 14분에 example.com에 방문했다는 것을 알 수 있어요. 이것만으로도 상세한 행동 프로파일을 만들기에 충분해요.

DNS 유출은 몇 가지 기술적인 이유로 발생해요. Windows에는 스마트 멀티홈 이름 확인이라는 기능이 있어 사용 가능한 모든 네트워크 어댑터에 동시에 DNS 쿼리를 보내고 가장 빠른 응답을 사용해요. 쿼리가 VPN 리졸버와 ISP 리졸버 양쪽에 동시에 가는 거예요. 많은 VPN 클라이언트가 이 동작을 올바르게 재정의하지 못해요.

IPv6도 흔한 원인이에요. 많은 VPN이 IPv4 트래픽만 터널링해요. 라우터와 OS가 IPv6를 지원하면 그 경로의 DNS 쿼리는 VPN 터널을 완전히 우회해요.

일부 ISP는 투명한 DNS 프록시를 운영해 상황을 악화시켜요. 포트 53의 모든 아웃바운드 UDP 트래픽을 가로채 1.1.1.1이나 8.8.8.8로 설정했어도 자신들의 리졸버로 리다이렉트해요.

유출 테스트 방법: DNS Leak Test에서 확장 테스트를 실행해요. 고유한 서브도메인들에 DNS 쿼리를 보내고 어떤 리졸버가 응답하는지 확인해요. 결과에 VPN 제공자가 아닌 ISP 서버가 표시되면 유출이 확인된 거예요.

수정 방법은 설정에 따라 다르지만, 브라우저에서 DNS over HTTPS(DoH)를 활성화하는 것이 합리적인 시작점이에요. 시스템 리졸버를 완전히 우회할 수 있어요. Firefox는 “설정 → 개인 정보 및 보안 → HTTPS를 통한 DNS”에서 설정할 수 있어요. 시스템 리졸버로의 폴백을 방지하려면 “최대 보호”로 설정하세요.

Canvas 및 오디오 핑거프린팅 (더 소름 돋는 부분)

WebRTC를 차단하고 DNS를 보호했더라도, 네트워크에 전혀 의존하지 않는 핑거프린팅 카테고리가 있어요. 하드웨어가 그래픽을 렌더링하는 방식의 미세한 차이를 이용하는 거예요.

Canvas 핑거프린팅은 이렇게 작동해요. 스크립트가 보이지 않는 <canvas> 요소에 텍스트와 도형을 그린 다음 픽셀 데이터를 읽어요. 출력 결과는 GPU 모델, GPU 드라이버 버전, OS, 폰트 렌더링 엔진에 따라 미묘하지만 측정 가능한 차이가 생겨요. macOS는 CoreText, Windows는 DirectWrite, Linux는 FreeType을 사용하는데 각각 다른 서브픽셀 안티에일리어싱 처리를 해요. 2014년 학술 논문 “The Web Never Forgets”는 당시 상위 10만 개 웹사이트 중 5%에서 Canvas 핑거프린팅이 사용된다는 것을 발견했어요. 그게 10년도 더 전 얘기예요.

오디오 핑거프린팅도 비슷해요. 스크립트가 AudioContext를 만들고 오실레이터를 분석기에 통과시켜 출력값을 읽어요. 하드웨어가 오디오를 처리할 때 생기는 미세한 부동소수점 차이가 세션을 넘어서도 개인을 식별할 만큼 일관성이 있어요. 마이크 접근 권한은 전혀 필요 없어요.

Canvas와 WebGL 핑거프린트 두 신호를 합치면 각각 약 15비트 이상의 엔트로피를 가져요. 약 32,768개 브라우저 중 하나만 같은 Canvas 핑거프린트를 공유한다는 의미예요. 화면 해상도, 시간대, CPU 코어 수, User-Agent와 결합하면 샘플 크기는 1이 돼요.

아이러니하게도, 프라이버시 확장 프로그램을 설치하면 식별하기 쉬워질 수 있어요. 특정 확장 프로그램 세트와 함께 uBlock Origin을 “중간 모드”로 실행하는 소수의 사람 중 하나라면, 그 구성 자체가 식별 신호가 돼요.

지금 바로 테스트해보기

무언가를 바꾸기 전에, 실제로 무엇을 노출하고 있는지 확인해볼 가치가 있어요.

EFF의 Cover Your Tracks가 가장 좋은 시작점이에요. 수백만 개의 실제 핑거프린트 데이터베이스와 비교해 브라우저가 얼마나 독특한지를 속성별 엔트로피 점수와 함께 알려줘요. “브라우저가 고유한 핑거프린트를 가지고 있어요”는 식별 가능하다는 의미이고, “강력한 보호”는 브라우저가 다른 많은 브라우저들과 동일하게 보인다는 의미예요——이게 실제 목표예요.

BrowserLeaks는 더 깊이 들어가요. WebRTC 유출, Canvas 핑거프린트, WebGL 세부 정보, 설치된 폰트, TLS 핑거프린팅 등의 개별 테스트 페이지가 있어요. WebRTC 테스트부터 시작하세요——가장 놀라운 결과가 나올 가능성이 높아요.

PrivacyTests는 전 Firefox 프라이버시 엔지니어가 운영하며, 20개 이상의 프라이버시 테스트에서 브라우저를 비교해요. 특정 브라우저를 테스트하는 것보다 표준화된 시나리오에서 Chrome, Firefox, Brave, Safari, Tor Browser를 비교하는 것에 가까워요. 브라우저를 바꿀지 결정하기 전에 읽어볼 만해요.

실제로 효과 있는 방법

솔직히 말하면, 모든 것을 고치는 단일 설정은 없어요. 하지만 다음 변경 사항들은 측정 가능하고 문서화된 효과가 있어요.

브라우저를 바꾸기. 이게 가장 임팩트 있는 변화예요. Brave는 기본적으로 WebRTC 로컬 IP 노출과 Canvas 핑거프린팅을 차단해요——매 세션마다 Canvas/오디오 출력에 랜덤 노이즈를 추가해 사이트 간 상관 관계를 불가능하게 만들면서도 웹을 망가뜨리지 않아요. privacy.resistFingerprinting = true를 설정한 Firefox는 다른 접근 방식을 취해요. 모든 것을 일반 브라우저처럼 보이도록 정규화해요 (고정 화면 크기 1000×900, UTC 시간대, 일반적인 UA 문자열). 이렇게 하면 해당 설정을 활성화한 모든 Firefox 사용자와 동일하게 보여요——이게 올바른 모델이에요.

브라우저Canvas FPWebRTC IPDNS-over-HTTPS서드파티 쿠키
Chrome없음유출선택 사항부분 차단
Firefox (기본)없음유출선택 사항엄격 (ETP)
Firefox (RFP)랜덤화비활성화선택 사항엄격
Brave랜덤화차단됨선택 사항차단됨
Tor Browser통일화비활성화해당 없음 (Tor 사용)차단됨

uBlock Origin 설치하기. Firefox에서는 중간 모드를 사용해요 (기본적으로 모든 서드파티 스크립트 차단, 필요에 따라 화이트리스트 추가). 고급 설정에서 “WebRTC가 로컬 IP 주소를 유출하는 것 방지”를 활성화해요. 이렇게 하면 대부분의 핑거프린팅 스크립트가 실행되기 전에 차단돼요. Chrome에서는 Google의 Manifest V3 변경이 확장 기능 역량을 더 제한하기 전에 사용하세요.

DNS over HTTPS 활성화하기. Firefox와 Chrome 모두 이제 네이티브로 지원해요. Cloudflare(1.1.1.1) 또는 NextDNS를 사용하세요. 특히 NextDNS는 브라우저가 어떤 도메인을 해석하는지 정확히 볼 수 있어서 페이지에서 무엇이 실행되는지 감사하는 데 유용해요.

User-Agent 고정하기. 최초 Panopticlick 연구에 따르면 UA 문자열만으로도 약 10.5비트의 엔트로피를 가져요. Firefox의 privacy.resistFingerprinting이 자동으로 처리해줘요. Chrome에서는 UA-CH API(User-Agent Client Hints)가 기존 UA 문자열을 점차 대체하고 있는데, 엔트로피를 줄이려는 의도였지만 롤아웃이 일관적이지 않아요.

Tor Browser는 핑거프린팅 저항의 황금 표준이에요. 핑거프린트 가능한 모든 속성을 모든 Tor 사용자가 동일하게 보이도록 정규화해요——같은 UA, 같은 화면 크기, 같은 폰트, 같은 시간대. 목표는 차단이 아니라 균일성이에요. 모든 Tor Browser 사용자는 동일하게 보여요. 핑거프린팅 비용을 높이는 게 아니라 진정으로 무력화하는 유일한 접근 방식이에요.

대부분의 사람들에게는, Brave나 uBlock Origin을 설치한 Firefox가 실제로 사용하는 사이트를 망가뜨리지 않으면서 80%의 보호를 달성해줘요. 합리적인 트레이드오프예요.

스스로 완전히 해결할 수 없는 건 TLS 핑거프린팅이에요——브라우저가 HTTPS 핸드셰이크 중 보내는 암호 스위트 순서와 TLS 확장 값이 HTTP 이전의 네트워크 레벨에서 브라우저를 식별하기에 충분해요. Cloudflare와 기타 CDN은 이미 JA3 해시(표준화된 TLS 핑거프린트)를 봇 탐지에 사용하고 있어요. 어떤 브라우저 확장 프로그램도 이 레이어에 접근할 수 없어요. 해결 가능한 문제이지만, 브라우저 자체만이 고칠 수 있어요.

웹에는 대부분의 사용자가 인식하는 것보다 훨씬 많은 감시 인프라가 내장되어 있어요. 좋은 소식은 몇 가지 구체적인 변화——더 나은 브라우저, 확장 프로그램 하나, DNS over HTTPS 활성화——로 유출을 의미 있게 줄일 수 있다는 거예요. Cover Your Tracks로 시작해서 결과를 확인하고, 무엇을 감수할 수 있는지 결정해보세요.

마지막으로 한 가지 더 말씀드리면, 프라이버시를 가장 잘 존중하는 도구들은 신원 확인을 요구하지 않는 것들이에요. 회원가입 없이 사용할 수 있는 프라이버시 친화적인 도구들은 프로필이 없기 때문에 세션 데이터를 프로필에 연결할 수 없어요. 얼마나 많은 유능한 로그인 불필요 도구들이 있는지 알고 싶다면, nologin.tools가 엄선된 목록을 유지하고 있어요——이미지 편집기부터 파일 공유, 개발자 도구까지, 모두 계정 생성 없이 사용할 수 있어요. 효율성을 잃지 않으면서 온라인 발자국을 줄이는 실용적인 방법이에요.