Cách Android và iOS bị theo dõi: device-pixel-ratio, cảm biến, khác biệt WebView và Safari — và vì sao điện thoại có entropy GPU, font thấp hơn.
Phần lớn nghiên cứu và công cụ lấy dấu vân tay được viết với trọng tâm là trình duyệt máy tính để bàn, nhưng ngày nay hơn một nửa lưu lượng web đến từ điện thoại. Lấy dấu vân tay trên di động không đơn thuần là kỹ thuật của desktop chạy trên màn hình nhỏ hơn — phần cứng sản xuất hàng loạt làm phẳng một số tín hiệu, trong khi cảm ứng, cảm biến và các engine trình duyệt bị nền tảng bắt buộc lại mở ra những tín hiệu mới. Bài viết này đi qua những gì thực sự thay đổi khi thiết bị bị lấy dấu vân tay là chiếc điện thoại trong túi bạn.
Tóm tắt nhanh
- Điện thoại xuất xưởng từ một tập hợp tổ hợp phần cứng và phần mềm nhỏ hơn nhiều so với PC, nên tín hiệu canvas, WebGL và font mang ít entropy hơn trên di động so với desktop.
- Di động bổ sung những tín hiệu giá trị riêng mà desktop hầu như không có:
devicePixelRatio, kích thước màn hình chính xác, số điểm chạm, và cảm biến chuyển động/định hướng. - Trên iOS, Apple yêu cầu mọi trình duyệt — kể cả "Chrome" và "Firefox" — phải chạy trên WebKit, nên bản thân engine kết xuất gần như không tiết lộ gì về việc ứng dụng nào đang được dùng; còn ứng dụng Android thì nhúng WebView dựa trên Chromium, tự lộ diện bằng token
wvtrong user-agent. - Carrier-Grade NAT khiến nhiều người dùng di động vốn đã dùng chung một địa chỉ IP, điều này làm cho việc lấy dấu vân tay ở cấp độ thiết bị trở nên tương đối có giá trị hơn đối với các bên theo dõi trên mạng di động so với băng thông rộng cố định.
- Bạn có thể xem các tín hiệu di động của chính mình — thông số màn hình, trình kết xuất GPU, phát hiện WebView — bằng kiểm tra vân tay của BrowserInsight, chạy trực tiếp trên trình duyệt điện thoại của bạn.
Vì sao vân tay di động khác với desktop
Cơ chế cốt lõi của việc lấy dấu vân tay giống nhau trên mọi thiết bị: kết hợp đủ nhiều tín hiệu độc lập thì giao của chúng sẽ thu hẹp xuống còn một trình duyệt duy nhất. Điều thay đổi trên di động là hình dạng của ngân sách entropy đó. PC để bàn được lắp ráp từ vô số linh kiện được lựa chọn độc lập — GPU, màn hình, font, phần mềm cài đặt — nên đầu ra kết xuất canvas và WebGL biến thiên rất lớn giữa các máy. Điện thoại thì ngược lại: một model cụ thể xuất xưởng với đúng một GPU cố định, đúng một bộ font cài sẵn cố định, và một màn hình có kích thước vật lý do Apple hoặc nhà sản xuất chọn sẵn cho bạn. Sự đồng nhất đó thu hẹp entropy kết xuất trên mỗi thiết bị, nhưng không thu hẹp khả năng nhận diện — nó chỉ dịch chuyển nguồn gốc của thông tin nhận diện sang nơi khác.
Device-Pixel-Ratio, màn hình và tín hiệu cảm biến
Vì màn hình điện thoại chỉ có một danh mục kích thước vật lý giới hạn, tổ hợp kích thước pixel CSS và devicePixelRatio mang tính nhận diện cao hơn nhiều trên di động so với những con số tương đương trên desktop. Một báo cáo 393×852 ở device-pixel-ratio 3 không chỉ đơn thuần là "một màn hình điện thoại" — cặp giá trị chính xác đó tương ứng với một dòng model iPhone cụ thể, và kết hợp với phần lề an toàn (safe-area) do notch hay Dynamic Island tạo ra, một script thường có thể thu hẹp phỏng đoán xuống còn vài thế hệ thiết bị trước cả khi đọc một tín hiệu kết xuất nào.
Cảm ứng bổ sung một dấu hiệu cấu trúc thứ hai. navigator.maxTouchPoints và đặc tính CSS media (pointer: coarse) phân biệt thiết bị cảm ứng-là-chính với thiết bị điều khiển bằng chuột, và hầu hết trình duyệt di động báo cáo một số điểm chạm khác 0 một cách nhất quán ngay cả khi không có ngón tay nào chạm màn hình. Chuyển động và định hướng bổ sung thêm một lớp nhạy hơn nữa: các API DeviceOrientationEvent và DeviceMotionEvent, được chuẩn hóa như một phần của họ Generic Sensor API của W3C, phơi bày dữ liệu gia tốc kế và con quay hồi chuyển theo thời gian thực. iOS đã yêu cầu quyền cho phép rõ ràng từ người dùng đối với các API này kể từ iOS 13, và các trình duyệt cũng dần siết chặt quyền truy cập kể từ đó; ở những nơi dữ liệu này vẫn khả dụng mà không cần xin phép, độ trôi hiệu chuẩn nhỏ, khác nhau theo từng thiết bị trong các chỉ số gia tốc kế tự nó có thể đóng vai trò như một chữ ký phần cứng cấp thấp.
Android WebView so với Chrome và iOS Safari
Engine nào kết xuất một trang di động phụ thuộc vào nền tảng, chứ không phải ứng dụng, và hai nền tảng thực thi điều đó theo hai cách trái ngược nhau.
Trên Android, bất kỳ ứng dụng nào cũng có thể nhúng thành phần WebView dựa trên Chromium của Google để kết xuất nội dung web bên trong giao diện riêng của nó — bản xem trước trong bảng chia sẻ, trình duyệt trong ứng dụng, luồng đăng nhập. WebView được nhúng đó thường thêm token wv vào user-agent của nó (ví dụ Mozilla/5.0 (Linux; Android 14) ... Chrome/124.0.0.0 Mobile Safari/537.36 wv), đây là cách các trang web và công cụ phân tích phân biệt "Chrome thật" với trình duyệt trong ứng dụng. Tài liệu WebView đa thiết bị của Chrome mô tả cách thành phần này được đánh số phiên bản và cập nhật độc lập với ứng dụng chủ, nghĩa là một thiết bị Android duy nhất có thể mang nhiều phiên bản WebView khác nhau đang hoạt động thực tế trong các ứng dụng khác nhau cùng lúc.
Trên iOS, quy tắc App Store của Apple buộc mọi trình duyệt bên thứ ba phải dùng WebKit — cùng engine với Safari — nên "Chrome cho iOS" và "Firefox cho iOS" thực chất là các vỏ bọc WebKit quanh mã kết xuất của Apple, chứ không phải engine Blink hay Gecko mà những cái tên đó gợi ý trên desktop. Duyệt trong ứng dụng trên iOS cũng có sự phân chia riêng: các ứng dụng dùng SFSafariViewController chia sẻ cookie và thông tin đăng nhập đã lưu với Safari, còn ứng dụng nhúng WKWebView trần thì có một ngữ cảnh cô lập, tách biệt cookie. Sự phân biệt đó quan trọng đối với việc theo dõi — một phiên WKWebView bên trong một ứng dụng mạng xã hội không thể thấy lịch sử duyệt web dựa trên Safari của bạn, nhưng nó vẫn có thể bị lấy dấu vân tay độc lập. Tài liệu chống theo dõi của WebKit mô tả các quy tắc phân vùng lưu trữ áp dụng trên những ngữ cảnh khác nhau này.
Vì sao di động có entropy GPU và font thấp hơn
Vì một model điện thoại cụ thể xuất xưởng với một GPU, một bộ font, tính độc đáo thô mà các tín hiệu này đóng góp thấp hơn trên di động — nhưng chính các giá trị lại tiết lộ nhiều hơn về model thiết bị cụ thể. Một chuỗi trình kết xuất WebGL như Apple GPU kết hợp với số hiệu dòng GPU được báo cáo sẽ ánh xạ tới một dải chip iPhone và iPad cụ thể, và các chuỗi trình kết xuất từ dòng Adreno của Qualcomm hay Mali của ARM trên Android tương tự tương ứng với các thế hệ SoC cụ thể. Liệt kê font kém hữu ích hơn nhiều trên di động so với desktop, vì cả iOS lẫn Android đều không cho phép ứng dụng thông thường cài font toàn hệ thống theo cách Windows và macOS cho phép — hầu hết điện thoại phơi bày cùng một danh sách font nhỏ, đi kèm hệ điều hành, cho mọi trang. Điều đó làm sụp một trong những tín hiệu entropy cao nhất của desktop xuống gần bằng không trên di động, đó chính xác là lý do vì sao các tín hiệu màn hình, cảm biến và cảm ứng nêu trên mang tỷ trọng nhận diện lớn hơn tương ứng.
| Tín hiệu | Entropy trên desktop | Entropy trên di động | Vì sao khác nhau |
|---|---|---|---|
| Kết xuất Canvas / WebGL | Cao | Thấp hơn | Mỗi model điện thoại chỉ xuất xưởng một danh mục GPU cố định, giới hạn |
| Font đã cài | Cao | Rất thấp | Ứng dụng thường không thể thêm font hệ thống trên iOS/Android |
| Kích thước màn hình + device-pixel-ratio | Thấp | Cao | Kích thước màn hình vật lý ánh xạ tới model thiết bị cụ thể |
| Số điểm chạm / loại con trỏ | Không áp dụng | Trung bình | Xác nhận phần cứng cảm ứng-là-chính, hầu hết desktop không có |
| Cảm biến chuyển động/định hướng | Không áp dụng | Trung bình | Dữ liệu gia tốc kế/con quay hồi chuyển thời gian thực, phụ thuộc quyền |
| User-agent / token WebView | Trung bình | Cao | Phân biệt trình duyệt gốc, WebView trong ứng dụng và danh tính ứng dụng cụ thể |
Nhà mạng và ứng dụng thấy được gì (và không thấy được gì)
Mọi thứ nêu trên chạy phía client, bên trong JavaScript của chính trang — đó là những gì một trang web có thể biết về chiếc điện thoại đang truy cập nó, và tự nó không bao giờ chạm tới máy chủ. Một nhà mạng di động hay ứng dụng chủ chứa WebView nhìn thấy một bức tranh khác, ở cấp độ mạng: địa chỉ IP của bạn, header User-Agent, và — riêng với nhà mạng — trạm phát sóng và cổng nào đã định tuyến lưu lượng của bạn, chứ không phải hash canvas hay dữ liệu cảm biến. Mạng di động còn làm phức tạp thêm việc theo dõi dựa trên IP vì nhà mạng định tuyến các nhóm thuê bao lớn qua Carrier-Grade NAT, nên hàng nghìn điện thoại có thể dùng chung một IP công khai hiển thị tại bất kỳ thời điểm nào. Điều này tốt cho quyền riêng tư vị trí, nhưng dưới góc nhìn của bên theo dõi, nó khiến địa chỉ IP trở thành một định danh yếu hơn trên di động so với băng thông rộng gia đình cố định — đó chính xác là lý do vì sao các tín hiệu ở cấp độ thiết bị và trình duyệt nêu trên quan trọng hơn để nhận diện duy nhất một khách truy cập di động, so với một khách truy cập desktop đang ngồi sau IP riêng của chính họ.
Kiểm tra tín hiệu di động của chính bạn
Cách nhanh nhất để biết trình duyệt điện thoại của bạn bị lộ đến mức nào: mở kiểm tra vân tay của BrowserInsight trực tiếp trên điện thoại. Nó báo cáo tổ hợp màn hình và device-pixel-ratio, chuỗi trình kết xuất GPU, liệu có token WebView trong user-agent hay không, và một ước tính ẩn danh tổng thể — sau đó chạy lại trong trình duyệt của một ứng dụng để xem ngữ cảnh đó tự báo cáo khác đi như thế nào.
Câu hỏi thường gặp
Lấy dấu vân tay di động dễ hơn hay khó hơn desktop?
Không hẳn là dễ hay khó hơn — mà là có hình dạng khác. Tín hiệu canvas, WebGL và font mang ít entropy hơn trên di động vì phần cứng và phần mềm được chuẩn hóa nhiều hơn. Nhưng thông số màn hình, cảm ứng, cảm biến và ngữ cảnh WebView/ứng dụng bổ sung những tín hiệu mà desktop hầu như không có, nên khách truy cập di động vẫn có thể bị thu hẹp nhận diện hiệu quả — chỉ là các tín hiệu giá trị nhất đã đổi khác.
Dùng Chrome hay Firefox trên iPhone có cho ra vân tay khác Safari không?
Ở cấp độ engine thì gần như không. Apple yêu cầu mọi trình duyệt iOS dùng WebKit, nên "Chrome cho iOS" kết xuất trang bằng cùng engine với Safari. Các ứng dụng vẫn có thể khác nhau ở chuỗi user-agent, hỗ trợ tiện ích mở rộng và thiết lập mặc định, nhưng các tín hiệu kết xuất sâu — đầu ra canvas và WebGL — đều đến từ cùng một mã WebKit nền tảng ở tất cả các ứng dụng đó.
Một trang web có thể biết nó đang chạy trong WebView của ứng dụng thay vì trình duyệt thật không?
Thường là có. Android WebView thường thêm token wv vào chuỗi user-agent của nó, và trình duyệt trong ứng dụng trên cả hai nền tảng thường thiếu các API hoặc tiện ích mở rộng có trong ứng dụng trình duyệt đầy đủ, hoặc phơi bày cấu hình viewport/safe-area khác biệt. Các trang web quan tâm đến điều này (để xác minh quảng cáo hay phát hiện bot) kiểm tra riêng những dấu hiệu đó.
Các cảm biến điện thoại như gia tốc kế có thực sự được dùng để lấy dấu vân tay không?
Chúng có thể đóng góp một tín hiệu yếu ở những trình duyệt vẫn phơi bày dữ liệu chuyển động mà không cần xin phép, vì dung sai sản xuất để lại một độ trôi hiệu chuẩn nhỏ nhưng nhất quán theo từng thiết bị. Đây là tín hiệu phụ so với dữ liệu màn hình và GPU, và iOS đã yêu cầu quyền rõ ràng cho nó kể từ iOS 13, điều này đã đóng lại phiên bản âm thầm của vector này trên thiết bị Apple.
VPN có bảo vệ chống lại việc lấy dấu vân tay trình duyệt di động không?
Không, cùng lý do như trên desktop: VPN thay đổi địa chỉ IP của bạn, chứ không phải thông số màn hình, trình kết xuất GPU, cảm biến hay chữ ký WebView. Nó giúp ích cho vấn đề tách biệt là theo dõi cấp mạng và nhà mạng, nhưng một script lấy dấu vân tay vẫn đọc được cùng những tín hiệu thiết bị dù đường hầm VPN có đang hoạt động hay không.
Kết luận
Lấy dấu vân tay di động không phải là phiên bản thu nhỏ của lấy dấu vân tay desktop — nó đánh đổi một số tín hiệu entropy cao nhất của desktop để lấy một bộ tín hiệu khác hiệu quả không kém. Phần cứng chuẩn hóa làm phẳng entropy của canvas, WebGL và font, nhưng hình học màn hình chính xác, dữ liệu cảm ứng và cảm biến, cùng sự phân chia giữa trình duyệt gốc và WebView nhúng bù đắp nhiều hơn cả khoảng chênh lệch đó. Bất kỳ ai xây dựng hay đánh giá hệ thống phát hiện dựa trên dấu vân tay cho lưu lượng di động đều cần cân trọng số các tín hiệu này khác với khách truy cập desktop — và bất kỳ ai muốn hiểu mức độ lộ diện của chính mình nên kiểm tra xem điện thoại của họ thực sự báo cáo điều gì, thay vì mặc định rằng hướng dẫn cho desktop áp dụng nguyên vẹn.
Đọc thêm:


