Vân tay trình duyệt: các trang web thực sự đọc những gì

Một chuyến đi qua từng trường giá trị mà trang web thu thập, từ canvas và WebGL đến âm thanh, phông chữ, màn hình và múi giờ, và vì sao một danh tính nhất quán tốt hơn một danh tính ngẫu nhiên.
Vân tay trình duyệt là việc nhận dạng một trình duyệt bằng những giá trị nó báo cáo thay vì bằng bất cứ thứ gì nó lưu trữ. Không cần cookie nào. Trình duyệt chỉ đơn giản trả lời những câu hỏi mà bất kỳ trang web nào cũng được phép hỏi, và các câu trả lời gộp lại đủ đặc trưng để nhận ra lần sau.
Các giá trị được thu thập
Hầu hết script lấy vân tay đọc từ cùng một số bề mặt.
Những thứ hiển nhiên
- User agent mang tên trình duyệt, phiên bản và nền tảng, và nó được gửi kèm mọi yêu cầu.
- Màn hình báo cáo chiều rộng, chiều cao, độ sâu màu, tỷ lệ điểm ảnh và vùng làm việc khả dụng.
- Ngôn ngữ và múi giờ gồm locale mà trình duyệt báo cáo và độ lệch giờ mà nó tính ra.
- Gợi ý phần cứng cho biết số lõi xử lý được báo cáo và, trên một số trình duyệt, một con số bộ nhớ gần đúng.
Những thứ liên quan đến kết xuất
Đây là những giá trị mà người ta muốn nói đến khi nhắc tới vân tay, vì chúng gián tiếp. Một trang yêu cầu trình duyệt vẽ một thứ gì đó rồi đọc lại chính xác những gì đã được vẽ.
- Canvas kết xuất văn bản và hình khối lên một canvas ngoài màn hình rồi băm chúng. Kết quả thay đổi theo ngăn xếp đồ họa, phông chữ và khử răng cưa.
- WebGL để lộ chuỗi nhà sản xuất và bộ render của card đồ họa, cùng một giá trị băm của một cảnh đã kết xuất.
- Âm thanh chạy một bộ dao động qua đồ thị xử lý âm thanh và băm đầu ra. Hành vi dấu phẩy động khác nhau đôi chút giữa các ngăn xếp.
- Phát hiện phông chữ đo văn bản trong các phông chữ ứng viên và suy ra phông nào được cài đặt từ những phép đo khác nhau.
Những thứ liên quan đến mạng
- Địa chỉ mà yêu cầu đến từ đó, và những gì một cơ sở dữ liệu định vị cho biết về nó.
- WebRTC, có thể để lộ các địa chỉ mà kết nối vốn sẽ không phơi ra.
- Thứ tự và nội dung của các trường bắt tay TLS và HTTP, vốn khác nhau tùy client.
Vì sao ngẫu nhiên hóa mọi trường là bản năng sai
Cách phòng thủ theo trực giác là đổi mọi thứ ở mỗi lượt truy cập. Nó phản tác dụng, vì hai lý do.
Lý do thứ nhất là mâu thuẫn. Các trường ngẫu nhiên không biết gì về nhau. Một user agent tự nhận là Windows đi cùng chuỗi bộ render WebGL chỉ có trên phần cứng Apple là tín hiệu mạnh hơn bất kỳ giá trị đơn lẻ nào. Máy thật nhất quán nội bộ; chỉ máy tổng hợp mới mâu thuẫn với chính nó.
Lý do thứ hai là sự bất ổn. Một tài khoản báo cáo thiết bị khác nhau ở mỗi lượt truy cập đang mô tả một thứ mà không người thật nào sở hữu. Sự nhất quán theo thời gian chính là dáng vẻ của một người dùng bình thường.
Danh tính của một hồ sơ bao gồm những gì
| Bề mặt | Được xử lý bởi |
|---|---|
| User agent và nền tảng | Được tạo cùng nhau, để nền tảng được khai báo khớp với các giá trị xung quanh |
| Màn hình và tỷ lệ điểm ảnh | Cố định cho từng hồ sơ, lấy từ các kích thước mà màn hình thật thực sự báo cáo |
| Múi giờ và locale | Đặt cho từng hồ sơ, và đối chiếu với tuyến mạng mà nó dùng |
| Canvas, WebGL và âm thanh | Được xử lý ổn định theo từng hồ sơ, giống hệt nhau ở mỗi lần mở |
| Phông chữ | Một bộ riêng cho từng hồ sơ, nhất quán với nền tảng mà hồ sơ khai báo |
| WebRTC | Bị ràng buộc để không mâu thuẫn với tuyến mạng của hồ sơ |
Kiểm tra công việc của chính bạn
Mở một hồ sơ và truy cập một trang kiểm tra vân tay. Nhiều trang công bố miễn phí các giá trị họ đọc được. Hai điều đáng kiểm tra không phải là những gì bạn có thể nghĩ:
- Các giá trị có khớp với nhau không? Nền tảng, phông chữ, chuỗi đồ họa và múi giờ nên mô tả một chiếc máy hợp lý duy nhất.
- Chúng có giống lần trước không? Đóng hồ sơ, mở lại, tải lại bài kiểm tra. Một hồ sơ có giá trị thay đổi giữa các lần mở là không ổn định, và sự ổn định là thuộc tính quan trọng.
Điểm hiếm trên trang kiểm tra là con số ít hữu ích nhất. Nó so bạn với những người truy cập trang đó, mà phần lớn áp đảo là những người đang thử trình duyệt antidetect.


