Hi Yoav,

Could you clarify what needs to be discussed from the spec side? The
feature (and its behavior) is properly specified, and its privacy aspect is
already reviewed by W3C:
https://github.com/WebAudio/web-audio-api/issues/1498 (outputLatency)
https://github.com/WebAudio/web-audio-api/issues/1495 (general
security/privacy consideration)

I thought the request from this thread is to devise a Chrome-specific
mitigation, not reopening the spec discussion. Please correct me if I'm
mistaken.

Cheers,
Hongchan


On Thu, Nov 18, 2021 at 12:37 PM Yoav Weiss <yoavwe...@chromium.org> wrote:

> Hey folks!
>
> It seems like there are some things to figure out here before shipping.
> Could y'all file a spec issue to discuss this with the broader community?
>
> On Tuesday, November 16, 2021 at 6:16:14 PM UTC+1 hongchan wrote:
>
>> Thanks for the feedback, Mike. This is really helpful!
>>
>> Mitigation strategies include adding jitter (dithering) and quantization
>>> so that the exact skew is incorrectly reported
>>>
>>
>> This bit refers to the randomization mechanism deployed by other
>> browsers, but this approach defeats the purpose of this specific API and it
>> is also argued in the spec:
>>
>> 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.
>>
>>
>> If the reported value is incorrect, the A/V synchronization won't be
>> possible. (Perhaps chcunningham@ can say more about this use case.)
>>
>> One mitigation idea: we can do some research to collect values reported
>> by major platforms/devices and devise a reasonable "bucket system" for them.
>>
>>
>> On Tue, Nov 16, 2021 at 8:14 AM Mike Taylor <miketa...@chromium.org>
>> wrote:
>>
>>> I suppose it would be nice to do some testing to verify the idea that
>>> there's a small number of platform + audio device pairs. I was hoping 
>>> Mozilla's
>>> hardware survey <https://data.firefox.com/dashboard/hardware> might
>>> have something on that, but it doesn't track speakers.
>>>
>>> Just from some simple testing with the following script (thanks dmcardle@
>>> for the snippet) in Firefox on macOS by 3 people, we have very different
>>> values that change dramatically when you unplug a headset:
>>>
>>> ```
>>> (function getNextSample() {
>>>     console.log((new AudioContext).outputLatency);
>>>     setTimeout(getNextSample, 10);
>>> })();
>>> ```
>>> Here's the values on my macbook, using Firefox Nightly:
>>> bose headset plugged in: 0.005895833
>>> take headset out: 0.013083333
>>> plug bose headset back in: 0.005875 (different, but stable)
>>>
>>> https://www.w3.org/TR/webaudio/#priv-sec mentions some mitigation
>>> strategies - do we have a plan to apply any of them?
>>>
>>> On 11/15/21 11:53 AM, Ajay Rahatekar wrote:
>>>
>>> The small number of platform + audio output device combination i.e. a
>>> large number of users with the same platform and output device  (users on
>>> macOS using airpods) would likely be a natural obfuscator. Not sure if we
>>> have data about the distribution.
>>>
>>> On Mon, Nov 15, 2021 at 8:05 AM Mike Taylor <miketa...@chromium.org>
>>> wrote:
>>>
>>>> On 11/15/21 10:56 AM, Hongchan Choi wrote:
>>>>
>>>> On Mon, Nov 15, 2021 at 6:49 AM Mike Taylor <miketa...@chromium.org>
>>>> wrote:
>>>>
>>>>> On 11/15/21 1:47 AM, Yoav Weiss wrote:
>>>>>
>>>>> On Fri, Nov 12, 2021 at 5:33 PM 'Ajay Rahatekar' via blink-dev <
>>>>> blink-dev@chromium.org> wrote:
>>>>>
>>>>>>
>>>>>> TAG review status
>>>>>>
>>>>>> Completed: Web Audio API specification is W3C Recommendation.
>>>>>>
>>>>>> Risks
>>>>>>
>>>>>> There is a risk of the feature being used for fingerprinting. However 
>>>>>> outputLatency
>>>>>> is the buffer size of the platform-provided audio callback, so the value 
>>>>>> is
>>>>>> inherently platform-specific. That said, the majority of the platform 
>>>>>> audio
>>>>>> buffer size is widely known. (MacOS = 128 frames, Windows = 10ms, 
>>>>>> Android =
>>>>>> 96 frames, etc)
>>>>>>
>>>>>> This feature  does not expose more than what you can query/infer from
>>>>>> the UA string.
>>>>>>
>>>>>
>>>>> Would that exposure map cleanly to UA-Platform
>>>>> <https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform>, which
>>>>> is considered low-entropy and exposed by default? Or would it add more 
>>>>> than
>>>>> that?
>>>>>
>>>>> /cc +Mike Taylor <miketa...@chromium.org>
>>>>>
>>>>>> Looking at
>>>>> https://www.w3.org/TR/webaudio/#dom-audiocontext-outputlatency, it
>>>>> states that it depends on the platform _and_ the hardware output device. 
>>>>> If
>>>>> I use an app using outputLatency with speaker A, then switch to speaker B,
>>>>> will the outputLatency remain the same?
>>>>>
>>>>
>>>> The specification says: If the audio output device is changed the
>>>> outputLatency attribute value will be updated accordingly.
>>>>
>>>> So the answer is no. The value will change accordingly.
>>>>
>>>> If that's the case, then outputLatency can reveal more entropy than
>>>> just platform alone, right? It would be useful to know what this looks like
>>>> in practice, or what mitigations we might be able to apply depending on the
>>>> size of these latency differences.
>>>>
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGJqXNvioZ5qqLQZf6K5C%3DzPJ%2B2MCsp9GB0WhQWdz9kG66wP_g%40mail.gmail.com.

Reply via email to