News for hackers. Stuff that matters.
Re:Audio Fingerprinting using the AudioContext API by amluto on Sunday November 03, 2019 @04:42PM (#21436830)
There’s an obvious solution: don’t allow websites to record or play audio, and don’t expose any of this until permission is granted.

As a major side benefit, websites will stop randomly playing audio without permission.

Re:Audio Fingerprinting using the AudioContext API by brigandish on Sunday November 03, 2019 @07:08PM (#21437738)
I would propose an addition for when permission is granted: if (as in the example given) there's a need to time things to occur at the same time then the app can pass that on to the APIs and the browser makes it happen, but the app gets no feedback about how it was done or even if it needed to be done at all - why does it need it? The browser made sure it synced up!

In other words, make it more declarative and less verbose.

Re:Audio Fingerprinting using the AudioContext API by amluto on Sunday November 03, 2019 @08:08PM (#21438079)
I don’t know all the details for this particular issue, but, in general, knowing the latency can be important. Imagine you’re displaying frames and playing sound together and you want them synchronized. You need some way to submit graphics frames and audio so that they arrive at the same time.

The browser could always increase the apparent audio latency by buffering, but that reduces the ability of music apps to perform well.

Re:Audio Fingerprinting using the AudioContext API by brigandish on Monday November 04, 2019 @06:29AM (#21440647)
What I'm suggesting is the code in the app doesn't work out how to submit graphics frames and audio so that they arrive at the same time in the browser, but that the app's code tells the browser how to sync up the graphics frames and audio that it receives.

Move responsibility for the syncing to the browser and then the app doesn't need to know anything. In short, I can put it together and send it to you, or I can send you the bits and tell you how they should be put together.

Re:Audio Fingerprinting using the AudioContext API by amluto on Monday November 04, 2019 @12:38PM (#21444062)
Can you explain how this would actually work?

A graphics frame appears on the screen at a specific time. (For VR, it is a definite time, and this is critical. For normal video or games, a little bit of slop, maybe a few ms, is probably okay.)

For audio, humans are sensitive to 10 ms deviations or even less.

Any API that works decently will need to synchronize audio and video, so there needs to be a way for a program to say “this audio sample should play are the same time as this video frame is shown”. But an API should also allow programs to react as quickly as possible to user input. And Bluetooth headphones, in particular, have very, very high latency.

So designing an API that performs well without revealing the latency is hard.

I do think it would be good to cleanly separate normal web pages and games, though. For pure content, none of this matters except that video needs to maintain synchronization. But normal content does not need clicks to translate quickly to video changes.

Re:Audio Fingerprinting using the AudioContext API by brigandish on Tuesday November 05, 2019 @02:05AM (#21450318)
I don't know about you but I find everything about computers is hard, that doesn't mean there aren't better or worse solutions.

The browser is the presentation layer, it needs to know the latency of your headphones (or the system does). Why does the content provider need it? What's wrong with "here is frame A, please play audio A at the same time (while taking into account the latency that only you know about)" as a request?

Re:Audio Fingerprinting using the AudioContext API by amluto on Wednesday November 06, 2019 @12:41PM (#21464886)
Because, if the audio latency significantly exceeds the video latency, then the browser can’t do this without delaying the video.
Re:Audio Fingerprinting using the AudioContext API by brigandish on Thursday November 07, 2019 @10:55PM (#21479842)
It's simply moving responsibility from one entity to another, there's no technical reason that the content provide would be better at syncing the two, just as with any other network communication.
Re:Audio Fingerprinting using the AudioContext API by missingrib on Sunday November 03, 2019 @05:52PM (#21437305)
The obvious solution is just to disable javascript unless you trust the site
Re:Audio Fingerprinting using the AudioContext API by MisterTea on Sunday November 03, 2019 @06:47PM (#21437618)
And then the site totally fails. I'm no fan of JS either but the amount of sites that use JS is now close to 100%. So you either stay paranoid and the web breaks or you eat the shit sandwich. Pure lunacy.
Re:Audio Fingerprinting using the AudioContext API by jacquesm on Sunday November 03, 2019 @07:50PM (#21437982)
> And then the site totally fails.

That's ok. Then I have the option to weigh whether the risk is worth it or rather not. 9 out of 10 times it is not, in rare cases I will allow the js to execute.

Re:Audio Fingerprinting using the AudioContext API by waste_monk on Sunday November 03, 2019 @11:31PM (#21439064)
Not viable for the majority of users.

How do you explain to one of these "I'm not good with computers haha" types what a CDN is and why Taboola CDN shouldn't be allowed but Akamai should be otherwise things Won't Work Right. Even if they're capable of learning [1] why should they care, when all these security measures actively make their life harder?

Blocking audio and other fingerprintable surfaces by default, with a "click here to enable audio / video" and a "remember my choice on this site in future" is the only way it can possibly work, because 99% of users will only ever go for the laziest option. We need to have protections for them that work regardless of (or in spite of) their skill level.

[1] https://www.nngroup.com/articles/computer-skill-levels/

Re:Audio Fingerprinting using the AudioContext API by gpderetta on Monday November 04, 2019 @06:52AM (#21440786)
Possibly curated, subscribable whitelists?