Device Fingerprinting không cần Cookie: Cách hoạt động
Cookie đang dần biến mất. Đây là cách device fingerprinting định danh thiết bị bền vững mà không cần bất kỳ bộ nhớ nào phía client.
Cookie đang dần biến mất. Intelligent Tracking Prevention (ITP) của Safari giới hạn vòng đời cookie xuống còn 7 ngày. Enhanced Tracking Protection của Firefox chặn hoàn toàn cookie của bên thứ ba. Privacy Sandbox của Chrome đang loại bỏ dần cookie của bên thứ ba. Yêu cầu đồng ý theo GDPR khiến người dùng ngày càng từ chối các banner cookie.
Đối với việc phòng chống gian lận, đây là một vấn đề. Nếu bạn không thể định danh thiết bị một cách bền vững, bạn không thể theo dõi những kẻ tái phạm, phát hiện multi-accounting, hay liên kết các phiên đáng ngờ với nhau. Device fingerprinting giải quyết điều này bằng cách nhận diện thiết bị qua các đặc điểm kỹ thuật của chúng — không cookie, không localStorage, không bất kỳ dạng lưu trữ nào phía client.
Các nhóm tín hiệu
Fingerprinting thụ động (không cần JavaScript)
Trước cả khi trang của bạn được tải, trình duyệt đã để lộ thông tin qua các tín hiệu ở mức mạng:
TLS fingerprinting (JA4). Thông điệp TLS Client Hello chứa các cipher suite, extension, elliptic curve và thuật toán chữ ký. Chúng tôi dùng JA4 hashing — một bản thay thế hiện đại cho JA3 với độ chi tiết tốt hơn.
Phân tích TCP/IP stack. Kích thước cửa sổ TCP, giá trị TTL và thiết lập MSS khác nhau giữa các hệ điều hành. Linux, Windows và macOS đều có cấu hình TCP stack đặc trưng riêng.
Phân tích HTTP header. Thứ tự header, giá trị Accept-Language và tùy chọn kết nối khác nhau giữa các trình duyệt.
Fingerprinting chủ động (JavaScript phía client)
Canvas fingerprinting. Chúng tôi vẽ một cảnh được thiết kế kỹ lưỡng — văn bản cụ thể, các hình khối và gradient. Các GPU khác nhau render cảnh này với những khác biệt tinh vi ở mức pixel do khử răng cưa (anti-aliasing), render sub-pixel và các biến thể pha trộn màu. Chúng tôi hash dữ liệu pixel.
WebGL fingerprinting. WebGL để lộ chuỗi vendor/renderer của GPU, kích thước texture tối đa, các extension được hỗ trợ và khả năng shader. Dữ liệu này định danh rất mạnh mẫu GPU và phiên bản driver.
AudioContext fingerprinting. Chúng tôi tạo một tín hiệu thử nghiệm và phân tích cách nó được xử lý. Các phần cứng âm thanh khác nhau tạo ra đầu ra khác biệt đo lường được do sự khác nhau về độ chính xác dấu phẩy động.
Liệt kê font. Các font hệ thống có sẵn khác nhau tùy theo hệ điều hành, gói ngôn ngữ và phần mềm đã cài. Chúng tôi kiểm tra khoảng 300 font chẩn đoán bằng kỹ thuật đo lường qua canvas.
Thuộc tính Navigator. Số nhân CPU, dung lượng bộ nhớ thiết bị, nền tảng, ngôn ngữ, múi giờ, độ phân giải màn hình, độ sâu màu, khả năng con trỏ và cảm ứng.
Phân tích entropy
Không phải tín hiệu nào cũng có trọng số như nhau. Chúng tôi đo entropy của từng tín hiệu:
| Nhóm tín hiệu | Entropy xấp xỉ |
|---|---|
| Canvas + WebGL kết hợp | ~18 bit |
| Danh sách font | ~8 bit |
| AudioContext | ~5 bit |
| Thuộc tính Navigator | ~7 bit |
| TLS fingerprint | ~6 bit |
| Màn hình + hiển thị | ~4 bit |
| Múi giờ + ngôn ngữ | ~3 bit |
Kết hợp lại, hơn 130 tín hiệu của chúng tôi cung cấp khoảng hơn 50 bit entropy — đủ để định danh duy nhất hơn 1 triệu tỷ thiết bị khác nhau.
Từ tín hiệu đến hash ổn định
Việc thu thập tín hiệu thô mới chỉ là một nửa vấn đề. Các bản cập nhật trình duyệt làm thay đổi chuỗi user agent. Các bản cập nhật driver thay đổi tham số WebGL. Việc cài đặt font làm thay đổi danh sách font.
Fuzzy matching
Thay vì yêu cầu khớp chính xác, chúng tôi dùng một thuật toán fuzzy matching cân nhắc các tín hiệu theo độ ổn định và entropy. Các tín hiệu ổn định (canvas, mẫu GPU) mang trọng số lớn hơn các tín hiệu dễ thay đổi (user agent, độ phân giải màn hình).
Sinh ứng viên dùng locality-sensitive hashing (LSH) trên các tín hiệu ổn định nhất để xác định các kết quả khớp tiềm năng. Chấm điểm tương đồng tính một điểm số có trọng số trên tất cả các nhóm tín hiệu, được hiệu chỉnh sao cho những thay đổi thiết bị thông thường không làm đổi visitor ID, còn những thay đổi thiết bị thực sự thì có.
Điều này đạt độ chính xác 99,5% — nhận diện chính xác khách truy cập quay lại qua các bản cập nhật trình duyệt, lần xóa cookie, chế độ ẩn danh và việc chuyển đổi trình duyệt.
Kiến trúc bảo vệ quyền riêng tư
Xử lý phía server. Toàn bộ việc tính toán fingerprint diễn ra trên server của chúng tôi. Agent phía client thu thập tín hiệu thô nhưng không tính toán hay lưu trữ hash fingerprint.
Không lưu PII. Chúng tôi lưu các hash fingerprint, không lưu tín hiệu thô. Hash là một hàm một chiều.
Nơi lưu trú dữ liệu. Dữ liệu khách hàng EU được xử lý và lưu trữ tại các trung tâm dữ liệu ở EU. Điều 6(1)(f) của GDPR coi phòng chống gian lận là lợi ích chính đáng.
Định danh xuyên trình duyệt
Thách thức khó nhất là định danh cùng một thiết bị trên các trình duyệt khác nhau. Chúng tôi dựa vào các tín hiệu độc lập với trình duyệt: phần cứng GPU, đặc điểm màn hình, múi giờ, thiết lập ngôn ngữ, font đã cài (ở mức hệ điều hành) và đặc điểm TCP/IP stack.
Độ chính xác liên kết xuyên trình duyệt là khoảng 94% — thấp hơn so với định danh trong cùng một trình duyệt nhưng đủ để phát hiện multi-accounting trên nhiều trình duyệt của cùng một thiết bị.
Tích hợp
Việc thêm device fingerprinting chỉ tốn ba dòng code. Agent tải bất đồng bộ, thu thập tín hiệu trong chưa đến 50ms và gửi chúng đến API của chúng tôi. Phản hồi từ server bao gồm visitor ID, điểm tin cậy và tất cả 24 Smart Signal.