Device Fingerprinting โดยไม่ใช้คุกกี้: มันทำงานอย่างไร
ยุคของคุกกี้กำลังจะจบลง นี่คือวิธีที่ device fingerprinting ช่วยระบุตัวตนอย่างต่อเนื่องได้โดยไม่ต้องจัดเก็บข้อมูลใด ๆ ฝั่งไคลเอนต์
ยุคของคุกกี้กำลังจะจบลง Intelligent Tracking Prevention (ITP) ของ Safari จำกัดอายุคุกกี้ไว้ที่ 7 วัน Enhanced Tracking Protection ของ Firefox บล็อกคุกกี้ของบุคคลที่สามทั้งหมด Privacy Sandbox ของ Chrome กำลังเลิกใช้คุกกี้ของบุคคลที่สาม และข้อกำหนดเรื่องการยินยอมตาม GDPR ทำให้ผู้ใช้ปฏิเสธแบนเนอร์คุกกี้มากขึ้นเรื่อย ๆ
สำหรับการป้องกันการฉ้อโกง นี่คือปัญหา ถ้าคุณไม่สามารถระบุอุปกรณ์ได้อย่างต่อเนื่อง คุณก็จะติดตามผู้กระทำผิดซ้ำ ตรวจจับการเปิดหลายบัญชี หรือเชื่อมโยงเซสชันที่น่าสงสัยเข้าด้วยกันไม่ได้ Device fingerprinting แก้ปัญหานี้ด้วยการระบุอุปกรณ์ผ่านคุณลักษณะทางเทคนิคของมัน โดยไม่ใช้คุกกี้ ไม่ใช้ localStorage และไม่มีการจัดเก็บข้อมูลฝั่งไคลเอนต์ในรูปแบบใด ๆ
หมวดหมู่ของสัญญาณ
Passive Fingerprinting (ไม่ต้องใช้ JavaScript)
ก่อนที่หน้าเว็บของคุณจะโหลดเสียด้วยซ้ำ เบราว์เซอร์ก็เผยข้อมูลออกมาผ่านสัญญาณระดับเครือข่ายแล้ว:
TLS fingerprinting (JA4) ข้อความ TLS Client Hello มี cipher suites, extensions, elliptic curves และ signature algorithms เราใช้การแฮชแบบ JA4 ซึ่งเป็นตัวแทนสมัยใหม่ของ JA3 ที่มีความละเอียดดีกว่า
การวิเคราะห์ TCP/IP stack ค่า TCP window size, TTL และการตั้งค่า MSS แตกต่างกันไปในแต่ละระบบปฏิบัติการ Linux, Windows และ macOS ต่างมีการกำหนดค่า TCP stack ที่เป็นเอกลักษณ์เฉพาะตัว
การวิเคราะห์ HTTP header ลำดับของ header, ค่า Accept-Language และค่าความชอบในการเชื่อมต่อแตกต่างกันระหว่างเบราว์เซอร์
Active Fingerprinting (JavaScript ฝั่งไคลเอนต์)
Canvas fingerprinting เราวาดฉากที่ออกแบบมาอย่างพิถีพิถัน ทั้งข้อความเฉพาะ รูปทรงเรขาคณิต และการไล่เฉดสี GPU ที่ต่างกันจะเรนเดอร์สิ่งเหล่านี้ด้วยความแตกต่างเล็กน้อยในระดับพิกเซล อันเนื่องมาจากความแตกต่างของ anti-aliasing, sub-pixel rendering และการผสมสี จากนั้นเราแฮชข้อมูลพิกเซล
WebGL fingerprinting WebGL เปิดเผยสตริงของ vendor/renderer ของ GPU, ขนาด texture สูงสุด, extensions ที่รองรับ และความสามารถของ shader ข้อมูลนี้ระบุรุ่นของ GPU และเวอร์ชันของไดรเวอร์ได้อย่างชัดเจน
AudioContext fingerprinting เราสร้างสัญญาณทดสอบและวิเคราะห์ว่ามันถูกประมวลผลอย่างไร ฮาร์ดแวร์เสียงที่ต่างกันให้ผลลัพธ์ที่วัดค่าความต่างได้ อันเนื่องมาจากความแตกต่างของความแม่นยำแบบ floating-point
การนับรายการฟอนต์ ฟอนต์ของระบบที่มีอยู่แตกต่างกันไปตามระบบปฏิบัติการ language pack และซอฟต์แวร์ที่ติดตั้ง เราทดสอบฟอนต์เชิงวินิจฉัยราว 300 รายการโดยใช้เทคนิคการวัดผ่าน canvas
คุณสมบัติของ Navigator จำนวนคอร์ CPU, หน่วยความจำอุปกรณ์, แพลตฟอร์ม, ภาษา, โซนเวลา, ความละเอียดหน้าจอ, ความลึกของสี รวมถึงความสามารถด้าน pointer และ touch
การวิเคราะห์เอนโทรปี
ไม่ใช่ทุกสัญญาณจะมีน้ำหนักเท่ากัน เราวัดค่าเอนโทรปีของแต่ละสัญญาณ:
| หมวดหมู่สัญญาณ | เอนโทรปีโดยประมาณ |
|---|---|
| Canvas + WebGL รวมกัน | ~18 บิต |
| รายการฟอนต์ | ~8 บิต |
| AudioContext | ~5 บิต |
| คุณสมบัติของ Navigator | ~7 บิต |
| TLS fingerprint | ~6 บิต |
| หน้าจอ + การแสดงผล | ~4 บิต |
| โซนเวลา + ภาษา | ~3 บิต |
เมื่อรวมกันแล้ว สัญญาณกว่า 130 รายการของเราให้เอนโทรปีราว 50 บิตขึ้นไป ซึ่งเพียงพอที่จะระบุอุปกรณ์ที่แตกต่างกันได้อย่างเฉพาะเจาะจงกว่า 1 พันล้านล้านเครื่อง
จากสัญญาณสู่แฮชที่เสถียร
การเก็บสัญญาณดิบเป็นเพียงครึ่งหนึ่งของปัญหาเท่านั้น การอัปเดตเบราว์เซอร์เปลี่ยนสตริง user agent การอัปเดตไดรเวอร์เปลี่ยนพารามิเตอร์ WebGL การติดตั้งฟอนต์เปลี่ยนรายการฟอนต์
Fuzzy Matching
แทนที่จะต้องการการจับคู่แบบตรงเป๊ะ เราใช้อัลกอริทึม fuzzy matching ที่ให้น้ำหนักสัญญาณตามความเสถียรและเอนโทรปี สัญญาณที่เสถียร (canvas, รุ่นของ GPU) มีน้ำหนักมากกว่าสัญญาณที่ผันผวน (user agent, ความละเอียดหน้าจอ)
การสร้างชุดผู้สมัคร (candidate generation) ใช้ locality-sensitive hashing (LSH) กับสัญญาณที่เสถียรที่สุดเพื่อค้นหาการจับคู่ที่เป็นไปได้ การให้คะแนนความคล้ายคลึง (similarity scoring) คำนวณคะแนนแบบถ่วงน้ำหนักครอบคลุมทุกหมวดหมู่สัญญาณ ปรับเทียบให้การเปลี่ยนแปลงปกติของอุปกรณ์ไม่ทำให้ visitor ID เปลี่ยน ในขณะที่การเปลี่ยนอุปกรณ์จริงจะทำให้เปลี่ยน
วิธีนี้ให้ความแม่นยำ 99.5% โดยระบุผู้เยี่ยมชมที่กลับมาซ้ำได้อย่างถูกต้อง ทั้งเมื่อเบราว์เซอร์อัปเดต ล้างคุกกี้ ใช้โหมดไม่ระบุตัวตน และสลับเบราว์เซอร์
สถาปัตยกรรมที่รักษาความเป็นส่วนตัว
การประมวลผลฝั่งเซิร์ฟเวอร์ การคำนวณ fingerprint ทั้งหมดเกิดขึ้นบนเซิร์ฟเวอร์ของเรา เอเจนต์ฝั่งไคลเอนต์เก็บสัญญาณดิบ แต่ไม่ได้คำนวณหรือจัดเก็บแฮชของ fingerprint
ไม่จัดเก็บ PII เราจัดเก็บแฮชของ fingerprint ไม่ใช่สัญญาณดิบ แฮชเป็นฟังก์ชันแบบทางเดียว
ที่ตั้งของข้อมูล ข้อมูลลูกค้าในสหภาพยุโรปถูกประมวลผลและจัดเก็บในศูนย์ข้อมูลของสหภาพยุโรป GDPR มาตรา 6(1)(f) ครอบคลุมการป้องกันการฉ้อโกงในฐานะผลประโยชน์อันชอบธรรม
การระบุตัวตนข้ามเบราว์เซอร์
ความท้าทายที่ยากที่สุดคือการระบุอุปกรณ์เครื่องเดียวกันข้ามเบราว์เซอร์ต่างชนิด เราพึ่งพาสัญญาณที่ไม่ขึ้นกับเบราว์เซอร์ ได้แก่ ฮาร์ดแวร์ GPU, คุณลักษณะของหน้าจอ, โซนเวลา, การตั้งค่าภาษา, ฟอนต์ที่ติดตั้ง (ระดับระบบปฏิบัติการ) และคุณลักษณะของ TCP/IP stack
ความแม่นยำในการเชื่อมโยงข้ามเบราว์เซอร์อยู่ที่ราว 94% ต่ำกว่าการระบุตัวตนภายในเบราว์เซอร์เดียวกัน แต่ก็เพียงพอสำหรับตรวจจับการเปิดหลายบัญชีข้ามเบราว์เซอร์บนอุปกรณ์เครื่องเดียวกัน
การผสานรวม
การเพิ่ม device fingerprinting ใช้โค้ดเพียงสามบรรทัด เอเจนต์โหลดแบบอะซิงโครนัส เก็บสัญญาณภายในเวลาต่ำกว่า 50ms และส่งไปยัง API ของเรา การตอบกลับจากเซิร์ฟเวอร์ประกอบด้วย visitor ID, คะแนนความเชื่อมั่น และ Smart Signals ทั้ง 24 รายการ