สัญญาณใดที่รอดจากการอัปเดตเบราว์เซอร์? การวิเคราะห์ความเสถียร
เราวิเคราะห์ความเสถียรของสัญญาณจากการอัปเดต Chrome, Firefox และ Safari 50 ครั้ง นี่คือสัญญาณ fingerprinting ที่เสถียรที่สุดและเสถียรน้อยที่สุด
การอัปเดตเบราว์เซอร์คือศัตรูตัวฉกาจของ device fingerprinting ทุก ๆ 4-6 สัปดาห์ Chrome, Firefox และ Safari จะปล่อยเวอร์ชันใหม่ที่อาจเปลี่ยนค่าของสัญญาณ — เปลี่ยนสตริง user-agent, ปรับพฤติกรรมการเรนเดอร์, เพิ่มหรือลบ API ตามที่ระบุใน แนวทาง W3C Fingerprinting Guidance เบราว์เซอร์กำลังพยายามอย่างจริงจังที่จะจำกัดพื้นที่ที่สามารถทำ fingerprint ได้ สำหรับระบบ fingerprinting ที่ปฏิบัติต่อสัญญาณทุกตัวอย่างเท่าเทียมกัน การอัปเดตแต่ละครั้งคือความเสี่ยงที่ตัวตนของผู้เข้าชมนับล้านจะขาดจากกัน
เราได้ทำการวิเคราะห์ความเสถียรอย่างครอบคลุมตลอดการอัปเดตเบราว์เซอร์ 50 ครั้ง เพื่อตอบคำถามพื้นฐานว่า: สัญญาณใดที่คุณพึ่งพาได้ และสัญญาณใดที่จะหักหลังคุณ?
ระเบียบวิธี
เราติดตั้งเครื่องมือวัดบนอุปกรณ์จริง 200 เครื่องครอบคลุมระบบปฏิบัติการ 5 ระบบ (Windows 10, Windows 11, macOS Ventura, macOS Sonoma, Ubuntu 22.04) และเบราว์เซอร์ 3 ตัว (Chrome, Firefox, Safari) อุปกรณ์แต่ละเครื่องรันการเก็บสัญญาณอัตโนมัติทุกวันเป็นเวลา 14 เดือน ครอบคลุมการอัปเดตเวอร์ชันเบราว์เซอร์หลัก 50 ครั้ง ได้แก่ Chrome 24 รุ่น, Firefox 16 รุ่น และ Safari 10 รุ่น
สำหรับแต่ละสัญญาณ เราติดตาม: ค่าเปลี่ยนบ่อยแค่ไหน, การเปลี่ยนแปลงสัมพันธ์กับการอัปเดตเบราว์เซอร์หรือปัจจัยภายนอกหรือไม่ (การอัปเดตไดรเวอร์, แพตช์ OS) และขนาดของการเปลี่ยนแปลง (การแทนที่ค่าทั้งหมด เทียบกับการแปรผันเล็กน้อย)
ระดับความเสถียร
Tier 1: มั่นคงดั่งหิน (เสถียร 99.5%+)
สัญญาณเหล่านี้เปลี่ยนเฉพาะเมื่อฮาร์ดแวร์จริงเปลี่ยนหรือไดรเวอร์ได้รับการอัปเดต — ไม่เคยเปลี่ยนเพราะการอัปเดตเบราว์เซอร์เพียงอย่างเดียว
Hardware Concurrency (navigator.hardwareConcurrency): เสถียร 99.97% เปลี่ยนเฉพาะบน 1 อุปกรณ์ที่มีการอัปเดต BIOS ซึ่งกระทบต่อ hyperthreading Device Memory (navigator.deviceMemory): เสถียร 99.98% มี 1 อุปกรณ์ถูกอัปเกรดจาก 8GB เป็น 16GB ระหว่างการศึกษา Screen Resolution และ Color Depth: เสถียร 99.92% การเปลี่ยนแปลงสัมพันธ์กับการสลับจอมอนิเตอร์และเหตุการณ์ docking station WebGL Max Texture Size: เสถียร 99.99% ไม่มีการเปลี่ยนแปลงที่เกี่ยวข้องกับเบราว์เซอร์เลย เปลี่ยนหนึ่งครั้งบนอุปกรณ์ที่ได้รับการอัปเดตไดรเวอร์ NVIDIA Audio Sample Rate: เสถียร 100% ไม่มีการเปลี่ยนแปลงเลยตลอดทั้ง 200 อุปกรณ์และ 50 การอัปเดต นี่คือสัญญาณที่เสถียรที่สุดเพียงตัวเดียวที่เราติดตาม
Tier 2: เสถียรเป็นส่วนใหญ่ (95-99.5%)
สัญญาณเหล่านี้บางครั้งเปลี่ยนไปพร้อมกับการอัปเดตเบราว์เซอร์ แต่ยังคงเสถียรในการปล่อยรุ่นส่วนใหญ่
Canvas 2D Fingerprint: เสถียร 97.8% การเปลี่ยนแปลงเกิดขึ้นใน Chrome 118 (การอัปเดตเอนจินเรนเดอร์ฟอนต์), Chrome 122 (การเปลี่ยน sub-pixel anti-aliasing) และ Firefox 121 (การอัปเดต text shaping) การเปลี่ยนแปลงแต่ละครั้งกระทบต่ออุปกรณ์ทุกเครื่องบนเบราว์เซอร์นั้นพร้อมกัน — เป็นรูปแบบที่ตรวจจับได้ซึ่งเรารับมือด้วยการจับคู่ที่รับรู้เวอร์ชันเบราว์เซอร์ WebGL Renderer String: เสถียร 98.1% Chrome จัดรูปแบบสตริง ANGLE wrapper ใหม่เป็นครั้งคราว ข้อมูล GPU ที่อยู่เบื้องหลังไม่เปลี่ยน แต่การแทนค่าในรูปแบบสตริงเลื่อนไป เราแยกโมเดล GPU ออกจากสตริงแทนที่จะ hash สตริงโดยตรง Font List: เสถียร 96.4% การอัปเดต OS บางครั้งเพิ่มหรือลบฟอนต์ระบบ การอัปเดตเบราว์เซอร์ไม่ค่อยกระทบต่อการแจงนับฟอนต์ แต่ Chrome 120 เปลี่ยนลำดับการรายงานฟอนต์ ซึ่งทำให้ font fingerprinting แบบ hash เสียหาย เราใช้การเปรียบเทียบแบบเซต (set similarity) แทนการ hash แบบมีลำดับ
Tier 3: เสถียรปานกลาง (80-95%)
สัญญาณเหล่านี้เปลี่ยนด้วยความถี่ที่มีนัยสำคัญ แต่ยังให้คุณค่าในการระบุตัวตนที่มีประโยชน์ในช่วงระหว่างการเปลี่ยนแปลง
Installed Plugins: เสถียร 89.2% การที่ Chrome ยังคงลดขนาดของ array ปลั๊กอิน (navigator.plugins) อย่างต่อเนื่องได้ลบการมองเห็นปลั๊กอินออกทั้งหมดในบางบริบท Firefox ยังคงการแจงนับปลั๊กอิน Safari จำกัดไว้เพียงชุดมาตรฐาน CSS Feature Detection: เสถียร 91.7% ฟีเจอร์ CSS ใหม่ถูกเพิ่มในการปล่อยเบราว์เซอร์แต่ละรุ่น ซึ่งเปลี่ยนชุดฟีเจอร์ที่ตรวจพบโดยการ probe CSS ของเรา เราถ่วงน้ำหนักฟีเจอร์ใหม่ต่ำกว่าฟีเจอร์ที่มีมานานเพื่อลดผลกระทบ Touch Support: เสถียร 93.1% เบราว์เซอร์เดสก์ท็อปบางครั้งเปลี่ยนการรายงาน touch support เมื่อ Chrome ปรับการตรวจจับ device emulation
Tier 4: ผันผวน (<80%)
สัญญาณเหล่านี้เปลี่ยนบ่อยและไม่ควรเป็นจุดยึดหลักในการระบุตัวตน
User Agent String: เสถียร 42.3% โครงการลดขนาด User-Agent ของ Chrome เปลี่ยนรูปแบบสตริงหลายครั้ง Firefox อัปเดตหมายเลขเวอร์ชันในทุกการปล่อยรุ่น Safari แก้ไขสตริงเวอร์ชัน WebKit เป็นประจำ นี่เคยเป็นกระดูกสันหลังของระบบ fingerprinting แบบง่าย ๆ — ระบบเหล่านั้นตอนนี้พังแล้ว Connection Type (navigator.connection): เสถียร 68.4% เปลี่ยนตามการสลับเครือข่าย (WiFi ไปเป็นเซลลูลาร์, เครือข่าย WiFi ที่ต่างกัน) Battery API: เสถียร 71.2% แปรผันตามสถานะการชาร์จและความพร้อมใช้งานของ API เบราว์เซอร์ Chrome จำกัดการเข้าถึง Battery API ในบางบริบท Available Screen Area: เสถียร 76.8% เปลี่ยนตามการมองเห็นทาสก์บาร์, การจัดการหน้าต่าง และการปรับสเกลการแสดงผล
การเปรียบเทียบข้ามเบราว์เซอร์
Chrome เป็นเบราว์เซอร์ที่ผันผวนที่สุดสำหรับความเสถียรของ fingerprinting Google ทำงานอย่างจริงจังเพื่อลดความสามารถในการทำ fingerprint ซึ่งหมายความว่าการอัปเดต Chrome ทำให้สัญญาณเสียหายมากกว่าการอัปเดต Firefox หรือ Safari ตลอดช่วงเวลาการศึกษาของเรา:
Chrome ทำให้สัญญาณเปลี่ยนใน 3.2% ของเซสชันการเก็บข้อมูล Firefox ทำให้สัญญาณเปลี่ยนใน 1.8% ของเซสชันการเก็บข้อมูล Safari ทำให้สัญญาณเปลี่ยนใน 1.1% ของเซสชันการเก็บข้อมูล
ความผันผวนที่ต่ำกว่าของ Safari ส่วนหนึ่งเป็นเพราะ Apple ปล่อยรุ่นน้อยครั้งต่อปี และอีกส่วนหนึ่งเป็นเพราะมาตรการป้องกัน fingerprinting ของ Safari (Intelligent Tracking Prevention) ทำงานที่ระดับเครือข่ายมากกว่าการเปลี่ยนค่าที่ API ส่งกลับ
คำแนะนำเชิงปฏิบัติ
จากการวิเคราะห์นี้ เราขอให้คำแนะนำห้าข้อสำหรับระบบ fingerprinting ในการใช้งานจริง
อย่าใช้ user-agent เป็นจุดยึดในการระบุตัวตน มันเป็นสัญญาณที่มีความแตกต่างแต่เสถียรน้อยที่สุด ใช้สำหรับการตรวจจับเบราว์เซอร์และการให้คะแนนความเชื่อมั่นระดับ Tier 3 เท่านั้น
แยกสัญญาณฮาร์ดแวร์ออกจากสัญญาณซอฟต์แวร์ สัญญาณฮาร์ดแวร์ (GPU, หน้าจอ, เสียง) เสถียรกว่าสัญญาณซอฟต์แวร์ (user agent, plugins, ฟีเจอร์ CSS) 40 เท่า จงถ่วงน้ำหนักให้เหมาะสม
ใช้การเปรียบเทียบแบบเซตสำหรับสัญญาณที่แจงนับได้ รายการฟอนต์, รายการปลั๊กอิน และผลลัพธ์การตรวจจับฟีเจอร์ควรถูกเปรียบเทียบด้วย set similarity หรือเมตริก set-distance ที่คล้ายกัน ไม่ใช่การ hash แบบมีลำดับ การเปลี่ยนลำดับเป็นเรื่องปกติ ส่วนการเปลี่ยนเนื้อหานั้นเกิดขึ้นได้ยาก
ใช้การจับคู่ที่รับรู้เวอร์ชันเบราว์เซอร์ เมื่อ Chrome 118 เปลี่ยนการเรนเดอร์ canvas สำหรับผู้ใช้ Chrome ทุกคนพร้อมกัน ระบบของคุณควรรับรู้ว่านี่คือการอัปเดตเบราว์เซอร์ ไม่ใช่การขาดตัวตนหมู่ ติดตามเวอร์ชันเบราว์เซอร์และใช้ค่าความคลาดเคลื่อนในการจับคู่ที่เฉพาะเจาะจงตามเวอร์ชัน
เฝ้าติดตามความเสถียรของสัญญาณอย่างต่อเนื่อง เปอร์เซ็นต์ความเสถียรของเราอิงจากข้อมูลในอดีต การอัปเดตเบราว์เซอร์ในอนาคตอาจเปลี่ยนโปรไฟล์ความเสถียรของสัญญาณใด ๆ เราทำการเฝ้าติดตามอย่างต่อเนื่องและปรับน้ำหนักของสัญญาณโดยอัตโนมัติเมื่อความเสถียรเปลี่ยนไป
ผลกระทบต่อ tracio.ai
สถาปัตยกรรมการระบุตัวตนแบบหลายชั้น V3 ของเราสะท้อนการวิเคราะห์ความเสถียรนี้โดยตรง สัญญาณ Tier 1 (ฮาร์ดแวร์) ถ่วงน้ำหนัก 60% สัญญาณ Tier 2 (การเรนเดอร์, ฟอนต์) ถ่วงน้ำหนัก 30% สัญญาณ Tier 3 (ข้อมูลเมตาเบราว์เซอร์, การเชื่อมต่อ) ถ่วงน้ำหนัก 10% การถ่วงน้ำหนักนี้ทำให้มั่นใจว่าสัญญาณที่เสถียรที่สุดเป็นตัวขับเคลื่อนการระบุตัวตน ในขณะที่สัญญาณที่ผันผวนมีส่วนช่วยในการให้คะแนนความเชื่อมั่นโดยไม่ทำให้ตัวตนขาดจากกัน
ผลลัพธ์: ความเสถียรในการระบุตัวตน 99.5% ตลอดการอัปเดตเบราว์เซอร์ 50 ครั้ง เทียบกับ 69% สำหรับระบบที่ใช้ fingerprinting แบบ hash แบนราบ ความแตกต่างนี้ไม่ใช่ความชาญฉลาดของอัลกอริทึม — แต่เป็นการวิเคราะห์สัญญาณเชิงประจักษ์ที่นำไปใช้กับการตัดสินใจเชิงสถาปัตยกรรม