Browser fingerprinting: เว็บไซต์อ่านอะไรจากคุณจริง ๆ

ทัวร์ทีละฟิลด์ของค่าที่เว็บไซต์เก็บ ตั้งแต่ canvas และ WebGL ไปจนถึงเสียง ฟอนต์ หน้าจอ และเขตเวลา และทำไมตัวตนที่สอดคล้องกันจึงดีกว่าตัวตนที่สุ่ม
Browser fingerprinting คือการระบุเบราว์เซอร์จากค่าที่มันรายงาน ไม่ใช่จากสิ่งที่มันเก็บไว้ ไม่ต้องใช้คุกกี้ เบราว์เซอร์เพียงตอบคำถามที่หน้าเว็บใด ๆ ได้รับอนุญาตให้ถาม และคำตอบทั้งหมดรวมกันก็โดดเด่นพอที่จะจำได้อีกครั้ง
ค่าที่ถูกเก็บ
สคริปต์ fingerprinting ส่วนใหญ่อ่านจากพื้นผิวชุดเดียวกันไม่กี่ชุด
ค่าที่เห็นชัด
- User agent มีชื่อเบราว์เซอร์ เวอร์ชัน และแพลตฟอร์ม และถูกส่งไปกับทุกคำขอ
- หน้าจอรายงานความกว้าง ความสูง ความลึกของสี อัตราส่วนพิกเซล และพื้นที่ทำงานที่ใช้ได้
- ภาษาและเขตเวลาครอบคลุม locale ที่เบราว์เซอร์รายงานและออฟเซ็ตที่มันคำนวณ
- คำใบ้ด้านฮาร์ดแวร์ให้จำนวนโปรเซสเซอร์ที่รายงาน และในบางเบราว์เซอร์ก็มีตัวเลขหน่วยความจำโดยประมาณ
ค่าจากการเรนเดอร์
นี่คือค่าที่คนหมายถึงเมื่อพูดถึง fingerprinting เพราะมันเป็นทางอ้อม หน้าเว็บขอให้เบราว์เซอร์วาดบางอย่าง แล้วอ่านกลับว่าวาดอะไรออกมาจริง ๆ
- งาน canvas เรนเดอร์ข้อความและรูปทรงลงใน canvas นอกหน้าจอและแฮชมัน ผลลัพธ์ต่างกันไปตามกราฟิกสแต็ก ฟอนต์ และ anti-aliasing
- WebGL เปิดเผยสตริง vendor และ renderer ของอะแดปเตอร์กราฟิก รวมทั้งแฮชของฉากที่เรนเดอร์
- เสียงรันออสซิลเลเตอร์ผ่านกราฟประมวลผลเสียงและแฮชผลลัพธ์ พฤติกรรมจุดลอยตัวต่างกันเล็กน้อยระหว่างสแต็ก
- การตรวจจับฟอนต์วัดข้อความในฟอนต์ตัวเลือก และอนุมานว่าติดตั้งตัวไหนจากการวัดที่ต่างกัน
ค่าด้านเครือข่าย
- ที่อยู่ที่คำขอมาจาก และสิ่งที่ฐานข้อมูลตำแหน่งที่ตั้งบอกเกี่ยวกับมัน
- WebRTC ซึ่งอาจเผยที่อยู่ที่การเชื่อมต่อจะไม่เปิดเผยตามปกติ
- ลำดับและเนื้อหาของฟิลด์ TLS และ HTTP handshake ซึ่งต่างกันตามไคลเอนต์
ทำไมการสุ่มทุกฟิลด์จึงเป็นสัญชาตญาณที่ผิด
การป้องกันที่ฟังดูสมเหตุสมผลคือเปลี่ยนทุกอย่างในทุกการเข้าชม แต่มันย้อนกลับมาทำร้ายคุณ ด้วยสองเหตุผล
เหตุผลแรกคือความขัดแย้ง ฟิลด์ที่สุ่มไม่รู้จักกัน user agent ที่อ้างว่าเป็น Windows คู่กับสตริง renderer ของ WebGL ที่มีเฉพาะบนฮาร์ดแวร์ Apple เป็นสัญญาณที่แรงกว่าค่าใดค่าหนึ่งเพียงลำพัง เครื่องจริงสอดคล้องกันภายใน มีแต่เครื่องสังเคราะห์เท่านั้นที่ขัดแย้งกับตัวเอง
เหตุผลที่สองคือความไม่เสถียร บัญชีที่รายงานอุปกรณ์ต่างกันในทุกการเข้าชมกำลังอธิบายสิ่งที่ไม่มีคนจริงคนไหนเป็นเจ้าของ ความสม่ำเสมอตลอดเวลาคือหน้าตาของผู้ใช้ทั่วไป
ตัวตนของโปรไฟล์ครอบคลุมอะไรบ้าง
| พื้นผิว | จัดการโดย |
|---|---|
| User agent และแพลตฟอร์ม | สร้างพร้อมกัน เพื่อให้แพลตฟอร์มที่อ้างตรงกับค่าโดยรอบ |
| หน้าจอและอัตราส่วนพิกเซล | คงที่ต่อโปรไฟล์ เลือกจากขนาดที่จอจริงรายงาน |
| เขตเวลาและ locale | ตั้งต่อโปรไฟล์ และจับคู่กับเส้นทางเครือข่ายที่ใช้ |
| Canvas, WebGL และเสียง | ได้รับการจัดการที่คงที่ต่อโปรไฟล์ เหมือนเดิมทุกครั้งที่เปิด |
| ฟอนต์ | ชุดต่อโปรไฟล์ที่สอดคล้องกับแพลตฟอร์มที่โปรไฟล์อ้าง |
| WebRTC | จำกัดไว้เพื่อไม่ให้ขัดแย้งกับเส้นทางเครือข่ายของโปรไฟล์ |
ตรวจงานของคุณเอง
เปิดโปรไฟล์และเข้าหน้าทดสอบ fingerprinting หลายแห่งเผยแพร่ค่าที่อ่านได้ ฟรี สองสิ่งที่ควรตรวจอาจไม่ใช่สิ่งที่คุณคิด
- ค่าสอดคล้องกันเองหรือไม่ แพลตฟอร์ม ฟอนต์ สตริงกราฟิก และเขตเวลาควรอธิบายเครื่องที่น่าเชื่อถือเครื่องเดียว
- เหมือนครั้งก่อนหรือไม่ ปิดโปรไฟล์ เปิดอีกครั้ง แล้วโหลดการทดสอบซ้ำ โปรไฟล์ที่ค่าเปลี่ยนไปมาระหว่างการเปิดไม่เสถียร และความเสถียรคือคุณสมบัติที่สำคัญ
คะแนนความหายากบนหน้าทดสอบเป็นตัวเลขที่มีประโยชน์น้อยที่สุด มันวัดคุณเทียบกับผู้เข้าชมของหน้านั้น ซึ่งส่วนใหญ่เป็นคนที่กำลังทดสอบเบราว์เซอร์ antidetect


