시크릿 모드로도 추적된다 — 브라우저 핑거프린팅의 원리
쿠키를 지우고 VPN을 켜도 사이트가 나를 알아보는 이유. Canvas, WebGL, 폰트, 오디오 등 브라우저 핑거프린팅의 기술적 원리와 현실적인 방어법을 정리합니다.
쿠키를 지웠다. 시크릿 모드를 켰다. VPN까지 돌렸다. 그런데도 쇼핑몰에 들어가면 어제 본 그 상품이 광고로 뜬다.
쿠키가 아니다. IP도 아니다. 사이트가 보고 있는 건 내 브라우저 자체다.
핑거프린팅이 뭔가?
브라우저 핑거프린팅(Browser Fingerprinting)은 쿠키 없이 사용자를 식별하는 추적 기술이다. 원리는 단순하다.
웹사이트에 접속하면 브라우저가 서버에 자기 정보를 보낸다. 화면 해상도, 운영체제, 설치된 폰트, GPU 모델, 시간대, 언어 설정 — 개별로 보면 평범한 정보다. 하지만 이걸 50~200개 조합하면, 세상에 나와 똑같은 조합을 가진 사람이 거의 없다.
지문(fingerprint)처럼 고유하다고 해서 핑거프린팅이다.
EFF(Electronic Frontier Foundation, 미국 전자 프론티어 재단)가 약 47만 개 브라우저를 분석한 결과, 83.6%가 핑거프린팅만으로 식별 가능한 고유한 조합을 가지고 있었다. Flash나 Java가 설치된 경우 94.2%까지 올라갔다.
구체적으로 뭘 수집하나?
핑거프린팅은 하나의 기술이 아니라 여러 벡터(수집 경로)의 조합이다. 주요 벡터를 하나씩 보겠다.
Canvas 핑거프린팅
웹사이트가 보이지 않는 Canvas(그림판) 요소를 만든다. 거기에 텍스트와 도형을 그린 뒤, 결과 이미지를 픽셀 단위로 읽는다.
같은 명령이라도 OS, 브라우저, GPU, 드라이버 버전에 따라 안티앨리어싱(글자 가장자리 부드럽게 처리하는 방식)과 래스터라이제이션(벡터를 픽셀로 변환하는 과정)이 미세하게 다르다. 사람 눈에는 동일한 이미지지만, 픽셀 해시값은 기기마다 달라진다.
Canvas 하나만으로 약 5.7비트의 엔트로피(정보량)를 제공한다는 연구 결과가 있다(Mowery & Shacham, UC San Diego). 5.7비트면 약 52가지 조합 — 이것만으로 사용자를 특정하기엔 부족하지만, 다른 벡터와 합치면 이야기가 달라진다.
WebGL 핑거프린팅
WebGL은 브라우저에서 3D 그래픽을 렌더링하는 API다. Canvas가 2D 그림판이라면, WebGL은 3D 그림판이다.
사이트가 숨겨진 3D 장면을 렌더링하고 결과 이미지를 해시한다. GPU 모델, 드라이버 버전, OpenGL 구현 방식에 따라 렌더링 결과가 달라진다. Canvas보다 하드웨어 의존도가 높아서, 같은 OS·브라우저여도 GPU가 다르면 다른 핑거프린트가 나온다.
거기에 WEBGL_debug_renderer_info라는 확장이 GPU 벤더와 모델명을 직접 반환한다. “NVIDIA GeForce RTX 4070”처럼.
폰트 열거
시스템에 설치된 폰트 목록은 사람마다 다르다. 디자이너는 수백 개 폰트가 깔려 있고, 기본 설치만 한 PC는 100개 안팎이다.
직접 폰트 목록을 뽑는 API는 없다. 대신 우회한다. 특정 폰트로 텍스트를 렌더링한 뒤, 기본 폰트(fallback)와 너비를 비교한다. 너비가 다르면 그 폰트가 설치되어 있다는 뜻이다. 이걸 수백 개 폰트에 대해 반복하면 설치 폰트 목록이 나온다.
오디오 핑거프린팅
AudioContext API로 소리 신호를 생성하고, 그 결과 파형을 읽는다. 실제로 소리가 나는 건 아니다 — 처리 결과만 가져간다. 오디오 처리 파이프라인이 OS와 하드웨어에 따라 미세하게 달라서, 이것도 기기별 고유값이 된다.
나머지 수집 항목들
- 화면 해상도 + 색 깊이:
screen.width,screen.height,screen.colorDepth - 시간대:
Intl.DateTimeFormat().resolvedOptions().timeZone - 언어 설정:
navigator.language - 플랫폼:
navigator.platform(Win32, MacIntel, Linux x86_64 등) - 하드웨어 동시성:
navigator.hardwareConcurrency(CPU 코어 수) - 메모리:
navigator.deviceMemory(기기 RAM 용량) - 터치 지원 여부: 터치스크린 유무와 터치포인트 수
개별 항목은 엔트로피가 낮다. 시간대가 Asia/Seoul인 사람은 수천만 명이다. 하지만 “시간대가 Asia/Seoul이고, 화면이 2560x1440이고, CPU 코어가 16개이고, RAM이 32GB이고, NVIDIA RTX 4070을 쓰고, 나눔고딕·D2Coding·Pretendard가 설치되어 있는 사람”은 — 아마 지구상에 거의 없다.
왜 시크릿 모드와 VPN으로 안 되나?
시크릿 모드가 하는 일은 브라우저를 닫을 때 쿠키와 방문 기록을 삭제하는 것이다. 핑거프린팅이 수집하는 건 쿠키가 아니라 브라우저와 기기의 물리적 특성이다. 시크릿이든 일반이든, GPU 모델은 같고, 설치된 폰트도 같고, 화면 해상도도 같다.
VPN이 하는 일은 IP 주소를 바꾸는 것이다. 핑거프린팅에 IP는 포함되지 않는다. IP가 미국으로 바뀌어도 Canvas 렌더링 결과, WebGL 해시, 폰트 목록은 그대로다.
쿠키 삭제 + 시크릿 모드 + VPN — 이 세 가지를 전부 켜도 핑거프린트는 변하지 않는다. 추적 회사 입장에서는 “IP만 바뀐 같은 사람”으로 보인다.
실제로 얼마나 쓰이고 있나?
핑거프린팅은 이론이 아니다. 2025년 존스홉킨스대·텍사스A&M 공동 연구(ACM Web Conference 2025)에서 실제 웹사이트들이 핑거프린팅을 활용해 세션 간, 사이트 간 추적을 하고 있다는 게 실증적으로 확인됐다.
광고 입찰 시스템(RTB, Real-Time Bidding)이 핑거프린트 기반 프로필을 실시간으로 활용하고 있었고, 사용자가 쿠키를 삭제해도 추적이 지속됐다.
쿠키 기반 추적이 규제(GDPR, 각국 개인정보보호법)와 브라우저 차단으로 점점 어려워지면서, 핑거프린팅은 광고 업계의 대안 추적 수단으로 자리 잡고 있다.
현실적으로 필요한 방어 수준
🟢 일반 사용자 — Brave 쓰면 된다
Brave 브라우저는 설치만 하면 핑거프린팅 방어가 기본으로 켜진다. 작동 방식이 독특하다 — Canvas, WebGL, 오디오 API의 응답값에 세션마다 미세한 랜덤 노이즈를 넣는다. 사이트가 읽어가는 핑거프린트가 매번 달라지기 때문에, 세션 간 추적이 어려워진다.
독립 테스트(PrivacyTests.org)에서 Brave는 프라이버시 관련 156개 항목(상태 분리, 트래커 차단, 핑거프린팅 저항 등) 중 143개를 통과해, 일반 브라우저 중 종합 프라이버시 점수가 가장 높다.
추가 설정 없이 설치만 하면 되는 게 핵심이다. 일반 사용자한테 about:config 들어가서 플래그 만지라고 하는 건 비현실적이다.
🟡 좀 더 신경 쓰고 싶다면 — Firefox 세팅
Firefox에는 두 가지 핑거프린팅 방어 옵션이 있다.
1) 기본 핑거프린팅 차단 — 설정 → 개인 정보 및 보안 → 향상된 추적 방지 기능 → 엄격 선택. 알려진 핑거프린팅 스크립트를 차단한다. 사이트 호환성 문제가 적다.
2) Resist Fingerprinting (RFP) — about:config에서 privacy.resistFingerprinting을 true로 설정. 브라우저가 보고하는 정보를 일괄 위장한다. 화면 해상도를 고정값으로 보고하고, 시간대를 UTC로 바꾸고, 폰트 목록을 제한한다. Tor 브라우저와 같은 접근 방식이다.
다만 RFP를 켜면 부작용이 있다. 시간대가 UTC로 바뀌어서 시간이 9시간 틀어진다. 다크 모드가 안 먹힌다. 일부 사이트 레이아웃이 깨진다. 일상 브라우징에는 불편하다.
🔴 완전한 익명성이 필요하다면 — Tor 브라우저
기자의 취재원 보호, 인권 활동가의 신원 보호처럼 핑거프린트가 신변 위협으로 이어질 수 있는 상황이라면.
Tor 브라우저는 핑거프린팅에 대해 가장 근본적인 접근을 취한다. 모든 Tor 사용자의 브라우저가 동일한 핑거프린트를 보고하도록 만든다. Canvas 읽기를 차단하거나 표준화하고, WebGL의 readPixels를 비활성화하고, 폰트를 사전 정의된 목록으로 제한하고, 타이밍 정보의 정밀도를 낮춘다.
핑거프린팅의 핵심이 “고유한 조합”이니까, 모두를 똑같이 만들어서 고유성 자체를 없애는 전략이다. 독립 테스트에서 실제 핑거프린팅 저항력이 가장 높은 것으로 확인된다.
대신 속도가 느리고, 일부 사이트가 Tor 접속을 차단한다. 일상 브라우저로 쓰기엔 무리가 있다.
직접 확인하는 법
말로만 들으면 와닿지 않는다. 직접 확인해봐라.
-
Cover Your Tracks에 접속 → “Test Your Browser” 클릭. 내 브라우저가 추적에 얼마나 취약한지, 핑거프린트가 얼마나 고유한지 바로 나온다.
-
AmIUnique에 접속 → 각 항목(Canvas, WebGL, 폰트, 시간대 등)별로 내 값이 전체 사용자 중 몇 %에 해당하는지 보여준다.
현재 쓰는 브라우저로 한 번, Brave나 Firefox(엄격 모드)로 한 번 — 둘을 비교하면 핑거프린팅 방어가 실제로 작동하는지 체감할 수 있다.
다만, 선은 분명히 있다
핑거프린팅 방어는 “나에 대한 정보를 내가 통제하겠다”는 정당한 선택이다. 어떤 사이트를 보든, 뭘 검색하든 — 광고 회사가 내 브라우저를 몰래 식별하고 프로필을 만드는 걸 거부하는 건 당연한 권리다.
하지만 이런 기술을 다른 사람을 추적하는 데 쓰는 건 정반대의 행위다. 핑거프린팅 기술 자체가 추적 도구인 만큼, 이걸 “누군가의 기기를 식별하겠다”는 목적으로 쓰면 — 그건 프라이버시 보호가 아니라 프라이버시 침해다.
정리
브라우저 핑거프린팅은 쿠키, IP 주소와 완전히 다른 레이어에서 작동한다. 쿠키를 지우고, 시크릿 모드를 쓰고, VPN을 켜도 — 브라우저가 보내는 Canvas 렌더링, GPU 정보, 폰트 목록, 오디오 처리 결과는 변하지 않는다.
방어의 핵심은 브라우저 선택이다. Brave는 설치만 하면 랜덤 노이즈로 핑거프린트를 흐린다. Firefox는 설정을 올리면 알려진 스크립트를 차단한다. Tor는 모든 사용자를 동일하게 만든다.
지금 쓰는 브라우저가 얼마나 노출되어 있는지 궁금하다면 — Cover Your Tracks에서 30초면 확인된다. 거기서 나온 결과가, 이 글에서 설명한 모든 것의 체감 버전이다.
자주 묻는 질문
- 브라우저 핑거프린팅은 시크릿 모드로 막을 수 있나요?
- 막을 수 없습니다. 시크릿 모드는 쿠키와 방문 기록을 삭제할 뿐, 브라우저가 사이트에 보내는 하드웨어·소프트웨어 정보(화면 해상도, GPU 모델, 설치 폰트 등)는 그대로 노출됩니다. 시크릿이든 일반이든 핑거프린트는 동일합니다.
- VPN을 쓰면 브라우저 핑거프린팅을 막을 수 있나요?
- VPN은 IP 주소를 숨기지만, 핑거프린팅은 IP가 아니라 브라우저와 기기의 고유한 특성을 수집합니다. IP가 바뀌어도 Canvas 렌더링, GPU 정보, 폰트 목록 같은 값은 그대로이기 때문에 VPN만으로는 핑거프린팅을 막을 수 없습니다.
- 브라우저 핑거프린팅을 방어하는 가장 효과적인 방법은 무엇인가요?
- 일반 사용에는 Brave 브라우저가 가장 현실적입니다. 설치만 하면 API 응답에 랜덤 노이즈를 넣어 핑거프린트를 매번 다르게 만듭니다. 완전한 익명성이 필요하면 Tor 브라우저가 모든 사용자의 핑거프린트를 동일하게 만들어 가장 강력한 방어를 제공합니다.
- 내 브라우저가 핑거프린팅에 얼마나 취약한지 확인하는 방법이 있나요?
- EFF의 Cover Your Tracks(coveryourtracks.eff.org)에 접속하면 내 브라우저의 핑거프린트가 얼마나 고유한지 바로 확인할 수 있습니다. AmIUnique(amiunique.org)에서는 각 항목별로 어떤 값이 수집되는지 상세하게 볼 수 있습니다.