Hệ thống nhận dạng của TRACIO tạo ra một mã định danh khách truy cập ổn định từ hơn 130 tín hiệu trình duyệt. Mã định danh này tồn tại qua các phiên, chế độ ẩn danh, thay đổi VPN và việc xóa cookie. Trang này giải thích toàn bộ pipeline nhận dạng.
Client thu thập hơn 130 tín hiệu trình duyệt riêng biệt thuộc 10 danh mục. Mỗi tín hiệu thăm dò một khía cạnh khác nhau của trình duyệt và thiết bị, từ đặc điểm phần cứng đến hành vi kết xuất (rendering).
| Nhóm | Tín hiệu | Độ ổn định | Ví dụ |
|---|---|---|---|
| Hardware | 12 | Rất cao | Độ phân giải màn hình, bộ nhớ thiết bị, số luồng phần cứng, hỗ trợ cảm ứng |
| Rendering | 9 | Cao | Canvas fingerprint (văn bản + hình học), WebGL renderer, xử lý âm thanh |
| Fonts | 5 | Cao | Phông chữ hệ thống có sẵn (đã kiểm 69 họ), tùy chọn phông, kết xuất MathML |
| Platform | 25 | Trung bình | User-Agent, thuộc tính navigator, múi giờ, ngôn ngữ, nhà cung cấp |
| CSS Engine | 10 | Trung bình | Phản hồi media query (bảng màu, HDR, giảm chuyển động, màu bắt buộc) |
| Storage | 10 | Trung bình | Hỗ trợ cookie, localStorage, sessionStorage, hạn ngạch lưu trữ |
| WebGL | 9 | Cao | Nhà cung cấp GPU, renderer (không mặt nạ), độ chính xác shader, hỗ trợ extension |
| Network | 3 | Thấp | RTT kết nối, thăm dò TURN, phiên bản ứng dụng |
| Bot Indicators | 15 | Không áp dụng | Cờ webdriver, framework tự động hóa, độ dài eval, dấu hiệu headless |
| Custom | 14 | Thay đổi | Math fingerprint, tính năng WASM, phát hiện kiến trúc |
Không phải tất cả tín hiệu đều hữu ích như nhau cho việc nhận dạng. Tín hiệu được phân loại theo độ ổn định:
Bậc 1 (Đóng băng): Tín hiệu phần cứng và kết xuất gần như không bao giờ thay đổi. Canvas fingerprint, WebGL renderer, audio fingerprint, tham số GPU, liệt kê phông chữ, phép toán, byte kiến trúc.
Bậc 2 (Bán ổn định): Tín hiệu thay đổi khi cập nhật trình duyệt hoặc thay đổi cấu hình. User-Agent, Client Hints, plugin, CSS media query, khả năng lưu trữ.
Bậc 3 (Dễ biến động): Tín hiệu thay đổi thường xuyên. Độ phân giải màn hình (đổi màn hình), múi giờ (di chuyển), tùy chọn ngôn ngữ, thuộc tính kết nối.
Visitor ID được tính bằng một hệ thống băm ba bậc, cân bằng giữa độ ổn định và khả năng mở rộng:
Visitor ID = [Tier1Hash][Tier2Hash][Tier3Hash] 20 chars 10 chars 10 chars ──────── ──────── ──────── base62 base62 base62Bậc 1 chỉ sử dụng các tín hiệu đóng băng vốn có của phần cứng và engine kết xuất. Các tín hiệu này chỉ thay đổi khi người dùng chuyển sang một thiết bị vật lý khác hoặc thực hiện thay đổi phần cứng đáng kể.
Các tín hiệu bao gồm: Hash của canvas fingerprint, WebGL renderer (không mặt nạ), nhà cung cấp WebGL (không mặt nạ), audio fingerprint, hash liệt kê phông chữ, hash tham số WebGL, hash phép toán, byte kiến trúc (ARM so với x86).
Thuật toán:
key1=value1|key2=value2|... (khóa được sắp xếp theo bảng chữ cái)Bậc 1 được đóng băng có chủ đích. Không bao giờ thêm tín hiệu mới vào Bậc 1, đảm bảo rằng lõi định danh vẫn ổn định qua các lần cập nhật server.
Bậc 2 nắm bắt môi trường trình duyệt và hệ điều hành. Các tín hiệu này thay đổi khi người dùng cập nhật trình duyệt, cài đặt tiện ích mở rộng hoặc chỉnh sửa cài đặt hệ thống.
Các tín hiệu bao gồm: Dữ liệu User-Agent, Client Hints (thương hiệu, nền tảng, kiến trúc), thuộc tính navigator (nhà cung cấp, nền tảng, ngôn ngữ), danh sách plugin, độ sâu màu màn hình, bộ nhớ thiết bị, số luồng phần cứng.
Bậc 3 nắm bắt các tín hiệu dễ biến động có thể thay đổi giữa các phiên. Chúng được dùng để chấm điểm độ tin cậy và so khớp mờ nhưng không ảnh hưởng đến lõi định danh.
Các tín hiệu bao gồm: Độ phân giải màn hình, múi giờ, ngôn ngữ, DOM blocker, khả năng lưu trữ, phản hồi CSS media query, thuộc tính kết nối.
Mỗi bậc được băm bằng MurmurHash3-x64-128, một hàm băm nhanh, không mật mã, tạo ra đầu ra 128 bit. Thuật toán:
MurmurHash3 cho phân bố xuất sắc (mỗi bit đầu vào ảnh hưởng đến mọi bit đầu ra) và đủ nhanh cho tính toán thời gian thực. Nó không an toàn về mặt mật mã, nhưng điều đó không cần thiết cho việc băm fingerprint.
Input: "canvas=abc123|webgl_renderer=ANGLE|audio=0.04852" ↓ MurmurHash3-x64-128Output: 0x7f4a8c2d1e3b5f6a 0x9d8c7b6a5e4f3d2c ↓ base62 encodeResult: "X7fh2Hg9LkMn3pQr5tBv"Điểm độ tin cậy (0.0 đến 1.0) biểu thị mức độ chắc chắn của hệ thống về việc nhận dạng khách truy cập:
Khi cookie _vid_t khớp với một khách truy cập đã biết, độ tin cậy được đặt là 1.0. Cookie chứa UID của khách truy cập, được server xác thực dựa trên bản ghi của nó. Đây là đường nhận dạng nhanh nhất và đáng tin cậy nhất.
Khách truy cập mới không có bản ghi trước đó nhận điểm độ tin cậy 0.90. Không có rủi ro khớp sai vì không có bản ghi hiện có nào để so sánh.
Đối với khách truy cập quay lại không khớp cookie, hệ thống tính độ tin cậy từ:
Trọng số tần suất tín hiệu (IDF): Các tín hiệu độc nhất hơn trên toàn bộ dân số nhận trọng số cao hơn. Một WebGL renderer hiếm gặp có tính nhận dạng cao hơn một độ phân giải màn hình phổ biến.
So khớp mờ: Hệ thống so sánh fingerprint hiện tại với các fingerprint đã lưu bằng khoảng cách Hamming ở cấp độ bit. Tín hiệu được nhóm theo bậc, và điểm khớp của mỗi bậc được đánh trọng số độc lập.
Tính nhất quán lịch sử: Nếu tín hiệu của khách truy cập ổn định qua nhiều lần truy cập, độ tin cậy tăng lên. Nếu tín hiệu dao động thường xuyên, độ tin cậy giảm xuống.
| Kịch bản | Điểm điển hình | Giải thích |
|---|---|---|
| Khớp cookie | 1.000 | UID cookie _vid_t được xác minh phía server |
| Lần truy cập đầu tiên | 0.900 | Không có bản ghi trước để so sánh |
| Khớp fingerprint mạnh | 0.990-0.999 | Tất cả tín hiệu Bậc 1 khớp, phần lớn Bậc 2 khớp |
| Khớp một phần (cập nhật trình duyệt) | 0.950-0.989 | Bậc 1 khớp, Bậc 2 thay đổi (UA mới) |
| Khớp yếu (thay đổi đáng kể) | 0.850-0.949 | Một số tín hiệu Bậc 1 thay đổi |
| Không rõ ràng | 0.500-0.849 | Nhiều khả năng khớp trong cơ sở dữ liệu |
TRACIO sử dụng cookie bên thứ nhất (_vid_t) để duy trì danh tính khách truy cập qua các phiên:
_vid_tSameSite=Lax, và Secure trên HTTPS (không phải HttpOnly — agent đọc nó ở phía client)Cookie được cấp cả ở phía server (qua header phản hồi Set-Cookie) và ở phía client bởi agent, và UID cũng được sao chép sang localStorage như một phương án dự phòng khi cookie bị chặn.
Server cố gắng đặt cookie trên các phạm vi miền rộng dần:
app.example.com → example.com → comMiền rộng nhất mà đặt cookie thành công sẽ được sử dụng. Điều này đảm bảo cookie tồn tại qua các subdomain.
TRACIO có thể nhận dạng cùng một người trên các trình duyệt khác nhau trên cùng một thiết bị khi các tín hiệu Bậc 1 tạo ra hash khớp nhau. Vì Bậc 1 dựa vào đặc điểm phần cứng và kết xuất (canvas, WebGL, audio, phông chữ), các tín hiệu này thường giống hệt nhau giữa các trình duyệt dựa trên Chromium trên cùng một máy và suy giảm giữa các engine (Chromium so với Firefox so với Safari). Việc khớp một khách truy cập desktop với một khách truy cập mobile không được kỳ vọng — các bề mặt phần cứng và kết xuất khác nhau.
So khớp đa trình duyệt về bản chất là một thao tác có độ tin cậy thấp hơn và được xử lý như vậy trong chấm điểm.