Canvas và WebGL Fingerprinting năm 2026
Hiện trạng của fingerprinting dựa trên GPU: điều gì đã thay đổi với Privacy Sandbox của Chrome, chúng tôi thích ứng ra sao, và vì sao tín hiệu phần cứng vẫn là định danh ổn định nhất.
Canvas
và
WebGL
fingerprinting đã là nền tảng của việc định danh thiết bị kể từ đầu thập niên 2010. Nhưng bối cảnh đã dịch chuyển đáng kể với các sáng kiến
Privacy Sandbox
của Chrome, Enhanced Tracking Protection của Firefox và Intelligent Tracking Prevention của Safari. Đây là hiện trạng của fingerprinting dựa trên GPU năm 2026 — điều gì đã thay đổi, chúng tôi thích ứng ra sao, và vì sao những tín hiệu này vẫn không thể thiếu.
Điều gì đã thay đổi với Privacy Sandbox của Chrome
Privacy Sandbox của Chrome, được triển khai dần từ năm 2024, đã giới thiệu vài thay đổi ảnh hưởng tới fingerprinting. Đáng kể nhất là sáng kiến lưu trữ phân vùng (partitioned storage), giúp giảm hiệu quả của việc theo dõi dựa trên cookie nhưng không trực tiếp ảnh hưởng tới canvas hay WebGL fingerprinting.
Tuy nhiên, Chrome đã bắt đầu thử nghiệm việc chèn nhiễu vào canvas — thêm các nhiễu loạn ngẫu nhiên nhỏ vào dữ liệu điểm ảnh của canvas để ngăn fingerprinting chính xác. Khi được bật, cùng một tập lệnh vẽ sẽ tạo ra kết quả điểm ảnh hơi khác nhau ở mỗi lần thực thi. Điều này phá vỡ kiểu canvas fingerprinting ngây thơ dựa trên hash vốn kỳ vọng khả năng tái tạo chính xác.
Thích ứng với nhiễu canvas
Phản ứng của chúng tôi trước việc chèn nhiễu vào canvas là chuyển từ so khớp chính xác sang so khớp dựa trên độ tương đồng cho các tín hiệu canvas. Thay vì tính một hash duy nhất cho toàn bộ dữ liệu điểm ảnh của canvas, giờ đây chúng tôi trích xuất nhiều vector đặc trưng từ các vùng và thao tác vẽ khác nhau.
Nhiễu được chèn thường nhỏ — vài điểm ảnh thay đổi mỗi khung hình. Bằng cách trích xuất đặc trưng ở độ chi tiết thô hơn (chia canvas thành các vùng và tính thống kê tổng hợp), chúng tôi có thể nhận diện chữ ký phần cứng bên dưới bất chấp nhiễu. Thuật toán so khớp xuyên phiên của chúng tôi đối chiếu các vector đặc trưng này bằng độ tương đồng cosine, với ngưỡng được tinh chỉnh để chấp nhận biến thiên nhất quán với phần cứng trong khi loại bỏ các thiết bị khác nhau.
WebGL: Vẫn là mỏ vàng
Trong khi canvas fingerprinting đối mặt với thách thức mới, WebGL fingerprinting hầu như không bị ảnh hưởng bởi các sáng kiến về quyền riêng tư. WebGL API phơi bày các thông số phần cứng — kích thước texture tối đa, định dạng độ chính xác shader, các extension được hỗ trợ — vốn thuộc về GPU và không thể dễ dàng bị nhiễu loạn mà không phá vỡ chức năng WebGL.
Chrome đã bàn tới việc giới hạn quyền truy cập chuỗi renderer và vendor của WebGL (thay tên GPU cụ thể bằng nhãn chung chung như "GPU"), nhưng thay đổi này chưa được triển khai rộng rãi. Ngay cả khi được triển khai, hàng chục thông số WebGL khác mà chúng tôi truy vấn vẫn cung cấp những tín hiệu định danh hết sức đặc trưng.
GPU như một mỏ neo phần cứng
Lý do căn bản khiến fingerprinting dựa trên GPU vẫn mạnh mẽ là vì nó đọc các đặc tính phần cứng được quyết định vật lý bởi chip GPU, driver và pipeline render. Những đặc tính này không phải là lựa chọn phần mềm có thể dễ dàng thay đổi — chúng là hệ quả của cách silicon được thiết kế và sản xuất.
Một thiết bị với NVIDIA RTX 4070 sẽ luôn báo cáo những kích thước texture tối đa cụ thể, độ chính xác shader cụ thể và hỗ trợ extension cụ thể vì những giá trị đó được quyết định bởi kiến trúc GPU. Cách duy nhất để thay đổi chúng là dùng một GPU khác hoặc một driver khác — và việc đổi driver là tương đối hiếm với đa số người dùng.
Render Canvas: Vượt ra ngoài việc hash điểm ảnh
Canvas fingerprinting hiện đại vượt ra ngoài việc hash điểm ảnh đơn thuần. Chúng tôi dùng các thao tác vẽ được thiết kế riêng để khuếch đại những khác biệt render phụ thuộc phần cứng. Việc render văn bản với những font cụ thể vận dụng bộ rasterize font. Các đường cong Bezier với những điểm điều khiển cụ thể vận dụng khả năng tessellation đường cong của GPU. Các gradient với những điểm dừng màu cụ thể vận dụng pipeline pha trộn màu.
Bằng cách chọn các thao tác vẽ tối đa hóa phương sai giữa các mẫu GPU trong khi tối thiểu hóa phương sai giữa các lần chạy lặp lại trên cùng một GPU, chúng tôi tạo ra các bài kiểm tra canvas vừa đặc trưng hơn vừa bền vững hơn so với cách tiếp cận văn-bản-và-hình-khối đơn giản của các thư viện fingerprinting thời kỳ đầu.
WebGL Shader Fingerprinting
Một kỹ thuật mới hơn mà chúng tôi triển khai là WebGL shader fingerprinting. Bằng cách biên dịch những chương trình shader cụ thể và truy vấn các thuộc tính đã biên dịch của chúng (độ chính xác, mức tối ưu hóa, số lệnh), chúng tôi có thể trích xuất thông tin về trình biên dịch shader của GPU — một đặc tính phụ thuộc phần cứng khác biến thiên giữa các dòng GPU.
Kỹ thuật này đặc biệt hữu ích để phân biệt những thiết bị có thông số WebGL cơ bản tương tự nhau. Hai mẫu GPU khác nhau có thể hỗ trợ cùng một kích thước texture tối đa, nhưng trình biên dịch shader của chúng sẽ tạo ra kết quả biên dịch khác nhau cho cùng một mã nguồn shader.
Cân nhắc về quyền riêng tư
Fingerprinting dựa trên GPU, cũng như mọi hình thức fingerprinting, phải được sử dụng có trách nhiệm. Chúng tôi dùng những tín hiệu này cho mục đích chính đáng — phòng chống gian lận, bot detection và bảo mật tài khoản — chứ không phải để theo dõi xuyên trang hay quảng cáo. Việc triển khai lưu trữ trên đám mây của chúng tôi đảm bảo dữ liệu fingerprint nằm lại trên hạ tầng của khách hàng, loại bỏ việc chia sẻ dữ liệu với bên thứ ba.
Bối cảnh về quyền riêng tư sẽ tiếp tục thay đổi. Các trình duyệt có thể đưa ra thêm những biện pháp bảo vệ ảnh hưởng tới GPU fingerprinting. Chiến lược của chúng tôi là liên tục thích ứng — tìm ra những tín hiệu phụ thuộc phần cứng mới khi những tín hiệu cũ bị hạn chế, đồng thời duy trì độ chính xác và ổn định mà khách hàng của chúng tôi tin cậy.