Các banner cookie khiến nhiều người biết rằng trang web ghi nhớ họ. Ít người biết hơn rằng một trang có thể nhận ra trình duyệt mà không lưu gì cả, chỉ bằng cách đọc các thông tin trình duyệt gửi cho mọi trang. Bài này đi qua những thông tin đó (trang thông tin trình duyệt liệt kê của bạn, đọc ngay tại máy), giải thích bằng phép tính đơn giản vì sao các giá trị bình thường cộng lại thành một mã nhận diện, và phân biệt cách phòng vệ có tác dụng với cách phản tác dụng.
Trang web đọc được gì mà không cần hỏi
Không mục nào dưới đây làm hiện hộp thoại xin quyền:
- Chuỗi User-Agent và, với trình duyệt Chromium, client hints: trình duyệt, phiên bản, hệ điều hành, đôi khi kiến trúc CPU và mẫu thiết bị.
- Màn hình: kích thước, vùng dùng được (lộ ra thanh tác vụ hay dock), tỷ lệ điểm ảnh, độ sâu màu, dải màu, HDR.
- Ngôn ngữ và thời gian: toàn bộ danh sách ngôn ngữ ưu tiên, múi giờ, cách định dạng ngày và số.
- Thiết bị nhập và tùy chọn: số điểm chạm, con trỏ chính là chuột hay ngón tay, chế độ tối, giảm chuyển động, tương phản cao.
- Gợi ý phần cứng: số nhân CPU logic và dung lượng bộ nhớ làm tròn.
- Đồ họa: qua WebGL, thường là tên GPU và trình điều khiển.
- Tính năng: trình duyệt hỗ trợ API và định dạng nào trong hàng trăm cái, đủ để đoán đúng phiên bản.
Còn có các kỹ thuật chậm hơn: vẽ chữ lên canvas ẩn rồi băm các điểm ảnh (phông chữ và khử răng cưa khác nhau giữa các hệ thống), đo cách xử lý âm thanh, hoặc dò phông chữ đã cài bằng cách đo chữ. Chúng hiệu quả vì cùng một lý do: những khác biệt nhỏ về phần mềm và phần cứng.
Vì sao những thông tin bình thường cộng lại
Không giá trị nào tự nó nhận diện bạn. Một cách hữu ích để thấy chúng kết hợp ra sao là số bit thông tin. Nếu một giá trị được 1 trên N trình duyệt chia sẻ, biết nó cho log₂(N) bit. Phân biệt khoảng 8 tỷ người cần log₂(8.000.000.000) ≈ 33 bit.
Lấy vài tần suất giả định nhưng hợp lý (chỉ để minh họa, không phải số đo):
| Thông tin | Chung với | Số bit |
|---|---|---|
| Múi giờ | 1 trên 20 | 4,3 |
| Kích thước màn hình và tỷ lệ điểm ảnh | 1 trên 50 | 5,6 |
| Danh sách ngôn ngữ | 1 trên 10 | 3,3 |
| Trình duyệt và phiên bản | 1 trên 4 | 2,0 |
| Hệ điều hành | 1 trên 3 | 1,6 |
Nếu các thông tin độc lập với nhau, gộp lại được khoảng 16,9 bit: cứ khoảng 120.000 trình duyệt mới có một trùng khớp. Thêm tên GPU, số nhân CPU, vùng màn hình dùng được, phông chữ đã cài và mã băm canvas, tổng có thể vượt 33 bit. Giá trị thật không độc lập (kích thước màn hình của người dùng Mac liên quan tới hệ điều hành), nên con số thật thấp hơn phép cộng đơn giản, nhưng nguyên lý vẫn đúng: nhiều mẩu thông tin nhỏ thành một mã nhận diện.
Đây không phải giả thuyết. Nghiên cứu Panopticlick của EFF (2010) cho thấy phần lớn trình duyệt trong mẫu có dấu vân tay mà không trình duyệt nào khác trong mẫu có. Từ đó các trình duyệt đã giảm bớt thông tin để lộ, nhưng kỹ thuật này vẫn đang được dùng.
Vì sao khó tránh hơn cookie
Cookie được lưu trên thiết bị nên bạn xóa, chặn được, hoặc mở cửa sổ ẩn danh. Dấu vân tay thì được tính ra từ chính trình duyệt của bạn, mỗi lần bạn ghé thăm. Xóa cookie không đổi kích thước màn hình, múi giờ hay GPU. Cửa sổ ẩn danh thường báo cùng các giá trị. Vì vậy các hướng dẫn bảo vệ dữ liệu ở châu Âu coi nó như cookie, là hình thức theo dõi cần sự đồng ý, và các hãng trình duyệt liên tục cắt bớt thông tin: cố định phiên bản trong User-Agent, làm tròn bộ nhớ, giảm chi tiết phông chữ.
Điều gì có ích, điều gì phản tác dụng
Có ích:
- Trình duyệt có chống lấy dấu vân tay, trả về giá trị chuẩn hóa hoặc thêm nhiễu (ví dụ Tor Browser, chế độ resist-fingerprinting của Firefox, cơ chế "farbling" của Brave, Safari giảm chi tiết). Mục tiêu là trông giống thật nhiều trình duyệt khác.
- Công cụ chặn theo dõi, ngăn nhiều script lấy dấu vân tay tải ngay từ đầu.
- Cài đặt mặc định và phiên bản mới: cấu hình càng phổ biến, đám đông bạn ẩn mình càng lớn.
Phản tác dụng:
- Nhiều tiện ích mở rộng, phông chữ lạ và cài đặt tùy biến. Mỗi thứ làm trình duyệt hiếm hơn.
- Tự sửa chuỗi User-Agent. Một trình duyệt tự nhận là Safari nhưng hỗ trợ API chỉ Chrome có lại càng đặc trưng hơn.
- Tưởng VPN che giấu bạn. VPN đổi địa chỉ IP; dấu vân tay vẫn y nguyên.
Những hiểu lầm thường gặp
- "IP đã ẩn nên tôi ẩn danh." Thông tin trình duyệt tách biệt với địa chỉ IP. (Công cụ của chúng tôi thậm chí không kiểm tra IP: trang web không thấy được nếu không hỏi máy chủ.)
- "Duyệt ẩn danh chặn được dấu vân tay." Nó chặn mã nhận diện được lưu; mã được tính ra phần lớn vẫn còn.
- "Kết quả trông độc nhất nghĩa là tôi đang bị theo dõi." Độ độc nhất là thước đo rủi ro, không phải bằng chứng. Trang có lấy dấu vân tay hay không tùy vào script của nó.
- "Tắt hết là an toàn nhất." Tắt JavaScript chặn phần lớn kỹ thuật này nhưng làm hỏng nhiều trang, và việc thuộc số ít người tắt JavaScript tự nó đã là một tín hiệu.
Hãy xem báo cáo của chính bạn: các giá trị đánh dấu ● trên trang thông tin trình duyệt là những gì script lấy dấu vân tay thường kết hợp. Mã băm tính từ chúng ở đó chỉ để minh họa, tạo ngay trên trang và không gửi đi đâu. Khi đang kiểm tra thiết bị, công cụ kiểm tra màn hình cho thấy màn hình của bạn làm được gì.