PowerScan
ID

Canvas fingerprinting dijelaskan: mengapa dua browser identik menggambar piksel berbeda

Fingerprint Browser · 6 menit baca · oleh PowerScan

Foto: Unsplash

Canvas fingerprinting adalah teknik yang paling banyak didengar orang dan paling sedikit bisa dijelaskan. Idenya sederhana: minta browser menggambar sesuatu, baca kembali pikselnya, lalu hash. Bagian yang menarik adalah mengapa piksel itu berbeda antar mesin.

Gambarnya

Skrip fingerprinting membuat <canvas> di luar layar, mengambil konteks 2D, dan menggambar urutan singkat: persegi panjang terisi, teks dalam font bernama, mungkin gradien, kurva, sebuah emoji. Lalu memanggil toDataURL() atau getImageData() untuk membaca hasilnya, dan menjalankan byte-nya lewat hash. Keluarannya berupa string pendek seperti 71ae464e. String itulah "hash canvas".

Tidak ada yang rahasia dari gambar itu, dan tidak ada yang dikirim ke GPU yang tidak bisa dijelaskan halaman itu sendiri. Informasinya ada di rendering, bukan di instruksinya.

Mengapa piksel berbeda

Teks adalah sumber variasi utama. Merender glif melibatkan file font yang benar-benar terpilih (fallback berbeda menurut sistem operasi), strategi hinting dan anti-aliasing (skala abu-abu atau sub-piksel, dan urutan sub-piksel yang mana), rasterizer (FreeType, DirectWrite, CoreText, atau milik browser sendiri), dan apakah GPU atau CPU yang melakukan compositing. Masing-masing menghasilkan piksel tepi yang sedikit berbeda. Satu piksel abu-abu muda di tepi huruf "e" cukup untuk mengubah hash sepenuhnya.

Gradien dan kurva menambah lebih banyak: driver grafis dan jalur anti-aliasing yang berbeda membulatkan nilai antara secara berbeda. Hasilnya, dua mesin dengan versi browser yang sama tetapi GPU, driver, atau sistem operasi berbeda biasanya menghasilkan hash berbeda, sedangkan mesin yang sama menghasilkan hash yang sama setiap kali. Stabil dan beragam, persis yang diinginkan pelacak.

Apa yang dikatakan hash kepada situs

Dengan sendirinya, tidak ada tentang siapa Anda. Ia memberi tahu situs bahwa browser ini merender gambar ini dengan cara ini, yang berlaku untuk sekelompok mesin. Ukuran kelompok itulah yang penting. Laptop umum dengan grafis terintegrasi dan font bawaan berbagi hash dengan banyak yang lain. Pengaturan yang tidak lazim bisa nyaris unik. Digabungkan dengan ukuran layar, daftar bahasa, dan string renderer, bahkan hash yang umum pun menjadi bagian dari kombinasi yang langka.

Apa yang dilakukan browser tentang ini

Firefox, dengan resist-fingerprinting aktif, mengembalikan canvas kosong atau acak dan dapat meminta izin akses canvas. Brave menambahkan perturbasi acak kecil pada pembacaan canvas sehingga hash berubah antar situs dan sesi. Safari membatasi font yang terlihat dan membatasi beberapa pembacaan balik. Chromium sendiri tidak mengacak canvas; browser berbasisnya yang bertujuan mengendalikan fingerprint melakukannya dengan patch sendiri, dan kualitas patch itu bervariasi.

Noise tidak gratis. Hash canvas yang berubah setiap kunjungan adalah sinyal tersendiri, karena browser asli tidak melakukan itu. Strategi yang lebih baik untuk profil browser terisolasi adalah hash yang masuk akal dan konsisten, agar terlihat seperti satu mesin biasa, bukan mesin berbeda setiap jam.

Apa yang ditunjukkan diagnostik

PowerScan menggambar gambar kecilnya sendiri dan menunjukkan hash-nya. Tidak pernah diunggah; nilainya hanya ada di tab Anda. Muat ulang dan hash-nya harus identik. Jika tidak, ada sesuatu di browser yang menyuntikkan noise, yang layak diketahui sebelum Anda mengandalkan profil itu.

Semua artikel · Jalankan pemindaian