Canvas และ WebGL Fingerprinting ในปี 2026
สถานะของ fingerprinting ที่อิงกับ GPU: อะไรเปลี่ยนไปกับ Privacy Sandbox ของ Chrome เราปรับตัวอย่างไร และเหตุใดสัญญาณจากฮาร์ดแวร์จึงยังคงเป็นตัวระบุตัวตนที่เสถียรที่สุด
Canvas
และ
WebGL
fingerprinting เป็นรากฐานสำคัญของการระบุตัวตนอุปกรณ์มาตั้งแต่ต้นทศวรรษ 2010 แต่ภูมิทัศน์นี้ เปลี่ยนแปลงไปอย่างมากกับความริเริ่ม
Privacy Sandbox
ของ Chrome, Enhanced Tracking Protection ของ Firefox และ Intelligent Tracking Prevention ของ Safari นี่คือสถานะของ fingerprinting ที่อิงกับ GPU ในปี 2026 — อะไรเปลี่ยนไป เราปรับตัวอย่างไร และเหตุใด สัญญาณเหล่านี้จึงยังคงขาดไม่ได้
อะไรเปลี่ยนไปกับ Privacy Sandbox ของ Chrome
Privacy Sandbox ของ Chrome ซึ่งทยอยเปิดตัวเริ่มตั้งแต่ปี 2024 ได้นำการเปลี่ยนแปลงหลายอย่างที่ส่งผลต่อ fingerprinting มาใช้ สิ่งที่สำคัญที่สุดคือความริเริ่มเรื่อง partitioned storage ซึ่งลดประสิทธิภาพของการติดตามที่อิงกับคุกกี้ แต่ไม่ได้ส่งผลต่อ canvas หรือ WebGL fingerprinting โดยตรง
อย่างไรก็ตาม Chrome ได้เริ่มทดลองการฉีด noise เข้าไปใน canvas — เพิ่มการรบกวนแบบสุ่มเล็กน้อยเข้าไปในข้อมูลพิกเซลของ canvas เพื่อป้องกัน fingerprinting แบบเป๊ะ ๆ เมื่อเปิดใช้งาน คำสั่งวาดชุดเดียวกันจะให้ผลลัพธ์พิกเซลที่แตกต่างกันเล็กน้อยในแต่ละครั้งที่ทำงาน สิ่งนี้ทำให้ canvas fingerprinting แบบอิง hash ทื่อ ๆ ที่คาดหวังการทำซ้ำได้แบบเป๊ะ ๆ พังลง
การปรับตัวรับกับ noise ใน canvas
การตอบสนองของเราต่อการฉีด noise เข้าไปใน canvas คือการเปลี่ยนจากการจับคู่แบบเป๊ะ ๆ ไปเป็นการจับคู่แบบอิงความคล้าย (similarity) สำหรับสัญญาณ canvas แทนที่จะคำนวณ hash เดียวจากข้อมูลพิกเซลทั้งหมดของ canvas ตอนนี้เราสกัด feature vector หลายชุดจากภูมิภาคและการดำเนินการวาดที่แตกต่างกัน
การฉีด noise มักมีขนาดเล็ก — เปลี่ยนไปไม่กี่พิกเซลต่อเฟรม โดยการสกัดฟีเจอร์ที่ระดับความละเอียดหยาบกว่า (แบ่ง canvas ออกเป็นภูมิภาคและคำนวณสถิติเชิงรวม) เราสามารถระบุลายเซ็นของฮาร์ดแวร์ที่อยู่เบื้องหลังได้แม้จะมี noise อัลกอริทึมการจับคู่ข้ามเซสชันของเราจะเปรียบเทียบ feature vector เหล่านี้โดยใช้ cosine similarity พร้อมกำหนดค่า threshold ที่ปรับมาให้ยอมรับความแปรผันที่สอดคล้องกับฮาร์ดแวร์ ในขณะที่ปฏิเสธอุปกรณ์ที่ต่างกัน
WebGL: ยังคงเป็นขุมทอง
ในขณะที่ canvas fingerprinting เผชิญกับความท้าทายใหม่ ๆ WebGL fingerprinting กลับแทบไม่ได้รับผลกระทบจากความริเริ่มด้านความเป็นส่วนตัว WebGL API เปิดเผยพารามิเตอร์ของฮาร์ดแวร์ — ขนาด texture สูงสุด, รูปแบบความละเอียดของ shader, extension ที่รองรับ — ซึ่งเป็นสิ่งที่มีอยู่โดยธรรมชาติของ GPU และไม่สามารถรบกวนได้ง่าย ๆ โดยไม่ทำให้ฟังก์ชันการทำงานของ WebGL เสียหาย
Chrome ได้พูดถึงการจำกัดการเข้าถึง renderer และ vendor string ของ WebGL (แทนที่ชื่อ GPU เฉพาะรุ่นด้วยป้ายกำกับทั่วไปอย่าง "GPU") แต่การเปลี่ยนแปลงนี้ยังไม่ได้ถูกนำมาใช้อย่างแพร่หลาย และถึงแม้จะถูกนำมาใช้ พารามิเตอร์ WebGL อีกหลายสิบตัวที่เราสอบถามก็ยังคงให้สัญญาณการระบุตัวตนที่โดดเด่นอย่างมากอยู่ดี
GPU ในฐานะจุดยึดของฮาร์ดแวร์
เหตุผลพื้นฐานที่ fingerprinting ที่อิงกับ GPU ยังคงทรงพลังก็คือมันอ่านคุณลักษณะของฮาร์ดแวร์ที่ถูกกำหนดทางกายภาพโดยตัวชิป GPU, ไดรเวอร์ และไปป์ไลน์การเรนเดอร์ คุณลักษณะเหล่านี้ไม่ใช่ทางเลือกด้านซอฟต์แวร์ที่เปลี่ยนได้ง่าย ๆ — แต่เป็นผลจากวิธีที่ซิลิคอนถูกออกแบบและผลิตขึ้น
อุปกรณ์ที่มี NVIDIA RTX 4070 จะรายงานขนาด texture สูงสุดเฉพาะเจาะจง, ความละเอียดของ shader เฉพาะเจาะจง และการรองรับ extension เฉพาะเจาะจงเสมอ เพราะค่าเหล่านั้นถูกกำหนดโดยสถาปัตยกรรมของ GPU วิธีเดียวที่จะเปลี่ยนค่าเหล่านี้คือการใช้ GPU อื่นหรือไดรเวอร์อื่น — และการเปลี่ยนไดรเวอร์นั้นเกิดขึ้นค่อนข้างน้อยสำหรับผู้ใช้ส่วนใหญ่
การเรนเดอร์ Canvas: ก้าวข้ามการทำ hash ระดับพิกเซล
canvas fingerprinting สมัยใหม่ก้าวข้ามการทำ hash ระดับพิกเซลแบบง่าย ๆ เราใช้การดำเนินการวาดที่ออกแบบมาโดยเฉพาะเพื่อขยายความแตกต่างของการเรนเดอร์ที่ขึ้นอยู่กับฮาร์ดแวร์ การเรนเดอร์ข้อความด้วยฟอนต์เฉพาะจะกระตุ้นการทำงานของ font rasterizer เส้นโค้งเบซิเยร์ที่มีจุดควบคุมเฉพาะจะกระตุ้นการทำ curve tessellation ของ GPU ส่วน gradient ที่มี color stop เฉพาะจะกระตุ้นไปป์ไลน์การผสมสี
โดยการเลือกการดำเนินการวาดที่ทำให้ความแปรผันระหว่างรุ่น GPU สูงสุด ในขณะที่ทำให้ความแปรผันระหว่างการรันซ้ำบน GPU เดียวกันต่ำสุด เราสร้างการทดสอบ canvas ที่ทั้งโดดเด่นกว่าและทนทานกว่าวิธีข้อความและรูปทรงแบบง่าย ๆ ที่ไลบรารี fingerprinting ยุคแรกใช้กันไปพร้อม ๆ กัน
WebGL Shader Fingerprinting
เทคนิคใหม่กว่าที่เรานำมาใช้คือ WebGL shader fingerprinting โดยการคอมไพล์โปรแกรม shader เฉพาะและสอบถามคุณสมบัติของสิ่งที่คอมไพล์แล้ว (ความละเอียด, ระดับการปรับให้เหมาะสม, จำนวน instruction) เราสามารถสกัดข้อมูลเกี่ยวกับ shader compiler ของ GPU — อีกหนึ่งคุณลักษณะที่ขึ้นอยู่กับฮาร์ดแวร์ซึ่งแตกต่างกันไปตามตระกูลของ GPU
เทคนิคนี้มีคุณค่าเป็นพิเศษสำหรับการแยกแยะอุปกรณ์ที่มีพารามิเตอร์ WebGL พื้นฐานคล้ายกัน GPU สองรุ่นที่ต่างกันอาจรองรับขนาด texture สูงสุดเท่ากัน แต่ shader compiler ของแต่ละตัวจะสร้างผลลัพธ์ที่คอมไพล์แล้วแตกต่างกันจากซอร์สโค้ด shader ชุดเดียวกัน
ข้อพิจารณาด้านความเป็นส่วนตัว
fingerprinting ที่อิงกับ GPU เช่นเดียวกับ fingerprinting ทุกรูปแบบ ต้องถูกใช้อย่างมีความรับผิดชอบ เราใช้สัญญาณเหล่านี้เพื่อวัตถุประสงค์ที่ชอบธรรม — การป้องกันการฉ้อโกง, bot detection และความปลอดภัยของบัญชี — ไม่ใช่เพื่อการติดตามข้ามเว็บไซต์หรือการโฆษณา การติดตั้งใช้งานแบบ cloud-hosted ของเรารับประกันว่าข้อมูล fingerprint จะอยู่บนโครงสร้างพื้นฐานของลูกค้าเรา ตัดการแบ่งปันข้อมูลกับบุคคลที่สามออกไป
ภูมิทัศน์ด้านความเป็นส่วนตัวจะยังคงพัฒนาต่อไป เบราว์เซอร์อาจนำมาตรการป้องกันเพิ่มเติมที่ส่งผลต่อ GPU fingerprinting มาใช้ กลยุทธ์ของเราคือการปรับตัวอย่างต่อเนื่อง — ค้นหาสัญญาณใหม่ ๆ ที่ขึ้นอยู่กับฮาร์ดแวร์เมื่อสัญญาณเดิมถูกจำกัด ในขณะที่ยังคงความแม่นยำและความเสถียรที่ลูกค้าของเราพึ่งพา