Vân tay âm thanh mà không cần micro

"Vân tay âm thanh" nghe như thứ được ghi lại qua micro. Không phải vậy. Đó là một con số suy ra từ cách máy của bạn xử lý một âm thanh tổng hợp không bao giờ được phát, không bao giờ được ghi và không bao giờ rời khỏi tab.
Nó được tạo ra như thế nào
Script tạo một OfflineAudioContext, kết xuất âm thanh vào một bộ đệm trong bộ nhớ thay vì ra loa. Nó nối một bộ dao động, thường là sóng tam giác ở tần số cố định, qua một bộ nén động tới đích, rồi bắt đầu kết xuất. Khi bộ đệm sẵn sàng, nó đọc một lát các mẫu, thường vài trăm giá trị, và băm chúng. Kết quả là một chuỗi ngắn như d4f50eb9.
Toàn bộ thao tác mất vài chục mili giây và không cần quyền nào, vì không có gì được ghi lại. OfflineAudioContext được đóng khi script xong việc.
Vì sao nó khác nhau giữa các máy
Bộ nén và bộ dao động được triển khai bằng số học dấu phẩy động bên trong công cụ âm thanh của trình duyệt, và đầu ra chính xác phụ thuộc vào phiên bản công cụ, thư viện toán học của hệ điều hành, hành vi dấu phẩy động của CPU, và trong một số cấu hình là tốc độ lấy mẫu của phần cứng âm thanh. Sự khác biệt rất nhỏ, vài bit ở những chữ số thập phân cuối, nhưng phép băm khuếch đại những khác biệt nhỏ thành các chuỗi hoàn toàn khác nhau. Giống giá trị băm canvas, nó ổn định trên một máy và khác nhau giữa các máy.
Độ đa dạng của nó thấp hơn canvas: nhiều máy có cùng bản dựng trình duyệt và hệ điều hành tạo ra cùng giá trị băm âm thanh. Nó hữu ích chủ yếu như một tín hiệu xác nhận và một cách phát hiện các trình duyệt ngẫu nhiên hóa đầu ra.
Các trình duyệt làm gì
Brave thêm nhiễu vào các lần đọc âm thanh theo cách giống như với canvas. Firefox với resist-fingerprinting vô hiệu hóa một phần Web Audio API hoặc trả về giá trị không đổi. Chromium không thay đổi đầu ra. Một trình duyệt ngẫu nhiên hóa giá trị băm tạo ra giá trị khác nhau ở mỗi lần tải lại, điều mà trang chẩn đoán làm lộ ra đơn giản bằng cách cho bạn tải lại và so sánh.
Quyền riêng tư, một cách chính xác
Không âm thanh nào được ghi. Không micro nào được mở. Bộ đệm tồn tại trong bộ nhớ trong suốt phép tính và bị loại bỏ. Thứ duy nhất có thể rời khỏi tab là giá trị băm, và chỉ khi trang chọn gửi nó. Một trang chẩn đoán tính giá trị băm cục bộ và hiển thị cho bạn đang đọc đúng thứ mà một công cụ theo dõi sẽ đọc, rồi không làm gì với nó.
Đọc giá trị
Có hai điều đáng kiểm tra. Thứ nhất, giá trị băm có tồn tại không: "Không khả dụng" nghĩa là API bị chặn, điều mà một số trang coi là một tín hiệu riêng. Thứ hai, nó có ổn định không: tải lại và giá trị không được đổi. Giá trị băm thay đổi giữa các lần tải cho bạn biết trình duyệt đang chèn nhiễu, giúp bảo vệ khỏi việc theo dõi xuyên trang nhưng cũng đánh dấu trình duyệt là loại làm vậy.


