TRACIO의 식별 시스템은 130개 이상의 브라우저 신호로부터 안정적인 방문자 식별자를 생성합니다. 이 식별자는 세션, 시크릿 모드, VPN 변경, 쿠키 삭제에 걸쳐 유지됩니다. 이 페이지에서는 전체 식별 파이프라인을 설명합니다.
클라이언트는 10개 카테고리에 걸쳐 130개 이상의 서로 다른 브라우저 신호를 수집합니다. 각 신호는 하드웨어 특성부터 렌더링 동작에 이르기까지 브라우저와 기기의 서로 다른 측면을 조사합니다.
| Group | Signals | Stability | Examples |
|---|---|---|---|
| Hardware | 12 | Very High | Screen resolution, device memory, hardware concurrency, touch support |
| Rendering | 9 | High | Canvas fingerprint (text + geometry), WebGL renderer, audio processing |
| Fonts | 5 | High | Available system fonts (69 families tested), font preferences, MathML rendering |
| Platform | 25 | Medium | User-Agent, navigator properties, timezone, language, vendor |
| CSS Engine | 10 | Medium | Media query responses (color scheme, HDR, reduced motion, forced colors) |
| Storage | 10 | Medium | Cookie support, localStorage, sessionStorage, storage quota |
| WebGL | 9 | High | GPU vendor, renderer (unmasked), shader precision, extension support |
| Network | 3 | Low | Connection RTT, TURN probe, app version |
| Bot Indicators | 15 | N/A | Webdriver flag, automation frameworks, eval length, headless markers |
| Custom | 14 | Varies | Math fingerprint, WASM features, architecture detection |
모든 신호가 식별에 똑같이 유용한 것은 아닙니다. 신호는 안정성에 따라 분류됩니다.
1계층(고정): 거의 변하지 않는 하드웨어 및 렌더링 신호. Canvas 지문, WebGL 렌더러, 오디오 지문, GPU 매개변수, 폰트 열거, 수학 연산, 아키텍처 바이트.
2계층(준안정): 브라우저 업데이트나 구성 변경에 따라 변하는 신호. User-Agent, Client Hints, 플러그인, CSS 미디어 쿼리, 스토리지 기능.
3계층(휘발성): 자주 변하는 신호. 화면 해상도(모니터 변경), 시간대(이동), 언어 설정, 연결 속성.
방문자 ID는 안정성과 확장성의 균형을 맞추는 3계층 해싱 시스템을 사용하여 계산됩니다.
Visitor ID = [Tier1Hash][Tier2Hash][Tier3Hash] 20 chars 10 chars 10 chars ──────── ──────── ──────── base62 base62 base621계층은 하드웨어와 렌더링 엔진에 내재된 고정 신호만을 사용합니다. 이 신호들은 사용자가 다른 물리적 기기로 전환하거나 중대한 하드웨어 변경을 할 때만 변합니다.
포함되는 신호: Canvas 지문 해시, WebGL 렌더러(unmasked), WebGL 벤더(unmasked), 오디오 지문, 폰트 열거 해시, WebGL 매개변수 해시, 수학 연산 해시, 아키텍처 바이트(ARM vs x86).
알고리즘:
key1=value1|key2=value2|... (키는 알파벳순 정렬)1계층은 의도적으로 고정되어 있습니다. 1계층에는 새로운 신호가 절대 추가되지 않으며, 이를 통해 서버 업데이트 전반에 걸쳐 아이덴티티 코어가 안정적으로 유지됩니다.
2계층은 브라우저와 OS 환경을 포착합니다. 이 신호들은 사용자가 브라우저를 업데이트하거나, 확장 프로그램을 설치하거나, 시스템 설정을 변경할 때 변합니다.
포함되는 신호: User-Agent 데이터, Client Hints(브랜드, 플랫폼, 아키텍처), navigator 속성(벤더, 플랫폼, 언어), 플러그인 목록, 화면 색 심도, 디바이스 메모리, 하드웨어 동시성.
3계층은 세션 간에 변할 수 있는 휘발성 신호를 포착합니다. 이 신호들은 신뢰도 점수 산정과 퍼지 매칭에 사용되지만 핵심 아이덴티티에는 영향을 주지 않습니다.
포함되는 신호: 화면 해상도, 시간대, 언어, DOM 차단기, 스토리지 기능, CSS 미디어 쿼리 응답, 연결 속성.
각 계층은 128비트 출력을 생성하는 빠른 비암호화 해시 함수인 MurmurHash3-x64-128로 해싱됩니다. 알고리즘은 다음과 같습니다.
MurmurHash3는 뛰어난 분포(입력의 모든 비트가 출력의 모든 비트에 영향을 줌)를 제공하며, 실시간 계산에 충분할 만큼 빠릅니다. 암호학적으로 안전하지는 않지만, 지문 해싱에는 그러한 안전성이 필요하지 않습니다.
Input: "canvas=abc123|webgl_renderer=ANGLE|audio=0.04852" ↓ MurmurHash3-x64-128Output: 0x7f4a8c2d1e3b5f6a 0x9d8c7b6a5e4f3d2c ↓ base62 encodeResult: "X7fh2Hg9LkMn3pQr5tBv"신뢰도 점수(0.0에서 1.0)는 방문자 식별에 대한 시스템의 확신 정도를 나타냅니다.
_vid_t 쿠키가 알려진 방문자와 일치하면 신뢰도는 1.0으로 설정됩니다. 쿠키에는 방문자의 UID가 담겨 있으며, 서버는 이를 자체 레코드에 대해 검증합니다. 이는 가장 빠르고 신뢰할 수 있는 식별 경로입니다.
이전 레코드가 없는 신규 방문자는 0.90의 신뢰도 점수를 받습니다. 비교할 기존 레코드가 없으므로 잘못된 매칭의 위험이 없습니다.
쿠키 일치가 없는 재방문자의 경우, 시스템은 다음을 기반으로 신뢰도를 계산합니다.
신호 빈도 가중치(IDF): 전 세계 모집단 전반에서 더 고유한 신호일수록 더 높은 가중치를 받습니다. 희귀한 WebGL 렌더러는 흔한 화면 해상도보다 식별력이 높습니다.
퍼지 매칭: 시스템은 비트 수준의 해밍 거리를 사용하여 현재 지문을 저장된 지문과 비교합니다. 신호는 계층별로 그룹화되며, 각 계층의 일치 점수는 독립적으로 가중됩니다.
이력 일관성: 방문자의 신호가 여러 방문에 걸쳐 안정적이었다면 신뢰도가 상승합니다. 신호가 자주 변동하면 신뢰도가 하락합니다.
| Scenario | Typical Score | Explanation |
|---|---|---|
| Cookie match | 1.000 | _vid_t cookie UID verified server-side |
| First visit | 0.900 | No prior records to compare |
| Strong fingerprint match | 0.990-0.999 | All Tier 1 signals match, most Tier 2 match |
| Partial match (browser update) | 0.950-0.989 | Tier 1 matches, Tier 2 changed (new UA) |
| Weak match (significant changes) | 0.850-0.949 | Some Tier 1 signals changed |
| Ambiguous | 0.500-0.849 | Multiple possible matches in database |
TRACIO는 세션 전반에 걸쳐 방문자 아이덴티티를 유지하기 위해 퍼스트파티 쿠키(_vid_t)를 사용합니다.
_vid_tSameSite=Lax, HTTPS에서는 Secure(HttpOnly는 아님 — 에이전트가 클라이언트 측에서 읽음)쿠키는 서버 측(Set-Cookie 응답 헤더를 통해)과 에이전트에 의한 클라이언트 측 양쪽에서 발급되며, 쿠키가 차단된 경우를 대비한 폴백으로 UID가 localStorage에도 복제됩니다.
서버는 점점 더 넓은 도메인 범위에 쿠키를 설정하려고 시도합니다.
app.example.com → example.com → com쿠키를 성공적으로 설정할 수 있는 가장 넓은 도메인이 사용됩니다. 이를 통해 쿠키가 서브도메인 전반에 걸쳐 유지됩니다.
TRACIO는 1계층 신호가 일치하는 해시를 생성할 때 동일한 기기의 서로 다른 브라우저에서 동일한 사람을 식별할 수 있습니다. 1계층은 하드웨어 및 렌더링 특성(canvas, WebGL, 오디오, 폰트)에 의존하므로, 이러한 신호는 동일한 머신에서 Chromium 기반 브라우저 간에는 종종 동일하며, 엔진(Chromium vs Firefox vs Safari) 간에는 일치도가 떨어집니다. 데스크톱 방문자를 모바일 방문자에 매칭하는 것은 기대되지 않습니다 — 하드웨어와 렌더링 표면이 다르기 때문입니다.
브라우저 간 매칭은 본질적으로 신뢰도가 낮은 작업이며, 점수 산정에서도 그에 맞게 처리됩니다.