การติดตาม Digital Footprint ทำงานเบื้องหลังอย่างไร
ตั้งแต่ TLS handshake ไปจนถึงการเรนเดอร์ canvas — เราสร้าง digital footprint ของอุปกรณ์ขึ้นใหม่จากสัญญาณ passive กว่า 130 รายการโดยไม่ใช้คุกกี้หรือที่จัดเก็บข้อมูล
อุปกรณ์ทุกเครื่องที่เชื่อมต่ออินเทอร์เน็ตทิ้งร่องรอยของสิ่งประดิษฐ์ทางเทคนิคเอาไว้ — นั่นคือ digital footprint ที่ tracio.ai เราสร้าง footprint นี้ขึ้นใหม่จากสัญญาณ passive กว่า 130 รายการที่เก็บได้ระหว่างการโหลดหน้าเว็บครั้งเดียว โดยไม่พึ่งพาคุกกี้ localStorage หรือที่จัดเก็บข้อมูลฝั่งไคลเอนต์แบบถาวรใด ๆ บทความนี้จะอธิบายอย่างละเอียดว่ากระบวนการนี้ทำงานอย่างไร
เลเยอร์การเก็บสัญญาณ
เมื่อ JavaScript agent ของเราโหลดในเบราว์เซอร์ของผู้เยี่ยมชม มันจะเริ่มเก็บสัญญาณข้ามหลายหมวดหมู่พร้อมกัน การเรนเดอร์ canvas การสอบถามพารามิเตอร์ WebGL การประมวลผล AudioContext การแจกแจงฟอนต์ และการอ่านค่าคุณสมบัติ navigator ทั้งหมดทำงานแบบขนาน กระบวนการเก็บทั้งหมดเสร็จสิ้นภายในไม่ถึง 50 มิลลิวินาทีบนฮาร์ดแวร์สมัยใหม่
ประเด็นสำคัญคือ สัญญาณแต่ละรายการจับภาพแง่มุมที่แตกต่างกันของสแตกฮาร์ดแวร์และซอฟต์แวร์ของอุปกรณ์ การเรนเดอร์ canvas สะท้อน GPU ไดรเวอร์ และเอนจินเรนเดอร์ฟอนต์ พารามิเตอร์ WebGL เปิดเผยรุ่นและความสามารถของการ์ดจอ AudioContext เผยให้เห็นความแตกต่างในวิธีที่ audio DSP ประมวลผลการดำเนินการทศนิยม (floating-point) คุณสมบัติ navigator รายงานจำนวนคอร์ CPU หน่วยความจำ แพลตฟอร์ม และการตั้งค่าภาษา
ทีมของเราวัดสิ่งนี้จากเหตุการณ์ 2 พันล้านรายการเมื่อเดือนที่แล้ว เวลาเก็บ median คือ 38ms และ 99th percentile คือ 52ms เราลองแนวทางแบบตรงไปตรงมาก่อนจริง ๆ — เก็บสัญญาณแบบลำดับ ปรากฏว่าช้ากว่าถึง 40 เท่า การเก็บแบบขนานพร้อม timeout fence เป็นหนึ่งในการตัดสินใจเชิงสถาปัตยกรรมแรก ๆ ที่เราทำถูกต้อง
TLS Fingerprinting: เลเยอร์แรก
ก่อนที่ JavaScript ของเราจะเริ่มทำงานด้วยซ้ำ เบราว์เซอร์ได้เปิดเผยข้อมูลสำคัญไปแล้วผ่าน TLS handshake ข้อความ Client Hello มีชุด cipher suites ที่เบราว์เซอร์รองรับ TLS extensions ที่มันใช้ elliptic curves ที่มันต้องการ และ signature algorithms ที่มันยอมรับ ข้อมูลนี้ถูกกำหนดโดยไลบรารี TLS ของเบราว์เซอร์ และแตกต่างกันอย่างมากในแต่ละตระกูลเบราว์เซอร์ เวอร์ชัน และระบบปฏิบัติการ
เราจับ TLS fingerprint นี้ด้วยการทำ JA4 hashing — ตัวแทนสมัยใหม่ของ JA3 ที่ให้ความละเอียดที่ดีกว่าและความเสถียรข้ามเวอร์ชัน JA4 hash เพียงอย่างเดียวสามารถแยก Chrome จาก Firefox จาก Safari และมักจำกัดการระบุตัวตนให้เหลือช่วงเวอร์ชันเบราว์เซอร์เฉพาะได้ เมื่อรวมกับสัญญาณฝั่งไคลเอนต์ของเรา มันจึงมอบเลเยอร์ cross-validation ที่ปลอมแปลงได้ยากอย่างยิ่ง
Canvas และ GPU Fingerprinting
Canvas fingerprinting ใช้ประโยชน์จากข้อเท็จจริงที่ว่า GPU ต่างกันเรนเดอร์คำสั่งการวาดชุดเดียวกันโดยมีความแตกต่างระดับพิกเซลที่ละเอียดอ่อน Canvas API ช่วยให้เราวาดฉากที่ออกแบบอย่างพิถีพิถัน — สตริงข้อความเฉพาะในหลายฟอนต์ รูปทรงเรขาคณิตที่มีพิกัดเฉพาะ และเกรเดียนต์ที่มี color stops ที่แม่นยำ — แล้วคำนวณ hash ของข้อมูลพิกเซลที่ได้
ความแตกต่างของการเรนเดอร์มาจากความแปรผันในอัลกอริทึม anti-aliasing การเรนเดอร์แบบ sub-pixel การผสมสี และ font hinting ในแต่ละรุ่น GPU และเวอร์ชันไดรเวอร์ แม้แต่อุปกรณ์สองเครื่องที่มีรุ่น GPU เดียวกันก็อาจสร้างผลลัพธ์ canvas ที่ต่างกันได้หากใช้เวอร์ชันไดรเวอร์หรือระบบปฏิบัติการต่างกัน สิ่งนี้ทำให้ canvas hash เป็นหนึ่งในสัญญาณที่โดดเด่นที่สุดของเรา
WebGL Hardware Profiling
WebGL API
เปิดเผยข้อมูลโดยละเอียดเกี่ยวกับระบบย่อยกราฟิกที่ไปไกลกว่าสตริง renderer และ vendor มาก เราสอบถามขนาด texture สูงสุด รูปแบบความแม่นยำของ shader ส่วนขยายที่รองรับ ขนาด viewport และพารามิเตอร์อีกหลายสิบรายการที่แตกต่างกันในแต่ละรุ่น GPU และการกำหนดค่าไดรเวอร์
การรวมพารามิเตอร์เหล่านี้เข้าด้วยกันสร้างโปรไฟล์ฮาร์ดแวร์ที่ละเอียด ตัวอย่างเช่น อุปกรณ์ที่มี NVIDIA RTX 4070 จะรายงานขนาด texture สูงสุด ความแม่นยำ shader และการรองรับส่วนขยายที่ต่างจากอุปกรณ์ที่มี AMD RX 7800 XT โปรไฟล์ฮาร์ดแวร์นี้เสถียรโดยเนื้อแท้ — มันไม่เปลี่ยนแปลงตามการอัปเดตเบราว์เซอร์ เปลี่ยนเฉพาะเมื่อฮาร์ดแวร์หรือไดรเวอร์เปลี่ยนเท่านั้น
Audio Processing Fingerprinting
Web Audio API มอบแหล่งสัญญาณที่ขึ้นอยู่กับฮาร์ดแวร์อีกแหล่งหนึ่ง เราสร้าง oscillator node เชื่อมต่อกับ dynamics compressor และวัดบัฟเฟอร์เอาต์พุต ความแตกต่างในความแม่นยำของทศนิยม การนำ DSP ไปใช้งาน และอัลกอริทึม resampling ในแต่ละฮาร์ดแวร์เสียงและระบบปฏิบัติการสร้างความแปรผันที่วัดได้ในเอาต์พุต
Audio fingerprints มีความเป็นเอกลักษณ์ปานกลางแต่มีความเสถียรที่ยอดเยี่ยม ไปป์ไลน์การประมวลผลเสียงแทบไม่เปลี่ยนแปลงเว้นแต่ผู้ใช้จะเปลี่ยนฮาร์ดแวร์เสียงหรือติดตั้งระบบปฏิบัติการใหม่ สิ่งนี้ทำให้สัญญาณเสียงเป็นจุดยึดที่มีค่าในระบบระบุตัวตนแบบหลายชั้นของเรา
Signal Fusion และการระบุอัตลักษณ์
สัญญาณดิบถูกเข้ารหัสและส่งไปยัง server ของเรา ซึ่งเอนจินระบุตัวตนอุปกรณ์จะประมวลผลผ่านระบบ hashing สามชั้น สัญญาณระดับฮาร์ดแวร์ (canvas, WebGL, audio) ก่อตัวเป็น Tier 1 — อัตลักษณ์แกนกลางที่เสถียร สัญญาณระดับเบราว์เซอร์ (feature detection, คุณสมบัติ CSS, ความสามารถของสื่อ) ก่อตัวเป็น Tier 2 ประมวลผลผ่านการจับคู่ข้าม session เพื่อรองรับการเลื่อนไหล (drift) ที่คาดว่าจะเกิดจากการอัปเดตเบราว์เซอร์ สัญญาณที่ผันผวน (user agent, timezone, ภาษา) ก่อตัวเป็น Tier 3 ซึ่งมีส่วนช่วยในการให้คะแนนความเชื่อมั่นโดยไม่ขับเคลื่อนการตัดสินใจเรื่องอัตลักษณ์
อัลกอริทึม fusion ถ่วงน้ำหนักแต่ละสัญญาณตามความเป็นเอกลักษณ์และความเสถียรของมัน การจับคู่บน canvas hash ที่หายากมีน้ำหนักมากกว่าการจับคู่บนความละเอียดหน้าจอทั่วไปมาก แนวทางการถ่วงน้ำหนักนี้รับประกันว่าการระบุตัวตนยังคงแม่นยำแม้เมื่อสัญญาณบางส่วนเปลี่ยนแปลง
ไม่มีที่จัดเก็บ ไม่มีคุกกี้
หลักการออกแบบที่สำคัญของระบบเราคือ การระบุตัวตนไม่ขึ้นอยู่กับที่จัดเก็บข้อมูลฝั่งไคลเอนต์รูปแบบใด ๆ เราไม่ตั้งคุกกี้ ไม่เขียนลง localStorage และไม่ใช้ IndexedDB เพื่อการติดตาม visitor ID ได้มาจากลักษณะเฉพาะโดยเนื้อแท้ของอุปกรณ์ทั้งหมด — ฮาร์ดแวร์ สแตกซอฟต์แวร์ การกำหนดค่าเครือข่าย นั่นหมายความว่าการระบุตัวตนอยู่รอดผ่านการล้างคุกกี้ โหมดไม่ระบุตัวตน และแม้แต่การติดตั้งเบราว์เซอร์ใหม่
ความเป็นส่วนตัวโดยสถาปัตยกรรม
เนื่องจากเราเก็บเฉพาะแอตทริบิวต์ทางเทคนิคของเบราว์เซอร์ — ไม่มีประวัติการเข้าชม ไม่มีข้อมูลฟอร์ม ไม่มีเนื้อหาส่วนบุคคล — ผลกระทบต่อความเป็นส่วนตัวจึงน้อยที่สุด W3C Fingerprinting Guidance ระบุแนวปฏิบัติที่ดีที่สุดสำหรับการใช้สัญญาณเบราว์เซอร์อย่างมีความรับผิดชอบ และสถาปัตยกรรมของเราสอดคล้องกับหลักการเหล่านี้ ด้วยการปรับใช้แบบ cloud-hosted การประมวลผลทั้งหมดเกิดขึ้นบนโครงสร้างพื้นฐานของคุณ ไม่มีข้อมูลผู้เยี่ยมชมใดไปถึง server ของเรา สถาปัตยกรรมนี้ทำให้การปฏิบัติตาม GDPR, CCPA และกฎระเบียบความเป็นส่วนตัวอื่น ๆ เป็นเรื่องตรงไปตรงมา