PowerScan
ID

Fingerprinting audio tanpa mikrofon

Fingerprint Browser · 5 menit baca · oleh PowerScan

Foto: Unsplash

"Fingerprint audio" terdengar seperti sesuatu yang direkam lewat mikrofon. Bukan begitu. Ia adalah angka yang diturunkan dari cara mesin Anda memproses suara sintetis yang tidak pernah diputar, tidak pernah ditangkap, dan tidak pernah meninggalkan tab.

Cara pembuatannya

Skrip membuat OfflineAudioContext, yang merender audio ke buffer di memori alih-alih ke speaker. Ia menyambungkan sebuah osilator, biasanya gelombang segitiga dengan frekuensi tetap, melalui kompresor dinamika ke tujuan, lalu mulai merender. Saat buffer siap, ia membaca sepotong sampel, sering kali beberapa ratus nilai, dan menghash-nya. Hasilnya adalah string pendek seperti d4f50eb9.

Seluruh operasi memakan beberapa puluh milidetik dan tidak memerlukan izin, karena tidak ada yang ditangkap. OfflineAudioContext ditutup ketika skrip selesai.

Mengapa berbeda antarmesin

Kompresor dan osilator diimplementasikan dalam aritmetika floating-point di dalam mesin audio browser, dan keluaran persisnya bergantung pada versi mesin, pustaka matematika sistem operasi, perilaku floating-point CPU, dan pada sebagian konfigurasi, laju sampel perangkat keras audio. Perbedaannya sangat kecil, beberapa bit di tempat desimal terakhir, tetapi hashing memperbesar perbedaan kecil menjadi string yang sama sekali berbeda. Seperti hash canvas, ia stabil pada satu mesin dan bervariasi antarmesin.

Keberagamannya lebih rendah daripada canvas: banyak mesin dengan build browser dan sistem operasi yang sama menghasilkan hash audio yang sama. Ia berguna terutama sebagai sinyal konfirmasi dan sebagai cara mendeteksi browser yang mengacak keluarannya.

Apa yang dilakukan browser

Brave menambahkan noise pada pembacaan audio dengan cara yang sama seperti pada canvas. Firefox dengan resist-fingerprinting menonaktifkan sebagian Web Audio API atau mengembalikan nilai konstan. Chromium tidak mengubah keluarannya. Browser yang mengacak hash menghasilkan nilai berbeda pada setiap muat ulang, yang dapat diperlihatkan diagnostik hanya dengan membiarkan Anda memuat ulang dan membandingkan.

Privasi, secara tepat

Tidak ada suara yang direkam. Tidak ada mikrofon yang dibuka. Buffer ada di memori selama komputasi berlangsung lalu dibuang. Satu-satunya yang bisa meninggalkan tab adalah hash, dan hanya jika halaman memilih mengirimnya. Diagnostik yang menghitung hash secara lokal dan menunjukkannya kepada Anda membaca persis apa yang akan dibaca pelacak, lalu tidak melakukan apa pun dengannya.

Membaca nilainya

Dua hal layak diperiksa. Pertama, bahwa hash itu ada sama sekali: "Tidak tersedia" berarti API-nya diblokir, yang oleh sebagian situs diperlakukan sebagai sinyal tersendiri. Kedua, bahwa ia stabil: muat ulang dan nilainya seharusnya tidak berubah. Hash yang berubah antarmuat memberi tahu Anda bahwa browser menyuntikkan noise, yang melindungi dari pelacakan lintas situs tetapi juga menandai browser itu sebagai salah satu yang melakukannya.

Semua artikel · Jalankan pemindaian