PowerScan
UK

Аудіовідбиток без мікрофона

Відбитки браузера · 5 хв читання · Автор: PowerScan

Фото: Unsplash

«Аудіовідбиток» звучить як щось, записане мікрофоном. Це не так. Це число, виведене з того, як ваш комп’ютер обробляє синтетичний звук, який ніколи не відтворюється, ніколи не захоплюється і ніколи не залишає вкладку.

Як його утворюють

Скрипт створює OfflineAudioContext, що відтворює аудіо в буфер у пам’яті, а не на динаміки. Він підключає осцилятор, зазвичай трикутну хвилю фіксованої частоти, через динамічний компресор до виходу й запускає відтворення. Коли буфер готовий, він читає фрагмент семплів, часто кілька сотень значень, і хешує їх. Результат — короткий рядок, наприклад d4f50eb9.

Вся операція займає кілька десятків мілісекунд і не потребує дозволу, бо нічого не захоплюється. OfflineAudioContext закривається, коли скрипт закінчує.

Чому він відрізняється між комп’ютерами

Компресор і осцилятор реалізовані в арифметиці з рухомою комою всередині аудіодвигуна браузера, і точний вихід залежить від версії двигуна, математичної бібліотеки операційної системи, поведінки рухомої коми процесора, а в деяких конфігураціях і від частоти дискретизації аудіообладнання. Різниці крихітні, кілька біт в останніх десяткових розрядах, але хешування посилює крихітні різниці до зовсім різних рядків. Як і хеш canvas, він стабільний на одному комп’ютері й різний між комп’ютерами.

Його різноманітність нижча, ніж у canvas: багато комп’ютерів з тією самою збіркою браузера й операційною системою дають однаковий аудіохеш. Він корисний здебільшого як підтверджувальний сигнал і спосіб виявити браузери, що рандомізують свій вихід.

Що роблять браузери

Brave додає шум до зчитувань аудіо так само, як і до canvas. Firefox із resist-fingerprinting вимикає частини Web Audio API або повертає сталі значення. Chromium вихід не змінює. Браузер, що рандомізує хеш, дає інше значення при кожному перезавантаженні, і діагностика робить це видимим просто тим, що дає перезавантажити та порівняти.

Приватність, точно

Жоден звук не записується. Мікрофон не відкривається. Буфер існує в пам’яті на час обчислення й відкидається. Єдине, що може залишити вкладку, — хеш, і лише якщо сторінка вирішить його надіслати. Діагностика, що обчислює хеш локально й показує його вам, читає рівно те, що прочитав би трекер, а потім нічого з цим не робить.

Як читати значення

Варто перевірити дві речі. По-перше, що хеш взагалі існує: «Недоступно» означає, що API заблоковано, і деякі сайти сприймають це як окремий сигнал. По-друге, що він стабільний: перезавантажте, і значення не має змінитися. Хеш, що змінюється між завантаженнями, говорить, що браузер вносить шум, який захищає від відстеження між сайтами, але й позначає браузер як такий, що це робить.

Усі статті · Запустити перевірку