กลับไปบล็อก

ตรวจสอบการเปิดเผย Browser Fingerprint: 6 จุดเช็กความสอดคล้อง

หน้าทดสอบ fingerprint แสดงข้อมูลจำนวนมากที่เว็บไซต์อ่านได้อยู่แล้ว การตรวจ 6 จุดนี้ช่วยค้นหาความขัดแย้งระหว่างเบราว์เซอร์ ระบบ ภูมิภาค เครือข่าย และการเรนเดอร์ เพราะสัญญาณที่ไม่สอดคล้องกันมักสังเกตได้ง่ายกว่าค่าที่ผิดปกติเพียงค่าเดียว

เปิดหน้าทดสอบ browser fingerprint ใด ๆ แล้วคุณจะเห็นรายการฟิลด์ยาว ๆ เช่น UA, หน้าจอ, เขตเวลา, ฟอนต์, ผลการเรนเดอร์ Canvas และพารามิเตอร์ฮาร์ดแวร์ หลายคนมอง “ความเป็นเอกลักษณ์” ก่อน แต่จริง ๆ แล้วจุดนั้นสำคัญน้อยที่สุด สิ่งที่สำคัญกว่าคือข้อมูลทั้งหมดสอดคล้องกันหรือไม่

浏览器指纹暴露自查:六项核对与自洽判断的关键步骤与判断维度示意图

เว็บไซต์อ่านข้อมูลอะไรได้อยู่แล้ว

Fingerprint ไม่ได้ถูกเก็บแบบ cookie คุณสามารถลบหรือบล็อก cookie หรือหลีกเลี่ยงด้วย private browsing ได้ แต่ fingerprint มาจากการตั้งค่าของเบราว์เซอร์และอุปกรณ์เอง UA มีประเภทและเวอร์ชันของเบราว์เซอร์ รวมถึงระบบปฏิบัติการและเวอร์ชัน นอกจากนี้ยังมี plugins ที่ติดตั้ง ความละเอียดหน้าจอและ color depth รายการฟอนต์ เขตเวลาและภาษาที่ต้องการ ประเภท CPU รุ่น GPU และหน่วยความจำ IP address ผู้ให้บริการและประเภทการเชื่อมต่อ ตลอดจนผลการเรนเดอร์จาก HTML5 interfaces เช่น Canvas และ WebGL เมื่อรวมกัน ฟิลด์เหล่านี้จะกลายเป็นตัวระบุที่โดยทั่วไปแทบไม่เปลี่ยนเมื่อเปลี่ยน IP ล้าง cookies หรือใช้ private mode แพลตฟอร์มใช้หลักการพื้นฐานเดียวกันเมื่อตรวจว่าบัญชีอาจเชื่อมโยงกันหรือไม่

เริ่มจากเทียบ 3 รายการกับระบบ

User Agent ควรตรวจเป็นอย่างแรก เพราะเป็นวิธีที่เบราว์เซอร์ใช้บอกข้อมูลเกี่ยวกับตัวเอง คัดลอก UA จากหน้าทดสอบ จากนั้นตรวจ browser version ในการตั้งค่าเบราว์เซอร์ และตรวจ operating system version ในการตั้งค่าระบบ หากระบบหรือ kernel version ที่ UA ระบุไม่ตรงกับเครื่องจริง หรือเก่ากว่าเวอร์ชันปัจจุบันที่ใช้งานกันทั่วไปอย่างชัดเจน นี่คือความไม่สอดคล้องที่สังเกตได้ง่าย

เขตเวลาควรตรงกับภูมิภาคของ network exit หน้าทดสอบมักแสดงเขตเวลาปัจจุบันโดยตรง และสคริปต์ง่าย ๆ ที่อ่านเขตเวลาก็จะให้ค่าเดียวกัน ตรวจเพิ่มด้วยหน้าค้นหา IP ใด ๆ เพื่อดูว่า exit IP อยู่ในภูมิภาคใด หากสองอย่างชี้ไปคนละภูมิภาค ควรแก้ความคลาดเคลื่อนนั้น

ภาษาและภูมิภาคเป็นสัญญาณอ่อนเมื่อดูแยกกัน แต่มีประโยชน์เมื่อดูร่วมกัน ตรวจรายการที่ navigator.language และ navigator.languages ส่งกลับ แล้วเทียบกับภาษาที่ใช้ทั่วไปใน exit region หากเขตเวลาอยู่สหรัฐฯ ภาษาเป็นภาษาจีน และ exit อยู่ยุโรป การผสมแบบนี้จะเด่นกว่าความผิดปกติของรายการใดรายการหนึ่ง

หน้าจอ ทางออกเครือข่าย และลักษณะการเรนเดอร์

สำหรับข้อมูลหน้าจอและฮาร์ดแวร์ ให้ดูสองเรื่อง: ค่าต่าง ๆ พบได้ทั่วไปหรือไม่ และสอดคล้องกับประเภทอุปกรณ์ที่ UA ระบุหรือไม่ สามารถดู resolution, pixel ratio, พื้นที่ใช้งานได้, จำนวน CPU cores และ memory ไปพร้อมกัน ความละเอียดแบบโทรศัพท์แต่ใช้ desktop UA เป็นตัวอย่างของความขัดแย้งที่พบบ่อย

