Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Privacy] Fingerprinting Based on outputLatency #1498

Closed
jasonanovak opened this issue Feb 16, 2018 · 9 comments
Closed

[Privacy] Fingerprinting Based on outputLatency #1498

jasonanovak opened this issue Feb 16, 2018 · 9 comments
Labels
privacy-tracker Group bringing to attention of Privacy, or tracked by the Privacy Group but not needing response.
Milestone

Comments

@jasonanovak
Copy link

As this value "depends on the platform and the connected hardware audio output device” it can be used to determine what device is being used to render the webpage and thus provides fingerprint capabilities. One way to mitigate this would be to either describe the latency using a defined set of enums or a set of defined outputLatency values.

@rtoy rtoy added Needs Discussion The issue needs more discussion before it can be fixed. privacy-tracker Group bringing to attention of Privacy, or tracked by the Privacy Group but not needing response. labels Feb 16, 2018
@rtoy
Copy link
Member

rtoy commented Feb 20, 2018

baseLatency may have a similar issue since it returns a number that depends on the OS and audio output device as well as the value of latencyHint.

@mdjp mdjp added this to the Web Audio V1 milestone Feb 26, 2018
@svgeesus
Copy link
Contributor

svgeesus commented Mar 8, 2018

Rounding up to the nearest enum would greatly increase the latency. Mostly, feedback is that people want to minimse the latency or (for live work) have the exact latency

@svgeesus
Copy link
Contributor

svgeesus commented Mar 8, 2018

@rtoy
Copy link
Member

rtoy commented Mar 9, 2018

The purpose of baseLatency and outputLatency is to allow the developer to synchronize (possibly), the audio generated by WebAudio to other audio or video sources.

It's probably ok to reduce the accuracy of values to a few milliseconds, say no more than 5. That's probably good enough to synchronize things for musical applications, but I think if you're playing sine tones, you will hear some beating effect.

But I'm not a audio sound/studio engineer.

@hoch
Copy link
Member

hoch commented Mar 9, 2018

I thought the purpose of baseLatency is to compensate the drift between the visual change (e.g. UI) and the audio stream produced by the system. So this supposedly should not be fed back into the audio processing. @rtoy What do you mean by the beating effect?

@rtoy
Copy link
Member

rtoy commented Mar 9, 2018

That's getOutputTimestamp. baseLatency is for telling you how much internal buffering is being done by WebAudio.

If you're playing a video that has a sine tone, and you want webaudio to use an oscillator to produce the same tone, the difference in time stamps could cause the tones to be out of phase. I guess it wouldn't beat, but you could get constructive or destructive interference.

@svgeesus
Copy link
Contributor

The spec now says:

Fingerprinting via latency is also possible; it might be possible to deduce this from baseLatency and outputLatency. Mitigation strategies include adding jitter (dithering) and quantization so that the exact skew is incorrectly reported. Note however that most audio systems aim for low latency, to synchronise the audio generated by WebAudio to other audio or video sources or to visual cues (for example in a game, or an audio recording or music making environment). Excessive latency decreases usability and may be an accessibility issue.
https://webaudio.github.io/web-audio-api/#priv-sec

@svgeesus
Copy link
Contributor

@jasonanovak Does that wording satisfy your concern?

@mdjp mdjp removed the Needs Discussion The issue needs more discussion before it can be fixed. label Mar 27, 2018
@jasonanovak
Copy link
Author

Yes, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
privacy-tracker Group bringing to attention of Privacy, or tracked by the Privacy Group but not needing response.
Projects
None yet
Development

No branches or pull requests

5 participants