PowerScan
TH

อธิบาย canvas fingerprinting: ทำไมเบราว์เซอร์ที่เหมือนกันจึงวาดพิกเซลต่างกัน

ลายนิ้วมือเบราว์เซอร์ · อ่าน 6 นาที · โดย PowerScan

ภาพ: Unsplash

Canvas fingerprinting เป็นเทคนิคที่คนส่วนใหญ่เคยได้ยินและน้อยคนอธิบายได้ แนวคิดง่ายมาก คือขอให้เบราว์เซอร์วาดบางอย่าง อ่านพิกเซลกลับมา แล้วแฮชมัน ส่วนที่น่าสนใจคือทำไมพิกเซลจึงต่างกันระหว่างเครื่องตั้งแต่แรก

การวาด

สคริปต์ fingerprinting สร้าง <canvas> นอกหน้าจอ ขอ 2D context และวาดลำดับสั้น ๆ เช่น สี่เหลี่ยมที่เติมสี ข้อความในฟอนต์ที่ระบุชื่อ อาจมีไล่เฉดสี เส้นโค้ง อีโมจิ จากนั้นเรียก toDataURL() หรือ getImageData() เพื่ออ่านผลลัพธ์ และส่งไบต์ผ่านฟังก์ชันแฮช ผลลัพธ์เป็นสตริงสั้น ๆ เช่น 71ae464e สตริงนั้นคือ "แฮช canvas"

ไม่มีอะไรเกี่ยวกับการวาดที่เป็นความลับ และไม่มีอะไรถูกส่งไปที่ GPU ที่หน้าเว็บอธิบายไม่ได้อยู่แล้ว ข้อมูลอยู่ในการเรนเดอร์ ไม่ใช่ในคำสั่ง

ทำไมพิกเซลจึงต่างกัน

ข้อความคือแหล่งความแปรผันหลัก การเรนเดอร์ตัวอักษรเกี่ยวข้องกับไฟล์ฟอนต์ที่ถูกเลือกจริง (ฟอนต์สำรองต่างกันตามระบบปฏิบัติการ) กลยุทธ์ hinting และ anti-aliasing (เฉดเทาหรือซับพิกเซล และลำดับซับพิกเซลแบบไหน) ตัว rasteriser (FreeType, DirectWrite, CoreText หรือของเบราว์เซอร์เอง) และว่า GPU หรือ CPU เป็นผู้ทำ compositing แต่ละอย่างสร้างพิกเซลขอบที่ต่างกันเล็กน้อย พิกเซลสีเทาอ่อนหนึ่งพิกเซลที่ขอบของ "e" ก็พอจะเปลี่ยนแฮชทั้งหมด

ไล่เฉดสีและเส้นโค้งเพิ่มอีก ไดรเวอร์กราฟิกที่ต่างกันและเส้นทาง anti-aliasing ที่ต่างกันปัดค่ากลางต่างกัน ผลคือสองเครื่องที่ใช้เบราว์เซอร์เวอร์ชันเดียวกันแต่ GPU ไดรเวอร์ หรือระบบปฏิบัติการต่างกันมักสร้างแฮชต่างกัน ขณะที่เครื่องเดียวกันสร้างแฮชเดิมทุกครั้ง คงที่และหลากหลาย ซึ่งเป็นสิ่งที่ตัวติดตามต้องการพอดี

แฮชบอกอะไรเว็บไซต์

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

เบราว์เซอร์ทำอะไรกับเรื่องนี้

Firefox เมื่อเปิด resist-fingerprinting คืน canvas ว่างหรือสุ่ม และอาจถามขอสิทธิ์เข้าถึง canvas Brave เพิ่มการรบกวนแบบสุ่มเล็กน้อยให้การอ่าน canvas ดังนั้นแฮชเปลี่ยนระหว่างไซต์และเซสชัน Safari จำกัดฟอนต์ที่มองเห็นได้และจำกัดการอ่านกลับบางอย่าง Chromium เองไม่สุ่ม canvas เบราว์เซอร์ที่สร้างบนมันและมุ่งควบคุม fingerprint ทำด้วยแพตช์ของตัวเอง และคุณภาพของแพตช์ต่างกัน

สัญญาณรบกวนไม่ฟรี แฮช canvas ที่เปลี่ยนทุกการเข้าชมเป็นสัญญาณในตัวมันเอง เพราะเบราว์เซอร์จริงไม่ทำแบบนั้น กลยุทธ์ที่ดีกว่าสำหรับโปรไฟล์เบราว์เซอร์ที่แยกออกมาคือแฮชที่น่าเชื่อถือและสอดคล้อง เพื่อให้ดูเหมือนเครื่องธรรมดาเครื่องเดียว ไม่ใช่เครื่องที่ต่างกันทุกชั่วโมง

เครื่องมือวินิจฉัยแสดงอะไร

PowerScan วาดภาพเล็ก ๆ ของตัวเองและแสดงแฮชให้คุณ มันไม่เคยอัปโหลด ค่านี้มีอยู่ในแท็บของคุณเท่านั้น โหลดซ้ำและแฮชควรเหมือนเดิม หากไม่ใช่ แสดงว่ามีบางอย่างในเบราว์เซอร์ฉีดสัญญาณรบกวน ซึ่งควรรู้ก่อนที่คุณจะพึ่งพาโปรไฟล์นั้น

บทความทั้งหมด · เริ่มการสแกน