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
    <[email protected]> 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
            
<https://chromestatus.com/metrics/feature/popularity#AudioContextGetOutputTimestamp>


            On Mon, Nov 22, 2021 at 3:00 PM Chris Cunningham
            <[email protected]> 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
                <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
                    <[email protected]> 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 <[email protected]> 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 <[email protected]> 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
                                
<https://github.com/WebAudio/web-audio-api/issues/1498>
                                (outputLatency)
                                
https://github.com/WebAudio/web-audio-api/issues/1495
                                
<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 <[email protected]> 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
                                        <[email protected]> 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
                                            
<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
                                            <[email protected]>
                                            wrote:

                                                On 11/15/21 10:56
                                                AM, Hongchan Choi wrote:
                                                On Mon, Nov 15,
                                                2021 at 6:49 AM
                                                Mike Taylor
                                                <[email protected]>
                                                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
                                                    <[email protected]>
                                                    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
                                                    
<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 [email protected].
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.

Reply via email to