브라우저 핑거프린팅의 프라이버시 악몽
(kevinboone.me)- 브라우저 지문 채취(browser fingerprinting) 는 쿠키나 VPN으로도 막기 어려운 심각한 추적 기술로, 사용자의 환경 정보를 조합해 고유 식별자를 생성
- 운영체제, 브라우저 버전, 언어, 시간대, 폰트, 확장 기능, 캔버스 렌더링 결과 등 다양한 요소가 조합되어 개인 식별 가능성 증가
- JavaScript 비활성화, 브라우저 위장, 캔버스 조작 등 단순한 방어책은 오히려 식별 단서를 남기거나 웹사이트 기능을 깨뜨리는 부작용 발생
- Brave, Mullvad, Librewolf 등 일부 브라우저가 지문 저항 기능을 내장하고 있으나, 완전한 방어는 불가능하며 사용성 저하와 CAPTCHA 증가 등의 불편 초래
- GDPR 등 기존 법률로는 규제 근거가 불명확해, 새로운 입법적 대응 필요성이 제기됨
브라우저 지문 채취의 등장 배경
- 과거에는 서드파티 쿠키가 주요 프라이버시 위협이었음
- 쿠키는 원래 브라우저와 서버 간 지속적 대화를 위한 수단이었으나, 광고 네트워크가 이를 이용해 여러 사이트 간 사용자 정보를 연결
- 유럽에서는 이에 대한 법적 고지 의무가 도입됨
- 브라우저가 쿠키 구분 기능을 개선하면서 쿠키 추적 위험은 줄었지만, 지문 채취(fingerprinting) 가 새로운 위협으로 부상
브라우저 지문 채취의 작동 방식
- 쿠키 없이도 작동하며, VPN 사용 시에도 일정 부분 식별 가능성 유지
- 브라우저가 서버에 제공하는 기본 정보(브라우저 버전, OS, 언어, 시간대 등)를 조합해 고유한 수치 식별자 생성
- JavaScript를 통해 폰트, 확장 기능, 하드웨어 정보 등을 추가로 수집 가능
-
캔버스 지문(canvas fingerprint) 은 브라우저가 텍스트를 그릴 때의 픽셀 차이를 이용해 시스템별 미세한 차이를 식별
- 약 1,000개 브라우저 중 하나만 동일한 캔버스 지문을 가질 정도로 고유성 높음
- 창 크기, 테마, 해상도 등 사소한 설정도 추가 식별 단서로 활용 가능
방어 시도의 한계
- JavaScript 비활성화는 캔버스 지문을 막지만, 오히려 “JavaScript가 꺼져 있음”이라는 희귀한 특징이 새로운 지문 요소가 됨
- 브라우저가 자신을 다른 플랫폼으로 위장(spoofing) 해도, 서버는 다른 신호로 실제 환경을 추정 가능
- 캔버스 조작 등 정교한 위장 기법은 웹사이트 오작동을 유발하거나 추가 흔적을 남김
- 결과적으로 지문 채취는 차단이 매우 어려운 기술로, 추적 기업들이 지속적으로 정교화 중
부분적 대응과 현실적 한계
- amiunique.org 등 테스트 사이트는 실제 추적보다 단순한 환경에서 작동하므로 현실 반영도가 낮음
- 지문이 “고유(unique)”하더라도 시간이 지나면 변할 수 있어, 완전한 추적 지표는 아님
- Brave, Mullvad, Librewolf 등 일부 브라우저가 내장형 지문 저항 기능을 제공
- Librewolf는 Firefox의 저항 기능을 기본 활성화
- Brave와 Mullvad는 서로 다른 방식으로 대응
- 그러나 지문 채취자들도 기술을 고도화하고 있어, 완전한 방어는 불가능
사용자가 취할 수 있는 조치
-
장기 쿠키 삭제 및 VPN 사용은 기본 전제
- VPN은 IP 노출을 막지만, 사용 사실 자체가 지문 요소로 작용 가능
- 브라우저를 기본 상태로 유지하고, 확장 기능·폰트·테마 변경을 최소화
- 대중적인 환경(Windows 11 + Chrome 등) 을 사용할수록 식별 확률 감소
- Mullvad, Librewolf, Firefox(지문 저항 활성화) 등 내장 보호 기능 활용
- 모든 조치를 취해도 추적 확률은 약 99% → 50% 수준으로만 감소
지문 저항의 부작용
- Firefox나 Librewolf에서 지문 저항을 켜면 창 크기 고정, 테마 변경 불가, UI 제약 발생
- 서버가 브라우저를 인식하지 못해 CAPTCHA 빈도 증가
- 일부 웹사이트에서 색상 오류, 텍스트 위치 문제 등 시각적 오작동 발생
법적 불확실성과 규제 필요성
- GDPR은 쿠키에 대한 조항은 있으나, 지문 채취에 대한 명확한 규정은 없음
- 영국 ICO(Information Commissioner’s Office) 는 지문 채취를 부정적으로 평가
- 합법성은 불분명하며, 보안 목적의 합리적 사용을 주장할 여지도 존재
- 현재로서는 새로운 법률 제정이 필요하다는 결론
- 지문 채취는 사용자가 인식할 수 없고, 수집 데이터는 단기적·통계적 성격을 가지지만,
광고 산업의 과도한 추적 행태를 뒷받침하는 주요 수단으로 지적됨
결론
- 브라우저 지문 채취는 기술적으로 탐지하기 어렵고, 법적으로도 회색지대에 있는 프라이버시 위협
- 현 기술 수준에서는 완전한 방어가 불가능하며, 입법적 규제와 브라우저 수준의 대응 강화가 필요
- 광고 산업의 추적 관행이 지속되는 한, 인터넷 환경은 프라이버시 침해 위험이 상존함
Hacker News 의견
-
예전에 Chrome에서 “이 언어는 번역하지 않기”를 누를 때마다 그 언어가 Accept-Language 헤더에 자동으로 추가되는 걸 발견했음
수동으로 설정하지 않았는데도, Chrome이 그 선택을 모든 요청에 지속적으로 포함시켰음
이 조합이 나만의 고유한 언어 순서로 구성되어 있어서 지문 추적(fingerprinting) 에 매우 유용한 신호가 될 수 있다고 느낌
관련 제안도 있었지만 채택되지 않았음 → reduce-accept-language 제안서- Chrome이 “번역하지 않기”를 선택하면 사용자가 그 언어를 읽을 수 있다고 가정해서 헤더에 추가하는 걸까 하는 생각이 듦. 흥미로운 부분임
- Chrome 쓰지 말라는 공익성 경고(PSA) 를 하고 싶음
- 제안서 내용을 보면, 브라우저가 사이트 대신 언어 협상을 하자는 아이디어였는데, 현실적으로 말이 안 된다고 생각함. 다국어 사이트라면 그냥 사용자에게 언어 선택 UI를 보여주면 됨
- YouTube 자막 언어가 엉뚱하게 표시되는 문제를 겪었는데, 여러 기기에서 접속했지만 주로 Chrome을 쓸 때 이런 현상이 있었음
- Google이 uBlock Origin을 막은 시점 이후로, Chrome과 프라이버시는 양립 불가능하다는 게 명확해졌다고 생각함
관련 글: HN discussion
-
Firefox + Arkenfox user.js 조합이 프라이버시 측면에서 가장 강력하다고 생각함
쿠키 자동 삭제, canvas 지문 위조, 타임존 UTC 고정 등 Tor 브라우저 수준의 보호를 제공함
DNS 레벨에서 광고·트래킹 도메인을 차단하고, uBlock Origin이나 uMatrix로 3rd-party 콘텐츠를 기본 차단함- 하지만 이런 설정을 쓰는 사람이 소수라면 오히려 그 자체가 지문이 됨
Tor처럼 다수가 동일한 설정을 써야 의미가 있음
혼자만 이런 마스킹을 쓰면 오히려 더 눈에 띄게 됨 - GPU 이름이나 WebRTC로 노출되는 내부 IP도 숨길 수 있는지 궁금함
게다가 많은 지문 스크립트가 1st-party 도메인에서 로드되기 때문에 완전한 차단은 어려움 -
Orion Browser(Kagi) 는 기본적으로 지문 수집 스크립트를 차단함
참고: Orion privacy guide - 자바스크립트 기반의 안티-지문 기술은 오히려 고유성을 높이는 결과를 낳을 수 있음
- Arkenfox 설정이 Firefox의
privacy.resistFingerprinting플래그보다 더 강력한지 궁금함. 설명된 기능들이 이미 그 플래그로 활성화되는 것 같음
- 하지만 이런 설정을 쓰는 사람이 소수라면 오히려 그 자체가 지문이 됨
-
지문 추적은 식별 특성과 트래킹을 혼동하는 경우가 많음
타임존을 UTC로 바꾼다고 해서 추적이 불가능해지는 건 아님
IP, GeoIP 등 더 강력한 신호가 존재함
가족이 같은 IP를 쓰면서 각자 다른 브라우저 설정을 하면 오히려 더 추적하기 쉬워짐
진짜 추적을 피하려면 VPN 회전과 요청 헤더 랜덤화를 병행해야 함
단순히 익명성을 원한다면 Tor 브라우저를 쓰는 게 가장 효과적임 -
브라우저 지문 수집 원리를 더 알고 싶다면 내가 쓴 글을 참고할 수 있음
Browser Fingerprinting Explained- 사이트 간 일관된 지문이 유지되기 때문에 3rd-party 쿠키와 동일한 프라이버시 문제가 발생함
-
글에서 빠졌지만, 초창기 지문 진단 도구로 Cover Your Tracks (EFF)가 있음
- 하지만 EFF를 완전히 신뢰하지 말라는 의견도 있음
-
글의 요점에 동의함. 지문 추적은 개인의 자유에 대한 큰 위협임
동시에 콘텐츠 제작자가 정당한 보상을 받아야 한다고 생각함
광고 기반 모델은 효율적이지만 프라이버시를 대가로 함- 사실 광고사가 “창작자 보상”이라는 명분으로 우리를 속인 것 같음
대부분의 블로거는 큰 수익을 얻지 못하고, 광고사만 돈을 벌고 있음
예전처럼 무료 콘텐츠 중심의 인터넷이 더 건강했다고 생각함 - 해결책은 간단함. 맥락 기반 광고(contextual ads) 로 돌아가면 됨
- 문제는 광고 자체가 아니라 트래킹임
나를 추적한다고 광고 효율이 높아지는 것도 아님
오히려 필요 없는 제품 광고만 반복됨
오프라인 매장에서 얼굴 인식으로 맞춤 광고를 하는 것처럼 소름 끼치는 경험임 - “월 5달러 구독” 대신 조회당 결제(pay-per-view) 모델은 어떨까 생각함
광고비가 제품 가격에 포함되지 않으면 전체적으로 더 저렴해질 수도 있음 -
익명 마이크로페이먼트가 가능하다면, 감시 문제뿐 아니라 DDoS 방어까지 해결할 수 있음
페이지뷰당 1센트씩 지불하고, 서버 부하에 따라 가격이 오르는 구조를 상상해봄
- 사실 광고사가 “창작자 보상”이라는 명분으로 우리를 속인 것 같음
-
데이터 분류 수업에서 했던 게임이 떠오름
“이 방의 모든 사람을 식별하려면 몇 개의 예/아니오 질문이 필요할까?”
이런 식으로 브라우저 지문도 몇 가지 신호만으로 사람을 좁혀나감
예를 들어 “Linux + Firefox + 왼쪽 모니터” 조합만으로도 이미 수만 명 단위로 좁혀짐- 하지만 질문이 서로 상관관계가 높으면 정보량이 줄어듦
예를 들어 “긴 머리?”와 “여성?”은 비슷한 정보를 담고 있어서 추가적인 비트가 거의 없음
반면 “메탈헤드?” 같은 질문은 드물게 ‘예’가 나올 때 많은 정보를 줌 - “예/아니오 질문만 해야 하지 않나?”라는 단순한 의문도 제기됨
- 하지만 질문이 서로 상관관계가 높으면 정보량이 줄어듦
-
문제의 핵심은 우리가 자바스크립트가 또 다른 자바스크립트를 불러 실행하는 구조를 기본값으로 만든 것임
Stallman이 옳았음- 하지만 JS 자체가 문제라기보다, WebRTC나 WebGL 같은 기술이 허가 없이 실행되며 지문 수집에 악용되는 게 더 큰 문제라고 봄
- 나이가 들수록 RMS가 얼마나 자유의 전사였는지 깨닫게 됨
- 다만, 많은 지문 스크립트가 Cloudflare나 Akamai 같은 1st-party 도메인에서 실행되므로 단순히 JS를 막는다고 해결되진 않음
- 브라우저는 마치 트로이 목마를 끌어들이는 멍청한 병사처럼 작동함
- JS를 완전히 막으면 웹의 절반이 깨지므로 현실적인 대안은 아님. JS 없이도 지문 추적은 가능함
-
브라우저가 어떤 정보를 노출하는지 확인하려면 Am I Unique? 사이트가 유용함
-
지문이 유용하려면 고유성뿐 아니라 지속성(persistence) 이 필요함
매번 폰트를 랜덤하게 설치·삭제하면 오늘의 나와 내일의 나를 연결할 수 없지 않을까?- 하지만 연구에 따르면, 시간이 지나며 지문이 변해도 99.1% 정확도로 동일 사용자로 추정할 수 있음
참고: EFF 연구 PDF, Mullvad 설명 - 실제로는 특정 폰트가 설치되어 있는지만 확인할 수 있고, 전체 목록을 얻을 수는 없음
Chrome의queryLocalFontsAPI는 권한 팝업이 필요함 - 너무 비현실적인 지문을 제출하면 오히려 위조 탐지로 인해 또 다른 지문이 됨
관련 만화: xkcd 1105 - 쿠키, SSL 핸드셰이크의 타원곡선 지문, GDPR/CCPA 기반의 익명 페르소나 분류 등으로 결국 다시 연결됨
요즘은 페이지 로드 중 5ms 이내에 사용자가 어떤 페르소나에 속하는지 결정됨
다만 대부분의 데이터 플랫폼은 90일 이후 데이터를 자동 삭제해 GDPR 준수를 유지함
- 하지만 연구에 따르면, 시간이 지나며 지문이 변해도 99.1% 정확도로 동일 사용자로 추정할 수 있음