LGTM3. On Wed, Dec 15, 2021 at 8:47 AM Mike Taylor <miketa...@chromium.org> wrote:
> LGTM2 w/ same condition. > > On 12/15/21 11:47 AM, Yoav Weiss wrote: > > LGTM1 conditional on those metrics landing (but no need to wait for data > from the metrics to come in). > > On Monday, December 6, 2021 at 3:22:26 PM UTC+1 Mike Taylor wrote: > >> To circle back - last week we (myself + some other privacy/anti-covert >> tracking reviewers) met with some folks working on this feature. We ended >> up with an AI for Hongchan to land metrics on the values that >> getOutputTimestamp would produce (if called, when a new AudioContext is >> created, IIRC) as a way to get some data on the utility for using either of >> these APIs for device fingerprinting. >> >> On 12/1/21 11:27 AM, Hongchan Choi wrote: >> >> So far we have not discussed the deprecation plan, but I believe that's >> reasonable as well. >> >> I registered myself to the webkit-dev list to post a question, but >> somehow I am getting 403 forbidden. The email is sent to the list, I am not >> seeing the message is getting posted on the list. Not sure what to do there. >> >> On Wed, Dec 1, 2021 at 3:18 AM Yoav Weiss <yoavwe...@chromium.org> wrote: >> >>> So are y'all planning to deprecate and remove `getOutputTimestamp` once >>> this ships? If so, that sounds reasonable. >>> >>> I note Chris asked y'all to file for a webkit signal upthread. Did that >>> happen? >>> >>> On Tuesday, November 30, 2021 at 12:54:17 AM UTC+1 hongchan wrote: >>> >>>> I agree that outputLatency is better in terms of both usability and >>>> interoperability. >>>> >>>> FYI, the counter shows getOutputTimestamp is about 0.001% and there are >>>> no partners who are using this API: >>>> >>>> https://chromestatus.com/metrics/feature/popularity#AudioContextGetOutputTimestamp >>>> >>>> >>>> On Mon, Nov 22, 2021 at 3:00 PM Chris Cunningham < >>>> chcunning...@google.com> wrote: >>>> >>>>> Re: privacy discussion, Hongchan and I scheduled to meet with Paul >>>>> Jensen next week. >>>>> >>>>> Also, I recently determined that this new WebAudio API (outputLatency) >>>>> is largely redundant with an existing API (getOutputTimestamp()). >>>>> https://github.com/WebAudio/web-audio-api/issues/2461 >>>>> >>>>> Chrome has already shipped the latter API, so I believe this new API >>>>> doesn't add potential for additional fingerprinting. Shipping both APIs is >>>>> still a good idea for the sake of inter-op. >>>>> >>>>> On Friday, November 19, 2021 at 8:45:28 AM UTC-8 hongchan wrote: >>>>> >>>>>> Thanks for the clarification, Yoav! >>>>>> >>>>>> I hope the mitigation approach in the previous comment makes sense >>>>>> from the privacy perspective, but it will hurt the usability/value of >>>>>> this >>>>>> API significantly. >>>>>> For the privacy-focused discussion, should I use other venues rather >>>>>> than this I2S thread? >>>>>> >>>>>> Cheers, >>>>>> Hongchan >>>>>> >>>>>> >>>>>> On Thu, Nov 18, 2021 at 10:35 PM Yoav Weiss <yoav...@chromium.org> >>>>>> wrote: >>>>>> >>>>>>> Apologies, I misread the discussion. A spec issue is indeed not >>>>>>> needed, as this is already covered. >>>>>>> >>>>>>> From my perspective, since this exposes active entropy, the fact >>>>>>> that it exposes more data than the (passively exposed) platform is not >>>>>>> prohibitive on its own. >>>>>>> At the same time, it'd be good to work with privacy-focused folks to >>>>>>> make sure we expose as little information as needed to maintain the >>>>>>> API's >>>>>>> functionality, but not more. >>>>>>> >>>>>>> On Fri, Nov 19, 2021 at 4:57 AM Chris Cunningham < >>>>>>> chcunn...@chromium.org> wrote: >>>>>>> >>>>>>>> > If the reported value is incorrect, the A/V synchronization won't >>>>>>>> be possible. (Perhaps chcunningham@ can say more about this use >>>>>>>> case.) >>>>>>>> >>>>>>>> The typical video player design drives the clock with audio. In >>>>>>>> short, you send buffers of audio to the OS, use the latency value to >>>>>>>> know >>>>>>>> when those buffers actually reach the user's ears, and choose a video >>>>>>>> frame >>>>>>>> accordingly. Apps using WebCodecs will design apps this way (example >>>>>>>> here >>>>>>>> <https://github.com/chcunningham/wc-talk#simple_video_playerhtml>). >>>>>>>> >>>>>>>> As Mike notes, the latency value can vary by quite a lot depending >>>>>>>> on the device (huge differences for bluetooth vs wired), so it's >>>>>>>> critical >>>>>>>> to have the platform tell you when this changes. In terms of >>>>>>>> precision, we >>>>>>>> can _probably_ do some rounding like to the nearest millisecond. Higher >>>>>>>> values may lead to issues; user studies >>>>>>>> <https://en.wikipedia.org/wiki/Audio-to-video_synchronization#Recommendations> >>>>>>>> have shown sensitivity to fairly low values of drift. >>>>>>>> >>>>>>>> Aside: we may eventually desire a display latency value for similar >>>>>>>> reasons. >>>>>>>> >>>>>>>> On Thu, Nov 18, 2021 at 12:45 PM Hongchan Choi < >>>>>>>> hong...@chromium.org> wrote: >>>>>>>> >>>>>>>>> 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 <yoav...@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 < >>>>>>>>>>> mike...@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 < >>>>>>>>>>>> mike...@chromium.org> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> On 11/15/21 10:56 AM, Hongchan Choi wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> On Mon, Nov 15, 2021 at 6:49 AM Mike Taylor < >>>>>>>>>>>>> mike...@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 <blin...@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 >>>>>>>>>>>>>> >>>>>>>>>>>>>>> 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/936f3e2f-2001-0449-13fd-d3a0548b673c%40chromium.org > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/936f3e2f-2001-0449-13fd-d3a0548b673c%40chromium.org?utm_medium=email&utm_source=footer> > . > -- 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/CAOMQ%2Bw-SSSnqs2%2BN%3DUVdH9V5pO67CVMg_tzRYObUPOLd5NhKVw%40mail.gmail.com.