Fingerprints are the new cookies
지문이 쿠키를 대체하는 추적 수단이 되고 있습니다
브라우저와 기기의 하드웨어·소프트웨어 특성을 조합하면 쿠키를 지우거나 VPN을 써도 사용자를 구별하는 지문(fingerprint)을 만들 수 있습니다. 글은 정보 엔트로피로 식별 원리를 설명하고 브라우저별 방어책을 소개하며, 댓글에서는 실제 추적의 안정성과 지문 수집의 법적 범위를 두고 의견이 엇갈립니다.
- 주제
AI 요약
쿠키를 지우고 VPN을 켜도 웹사이트가 같은 사용자를 알아볼 수 있을까요? 이 글은 브라우저 지문(browser fingerprinting)을 이용하면 쿠키나 IP 주소에만 의존하지 않고 기기를 식별할 수 있다고 설명합니다. 페이지의 데모는 기기에서 얻은 몇 가지 값을 해시로 묶어 별명으로 표시합니다. 값을 조금만 바꿔도 데모 결과는 달라지지만, 상용 추적 시스템은 일부 값이 바뀌어도 동일 인물인지 이어서 판단하도록 더 복잡하게 설계될 수 있다고 글은 덧붙입니다.
쿠키 논쟁 뒤에 남은 추적
글은 Google의 서드파티 쿠키 정책 변화를 세 단계로 풍자합니다. 2019년에는 쿠키가 나쁜 홍보 요인이 됐고 Safari와 Firefox는 이미 쿠키를 차단했습니다. 이듬해 Google은 쿠키를 없애겠다고 약속했지만, Privacy Sandbox는 반독점 우려를 낳았고 널리 쓰이지 않았습니다. 결국 Google은 쿠키를 유지하는 방향으로 돌아섰고, 글은 이어 광고 제품에서 기기 지문을 사용할 수 있게 됐다는 점을 비판합니다.
쿠키는 HTTP처럼 상태를 기본으로 유지하지 않는 프로토콜에서 로그인 세션 등을 이어 주는 용도도 있습니다. 글이 문제 삼는 대상은 쿠키라는 기술 자체보다, 여러 사이트에서 이용자를 추적하고 데이터를 모아 프로파일을 만드는 관행입니다. 수집된 정보가 광고를 넘어 개인의 활동이나 대화 정보와 결합될 수 있다는 점도 우려합니다.
지문은 어떤 값을 조합하나요?
브라우저 지문에 쓰이는 정보는 크게 네트워크 요청과 페이지에서 실행하는 코드 환경으로 나뉩니다. 요청에는 IP 주소, User-Agent, Accept-Language 등이 담깁니다. IP 주소는 이동통신망이나 공유 Wi-Fi, VPN, 인터넷 서비스 제공자의 주소 변경 때문에 지속적인 식별자로 쓰기 어렵지만, 다른 정보와 함께 쓰면 단서가 됩니다.
웹페이지의 JavaScript는 별도 권한 팝업 없이도 기기 특성을 측정할 수 있습니다. 예를 들어 GPU 모델과 드라이버, WebGL 동작, CPU 특성, 메모리 크기, 화면 해상도와 픽셀 비율, 오디오 처리 결과, 설치된 글꼴과 시간대 등을 확인할 수 있습니다. 최신 Chrome이나 특정 Mac처럼 흔한 조건도 여러 측정값과 조합하면 후보군을 줄입니다. 전 세계에서 완전히 하나뿐인 지문을 만들 필요는 없습니다. 추적 대상 표본 안에서 사람들을 구분할 만큼만 고유하면 됩니다.
글은 이 과정을 정보 엔트로피로 설명합니다. 후보가 100명일 때 질문의 답이 절반을 남기면 1비트의 정보를 얻습니다. 128명 중 한 명만 가진 특성은 그 사람이 해당할 때 7비트의 식별 정보를 줍니다. 다만 특성들이 서로 독립적이지 않으면 비트를 단순히 더할 수 없습니다. 예를 들어 콧수염 유무와 성별은 연관될 수 있으므로 실제 후보군 감소량은 단순 계산과 달라집니다.
방어 방식과 한계
글은 지문 방어법을 두 가지로 정리합니다. Brave는 측정값에 작은 변화를 주는 farbling을 적용해 지문이 일관되게 유지되지 않도록 합니다. Tor Browser와 Mullvad Browser는 사용자들이 비슷한 모습으로 보이도록 맞추는 방식을 택합니다. 글은 Chrome과 Edge의 기본 보호가 주로 사이트 간 데이터 격리에 머물고, Safari와 Firefox도 지문 추적을 완전히 막지는 못한다고 설명합니다. EFF의 Cover Your Tracks로 브라우저 지문을 확인할 수도 있습니다.
확장 프로그램이나 Firefox의 Resist Fingerprinting 기능은 사이트를 깨뜨릴 수 있고, 흔하지 않은 설정 자체가 식별 신호가 될 수도 있습니다. 글은 브라우저 엔진에 내장된 보호가 확장 프로그램보다 효과적이라고 봅니다. 데모가 사용하는 값은 OfflineAudioContext의 오디오 처리 결과, WebGL과 Canvas 렌더링, Intl 설정, navigator의 CPU 코어 수·메모리·언어 정보 등입니다. 각 값을 SHA-256으로 해시한 뒤 별명과 동물을 고릅니다.
Hacker News 반응
- @1a527dd5 — 제 반응은 늘 두 가지입니다. 먼저 기술적으로 멋지다고 생각하고, 다음으로 사생활을 끔찍하게 침해한다고 느낍니다. 제가 일하는 곳에서도 fingerprint.com 도입을 잠깐 검토했지만, CDN 계층에서 JA3/JA4를 쓰기로 했습니다.
- @blooalien — 쿠키 자체가 나쁜 것은 아닙니다. 다른 도구처럼 악용될 수 있지만, 많은 나쁜 사람들이 다른 사람을 희생시켜 자신을 부유하게 만들려고 남용합니다. 쿠키는 상태를 유지하지 않는 HTTP(S)에서 페이지 요청 사이의 상태를 보존하는 문제를 해결합니다. 이제는 공개 시스템의 거의 모든 기능을 악의적인 행위자가 악용하지 못하게 하거나, 악용한 사람을 확실히 찾아내 처벌해야 하는 새롭고 거의 불가능한 문제가 생겼습니다.
- @cesarb — 브라우저에 쿠키가 없거나 쿠키를 거부할 수 있었던 시절에 어떻게 했는지 기억 못 하시나요? 서버 소프트웨어가 세션 식별자를 담은 PHPSESSID 매개변수를 링크마다 자동으로 붙였습니다.
- @TylerE — RFC 2109는 PHP와 비슷한 것이 나오기 전부터 있었습니다. Netscape는 RFC보다 3년 먼저 쿠키를 도입했고, 사실상 인터넷 사용자 대부분이 썼습니다. PHPSESSID는 2000년 PHP 4에서야 등장했습니다. 꼬투리를 잡으려면 사실부터 맞게 말해야 합니다.
- @crote — 이건 이미 EU에서 불법입니다. 동의 배너는 쿠키가 아니라 추적을 위한 것이었습니다. 반대로 로그인에만 쓰고 사생활을 침해하는 추적에는 쓰지 않는 쿠키라면 배너가 필요 없습니다.
- @zejn — “쿠키가 아니니까 괜찮다”는 식으로 빠져나갈 수 있다고 생각하는 사람이 늘 있습니다. 그렇지 않습니다. 지문 수집은 단말 장비의 속성과 값을 열거하는 일이고, 그러려면 명시적 동의가 필요합니다. 드문 예외가 있을 수 있지만, 그런 경우라면 직장에 법무팀도 있을 겁니다. GDPR도 사람의 프로파일링에 추가 제한을 둡니다.
- @howunfortunate — 익명화된 패턴을 걱정하는 이유를 정말 모르겠습니다. 독재 정부가 걱정되는 건 이해할 수 있고, 도박 중독이 있다면 광고가 걱정될 수도 있습니다. 하지만 비식별 패턴에 관한 사생활 우려는 이해가 안 됩니다.
- @floorsthelimit — 방문한 모든 웹사이트가 사용자를 정확히 알아보고, 클릭한 링크와 본 콘텐츠를 영원히 기록해도 정말 괜찮으신가요?
- @howunfortunate — 인용문이 말하듯 완전히 비식별 상태가 보장된다면 정말 괜찮습니다. 이름과 연결되지 않은 데이터에 관한 걱정이나, 나중에 비식별 상태가 깨질 위험은 이해합니다. 제가 혼란스러운 건 그 이야기가 아닙니다.
- @legitster — 이런 이야기가 나올 때마다, 이 방식은 대부분 비실용적이고 상업적 추적이 실제로 이뤄지는 방식도 아니라고 말하고 싶습니다. 오늘 지문을 시연할 수 있다고 해서 며칠 뒤에도 같은 지문을 유지한다는 뜻은 아닙니다. 광고나 추적에 쓰려면 안정성이 필요합니다. 상업용 지문 서비스 90%는 여전히 IP 주소에 주로 의존합니다. IP를 빼면 볼륨 설정, 설치된 글꼴, 소프트웨어 버전처럼 며칠 안에 바뀌는 값만 남습니다. 제삼자 업체가 실제로 판매하는 것은 전화번호, 이메일, 사용자 ID처럼 더 안정적인 데이터와 연결하는 기능입니다.
- @meowface — 전반적으로 맞는 말이지만, 일반 광고 추적이 아니라 정보보안과 부정행위 방지를 위한 지문 수집의 추격전을 놓치고 있습니다. 그쪽은 훨씬 더 복잡하고, 사이버 범죄자의 새 기법과 대응책, 브라우저 개발자의 완화 조치에 맞춰 계속 바뀝니다.
- @Cider9986 — 지문 추적은 사생활에 정말 나쁘고 방어책도 부족합니다. Tor Browser는 막아 주지만, Brave처럼 사용성이 높은 브라우저 가운데 추적을 막아 주는 것이 있는지는 모르겠습니다.
- @eks391 — 저는 수년간 Brave로 지문을 흐려 왔습니다. 인기 브라우저 다섯 개를 EFF의 Cover Your Tracks로 비교한 뒤 골랐습니다. 다만 2단계 인증을 쓰는 사이트가 매번 새 기기로 판단해서 컴퓨터를 쓸 때마다 휴대전화를 곁에 둬야 합니다. 꽤 불편합니다.
- @snazz — 정말 인상적인 데모입니다. 같은 하드웨어와 소프트웨어 버전을 쓰는 사람들, 예를 들어 같은 iOS 버전의 iPhone 사용자들을 어떻게 구별하는지 궁금합니다. 여러 ISP에서 VPN을 쓰거나 Apple의 비공개 모드 추적 방지 기능을 켰는데도 세션을 연결했습니다.
- @ranger_danger — “정말 인상적인 데모”라면 이 링크를 보세요. https://abrahamjuliot.github.io/creepjs/
- @MathMonkeyMan — 저는 Gentle Owl이었습니다. VPN에 연결하고 같은 브라우저에서 비공개 창을 열었으며 창도 최대화하지 않았습니다. 이제 Nosy Toucan으로 바뀌었습니다. 글의 요점은 여전히 유효하지만, 이번에는 그 방법이 통하지 않았습니다.
- @Guvante — 글에서 비공개 창은 별개의 사용자로 인식될 수 있다고 설명합니다.
- @byte_0 — Brave가 광고 차단과 사생활 보호에 좋다는 이야기는 들었습니다. 하지만 광고 회사에서 돈을 받아 특정 광고만 보여 준다는 글도 봐서 신뢰가 가지 않습니다. 사실을 확인할 자료가 있을까요?
- @pnw — EFF 지문 검사에서 Brave는 Firefox보다 좋은 결과를 냈습니다. Brave에서는 무작위화된 지문이라고 나왔지만 Firefox와 Edge에서는 고유한 지문이라고 나왔습니다.
- @unicornfinder — 그 검사는 믿기 어렵습니다. Brave는 값을 무작위화하지만 추적을 막는 데는 충분하지 않고, GPU 모델과 드라이버 버전 같은 값도 그대로 노출합니다. Brave의 보호 기능이 있어도 Fingerprint.com에서는 잘 식별될 가능성이 있습니다.
- @MiroslavPokorny — 유일한 해결책은 제삼자 광고를 금지하는 것입니다. 나머지는 효과가 없는 타협입니다.
- @anthonyIPH — 저는 수년간 부정행위 방지 업무를 했습니다. 기기 지문이 부정행위를 막지는 못했지만 비용을 높였습니다. 우회하기 어렵지는 않아도 사기꾼에게 약간의 수고를 더하게 만들었고, 여러 플랫폼에서 손쉬운 사기와 악용을 찾아 차단하는 데 도움을 줬습니다.
- @drnick1 — 문제는 JavaScript와 그 구현입니다. 일반 HTML은 지문 수집 기회를 거의 주지 않습니다. JavaScript는 선택과 붙여넣기를 막거나 하드웨어, 시간대, 언어를 알아내는 등 사용자 브라우저에 지나치게 많은 권한을 줍니다. 이런 기능은 기본적으로 허용하면 안 되고, 하드웨어 가속 등은 사이트마다 명시적으로 허용해야 합니다.
- @Vinnl — JavaScript가 없어도 실행 시간, HTTP 헤더, 조건부 CSS 등이 있습니다.
원문: royfish.dev / 번역·요약: Trawling