WebRTC ควรตรวจแยกต่างหาก เพราะอาจเปิดเผยข้อมูลเครือข่ายจริง หน้าทดสอบมักแสดงเป็นหัวข้อแยก ดูว่ามี local network address เช่นที่ขึ้นต้นด้วย 192.168 หรือ 10 หรือแม้แต่ public exit address จริงหรือไม่ หากเปิด proxy แล้วแต่ยังเห็นที่อยู่จริง แสดงว่า traffic นั้นไม่ได้วิ่งผ่าน proxy จุดนี้มีความสำคัญสูงสุด

สำหรับ Canvas และ WebGL ให้ดูว่าผลลัพธ์คงที่หรือไม่ และสอดคล้องกับ GPU model ที่ระบุหรือไม่ มีรายละเอียดหนึ่งที่สำคัญ: หากเปิดหลาย environment พร้อมกันบนเครื่องเดียวกันแล้วทั้งหมดให้ rendering values เหมือนกันทุกประการ ก็จะเชื่อมโยงกันได้ง่ายกว่ากรณีที่ค่ามีความแตกต่างหรือ noise บ้าง

ความขัดแย้งเด่นกว่าค่าที่ไม่สมจริงเพียงค่าเดียว

แพลตฟอร์มไม่ได้ต้องการให้อุปกรณ์ทุกเครื่องมีความเป็นเอกลักษณ์อย่างสมบูรณ์ สิ่งที่ต้องการประเมินคือข้อมูลทั้งชุดดูเหมือนมาจากเครื่องปกติหรือไม่ ค่าเดียวที่ไม่ค่อย “สมจริง” เช่น resolution ที่พบไม่บ่อย มักเป็นเพียงสัญญาณอ่อน แต่เมื่อหลายฟิลด์ขัดแย้งกัน ความผิดปกติจะตรวจพบได้ง่ายกว่ามาก UA บอกว่าเป็น Windows แต่รายการฟอนต์ดูเหมือน macOS; เขตเวลาอยู่สหรัฐฯ ภาษาเป็นภาษาจีน และ exit อยู่ยุโรป; resolution เป็นแบบโทรศัพท์ แต่ UA เป็นเดสก์ท็อปเบราว์เซอร์ ความขัดแย้งแบบใดแบบหนึ่งก็อาจทำให้การปรับแต่งรายละเอียดในจุดอื่นหมดความหมายได้ ดังนั้นการตรวจด้วยตนเองควรหา hard contradiction ก่อน แล้วค่อยปรับรายละเอียดของพารามิเตอร์

ถ้าจะปรับแค่ 3 จุด ให้เรียงแบบนี้

อันดับแรกคือ WebRTC leak เพราะเปิดเผยข้อมูลเครือข่ายจริง อันดับสองคือให้เขตเวลาและภาษาสอดคล้องกับ exit region เพราะความคลาดเคลื่อนเหล่านี้สะสมจนกลายเป็นโปรไฟล์ที่ผิดปกติได้ง่าย อันดับสามคือการจัดการ Canvas และ WebGL เพื่อไม่ให้เครื่องเดียวกันเปิดเผยค่า rendering ที่คงที่และเป็นเอกลักษณ์โดยตรง

มีข้อจำกัดเชิงปฏิบัติด้วย: การปิดหรือจำกัด JavaScript สามารถกันการเก็บข้อมูลได้บางส่วน แต่จะลดความสามารถในการใช้งานของเว็บไซต์อย่างชัดเจน Privacy browser มีการป้องกันบางอย่างในตัวและมักเพียงพอสำหรับการใช้งานทั่วไป แต่จะยืดหยุ่นน้อยลงเมื่อจำเป็นต้องรักษาหลาย identity ที่ไม่เกี่ยวข้องกันเป็นเวลานาน

วิธีดูแลหลาย environment

เป้าหมายไม่ใช่การเปลี่ยนเป็น fingerprint แบบสุ่มทั้งหมดทุกครั้ง แต่ให้แต่ละ environment คงที่ภายในตัวเองและแตกต่างจาก environment อื่น ใช้ PurpleMark สร้าง browser environment แยกสำหรับแต่ละ account จัดการพารามิเตอร์อย่าง Canvas แยกกัน แล้วใช้หน้าทดสอบตรวจความสอดคล้องของแต่ละ environment Environment ที่ผ่านการตรวจรอบนี้จึงเหมาะกับการใช้งานระยะยาว

ท้ายที่สุด fingerprint testing มีเพียงสองเป้าหมาย: ดูว่าคุณกำลังเปิดเผยอะไร และยืนยันว่าข้อมูลทั้งชุดสอดคล้องกัน ความเป็นเอกลักษณ์คือเรื่องที่ควรกังวลน้อยที่สุด