Ok. I'm not sure who "we" are in all that, but I note what you say about this not opening up any new problems. No more questions from me.

/Daniel

On 2025-06-25 22:00, Stephen Mcgruer wrote:
I'd like to chime in to add - although passkeys can and do often sync, they don't always sync today. When a passkey doesn't sync, it is entirely identical to a BBK in terms of data being tracked/exposed - it's a unique global identifier - and it is protected via the same mechanisms as BBKs (actually, fewer mechanisms, since SPC requires the user to agree to a transaction confirmation dialog *and* interact with an authenticator device, whilst pure passkeys just require the latter).

This is not to say that BBKs don't carry tracking risk - they do carry some, especially when used with a passkey that does sync - but more to note that we are (apparently) happy with the level of controls for creation, access to, and management of non-syncing passkeys today, and in my personal opinion that same level should be fine for BBKs?

Passkeys that don't sync today:

  * Chrome on MacOS, when using the Chrome profile authenticator
    instead of Google Password Manager or iCloud Keychain
  * Windows Hello (gives users the option whether to sync or not)
  * Remote authenticators (albeit you can use these across different
    devices, of course)
  * And *any* platform authenticator, if you are a user with only once
    device! (It doesn't matter if it syncs, if you only have one device)


On Wed, 25 Jun 2025 at 15:06, Daniel Bratell <bratel...@gmail.com> wrote:

    That sounds like a lot of work and unlikely to actually be done by
    anyone. Is that ok?

    /Daniel

    On 2025-06-25 20:01, Slobodan Pejic wrote:

        But clearing data, can the user reset or delete this key in
        an intuitive way?

    The browser bound keys are associated with their respective
    passkeys, so users would need to delete the respective passkey.
    On Android, Chrome will delete browser bound keys on startup when
    the respective passkey is no longer available: A user deleting
    their passkey will result in Chrome deleting the
    respective browser bound key. On desktop, if a passkey is being
    deleted through Chrome then the respective browser bound key is
    deleted at the same time, additionally Chrome will delete browser
    bound keys for passkeys that have not been used for 9 months to
    cover any unexpected cases where a passkey may have been deleted
    outside of Chrome.

    Additionally, deleting the Chrome App on Android (or removing the
    profile from disk on Desktop) removes the association from a
    browser bound key to its passkey. The browser bound key would not
    be available (and a different browser bound key would be created
    as needed when paying).

    On Wed, Jun 25, 2025 at 12:49 PM Daniel Bratell
    <bratel...@gmail.com> wrote:

        Thanks. I think that alleviates some my concerns but not fully.

        I guess it's unavoidable that any payment network can track
        users through the actual payments, just like Visa or
        Mastercard probably do for physical cards today, for good and
        bad. I assume we have to rely on government regulation rather
        than technical protections against that which is
        unsatisfying, but... unavoidable.

        But clearing data, can the user reset or delete this key in
        an intuitive way?

        /Daniel

        On 2025-06-25 18:33, Slobodan Pejic wrote:
        Hello Daniel,

        The browser bound public key is only returned on enrollment
        and payment authentication which require the user to provide
        a pin or fingerprint to the underlying authenticator (as
        opposed to the browser bound key being available on a silent
        API call). Additionally, different browser bound keys are
        created per different passkeys. The Secure Payment
        Confirmation spec has two sections regarding the topic of
        tracking vectors: Credential ID(s) as a tracking vector
        
<https://w3c.github.io/secure-payment-confirmation/#sctn-privacy-credential-id-tracking-vector>,
        Browser Bound Key as a tracking vector
        
<https://w3c.github.io/secure-payment-confirmation/#sctn-privacy-browser-bound-key-tracking-vector>.



        On Wed, Jun 25, 2025 at 11:54 AM Daniel Bratell
        <bratel...@gmail.com> wrote:

            I am curious about this as a vector for privacy
            intrusion. There is probably something I have missed so
            feel free to explain what I am missing.

            These browser bound keys are per design locked to a
            specific device. Doesn't that mean that it allows a bad
            actor to keep track of a user's devices, or even keep
            track of users, like some kind of very special cookie?
            The explainer talks about this being used in an
            embedded/cross-origin environment which means that
            avoiding tracking is even more important.

            How about clearing the data, will this be deleted if a
            deletes "cookies" or "browsing data"?

            The explainer says that a full privacy analysis should
            be done, but that is from last spring so maybe it has
            been done?

            /Daniel

            On 2025-06-25 17:03, Vladimir Levin wrote:
            That makes sense, thank you for the answers.

            LGTM2

            On Wednesday, June 25, 2025 at 9:42:19 AM UTC-4
            Slobodan Pejic wrote:

                Hi Vladimir,

                Thanks for the questions:

                    1. How *do* you avoid replay attacks in this
                    case? If a device is uniquely identified by a
                    key that is only challenged by 2FA (like SMS)
                    on the first try, what prevents a
                    person-in-the-middle from learning this key and
                    using it later?

                The clientDataJSON
                
<https://www.w3.org/TR/webauthn-2/#dom-authenticatorresponse-clientdatajson> 
contains
                a challenge
                
<https://www.w3.org/TR/webauthn-2/#dom-collectedclientdata-challenge> field: 
WebAuthn
                passes clientDataJSON (or rather a hash of the
                clientDataJSON) to the authenticator for signing.
                The browser bound key also signs the clientDataJSON
                containing the challenge. On another transaction a
                person-in-the-middle does not have access to the
                browser bound private key needed to sign over the
                challenge. The relying party can protect against
                replay attacks by providing a random challenge,
                checking the challenge matches, and verifying the
                signature.


                    2. There is some discussion to switching to a
                    device bound key if WebAuthn supports that. Is
                    the possibility of shared devices considered an
                    acceptable risk? Specifically, SMS 2FA is "your
                    phone number" which can be reasonably thought
                    as your and yours alone, but a device like a
                    desktop is commonly shared device (e.g. library
                    computer). Or is the device key something that
                    changes based on login or some other criteria?


                Browser bound keys are associated to the tuple (a
                passkey, a browser instance, a device) in the
                Chrome profile, so a separate os login would
                produce a different browser bound key for the same
                passkey, and different browser bound keys would be
                provided for different passkeys in the same
                profile. If someone is at a library computer, they
                first need access to the passkey before the
                matching browser bound key. Secure Payment
                Confirmation requires userVerification
                
<https://w3c.github.io/webauthn/#dom-publickeycredentialrequestoptions-userverification>
 (see
                SPC spec
                
<https://w3c.github.io/secure-payment-confirmation/#sctn-steps-to-respond-to-a-payment-request>)
 when
                invoking WebAuthn (e.g., on Android enter the lock
                screen pin/fingerprint, on MacOS provide your
                fingerprint), so the user must be present to use an
                existing passkey before the browser bound key would
                be used to sign the transaction. A different
                passkey would yield a different browser bound key;
                however, even if an attacker managed to use a
                browser bound key on the same library computer with
                an attacker controlled passkey, then relying
                parties can detect the mismatch (on top of not
                recognizing the attacker's passkey).

                To be clear, if WebAuthn introduces a form of
                device-binding, Chrome will continue to provide
                browser bound keys (i.e., there is no code or spec
                to switch browser bound key provider to WebAuthn).
                When or if WebAuthn supports device binding we
                would re-evaluate the need/requirements for browser
                bound keys in the web payments working group.


                On Tue, Jun 24, 2025 at 9:55 PM Vladimir Levin
                <vmp...@chromium.org> wrote:



                    On Tuesday, June 10, 2025 at 2:47:10 PM UTC-4
                    Chromestatus wrote:

                        Contact emails slobo...@chromium.org,
                        smcgr...@chromium.org, rous...@chromium.org

                        Explainer
                        
https://github.com/w3c/secure-payment-confirmation/issues/271
                        
<https://github.com/w3c/secure-payment-confirmation/issues/271>


                    In the explainer you mention the following:
                    > It is worth noting that this proposal is in
                    some ways re-inventing the wheel of what
                    already exists and/or will exist in WebAuthn.
                    In particular, it means that we have to be
                    careful to avoid all the traps/problems with
                    signatures that WebAuthn already has solved
                    (e.g., challenges to avoid replay attacks,
                    choice of signing algorithms, quantum-proofing,
                    etc). Where possible, we should look to write
                    the spec relying on WebAuthn concepts, even if
                    the actual key creation and storage does not
                    use WebAuthn authenticators.

                    I don't follow WebAuthn progress closely, so
                    the questions I have may be naive, but bear
                    with with me.

                    1. How *do* you avoid replay attacks in this
                    case? If a device is uniquely identified by a
                    key that is only challenged by 2FA (like SMS)
                    on the first try, what prevents a
                    person-in-the-middle from learning this key and
                    using it later?

                    2. There is some discussion to switching to a
                    device bound key if WebAuthn supports that. Is
                    the possibility of shared devices considered an
                    acceptable risk? Specifically, SMS 2FA is "your
                    phone number" which can be reasonably thought
                    as your and yours alone, but a device like a
                    desktop is commonly shared device (e.g. library
                    computer). Or is the device key something that
                    changes based on login or some other criteria?

                    Thanks!
                    Vlad



                        Specification
                        
https://w3c.github.io/secure-payment-confirmation/#sctn-browser-bound-key-store
                        
<https://w3c.github.io/secure-payment-confirmation/#sctn-browser-bound-key-store>


                        Design docs
                        
https://github.com/w3c/secure-payment-confirmation/issues/271
                        
<https://github.com/w3c/secure-payment-confirmation/issues/271>

                        
https://github.com/w3c/secure-payment-confirmation/pull/286
                        
<https://github.com/w3c/secure-payment-confirmation/pull/286>

                        
https://github.com/w3c/secure-payment-confirmation/pull/296
                        
<https://github.com/w3c/secure-payment-confirmation/pull/296>


                        Summary

                        Adds an additional cryptographic signature
                        over Secure Payment Confirmation assertions
                        and credential creation. The corresponding
                        private key is not synced across devices.
                        This helps web developers meet requirements
                        for device binding for payment transactions.



                        Blink component Blink>Payments
                        
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EPayments%22>


                        TAG review
                        https://github.com/w3ctag/design-reviews/issues/1097
                        <https://github.com/w3ctag/design-reviews/issues/1097>


                        TAG review status Pending

                        Risks


                        Interoperability and Compatibility

                        Browser bound keys are an additive feature
                        for Secure Payment Confirmation, the risk
                        is that other browser do not implement it.



                        /Gecko/: No signal
                        
(https://github.com/mozilla/standards-positions/issues/570
                        
<https://github.com/mozilla/standards-positions/issues/570>)
                        Firefox have never finalized their view on
                        SPC, so we updated the original SPC issue
                        with a note on this additional capability.

                        /WebKit/: No signal
                        (https://github.com/WebKit/standards-positions/issues/30
                        
<https://github.com/WebKit/standards-positions/issues/30>)
                        Safari have never finalized their view on
                        SPC, so we updated the original SPC issue
                        with a note on this additional capability.

                        /Web developers/: No signals

                        /Other signals/:

                        WebView application risks

                        Does this intent deprecate or change
                        behavior of existing APIs, such that it has
                        potentially high risk for Android
                        WebView-based applications?



                        Debuggability

                        Web developers should be able to inspect
                        the new signature output which is defined
                        in WebIDL, thus no changes are needed in
                        devtools.



                        Will this feature be supported on all six
                        Blink platforms (Windows, Mac, Linux,
                        ChromeOS, Android, and Android WebView)? No

                        Browser bound keys add to Secure Payment
                        Confirmation which is supported only on
                        Android, Windows, and Mac.



                        Is this feature fully tested by
                        web-platform-tests
                        
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?
                        No

                        Web platform tests depend on the
                        availability of a software implementation.
                        Whether software implementation of BBK
                        would be permitted is an open issue:
                        
https://github.com/w3c/secure-payment-confirmation/issues/288
                        
<https://github.com/w3c/secure-payment-confirmation/issues/288>.



                        DevTrial instructions
                        
https://docs.google.com/document/d/1Wgx8MQG4GsdPErGPya7iMCbhw5NiSrLrNIoDPq2_P2s/edit?usp=sharing
                        
<https://docs.google.com/document/d/1Wgx8MQG4GsdPErGPya7iMCbhw5NiSrLrNIoDPq2_P2s/edit?usp=sharing>


                        Flag name on about://flags
                        enable-secure-payment-confirmation-browser-bound-key


                        Finch feature name
                        SecurePaymentConfirmationBrowserBoundKeys

                        Rollout plan Will ship enabled for all users

                        Requires code in //chrome? False

                        Tracking bug
                        https://issues.chromium.org/issues/377278827
                        <https://issues.chromium.org/issues/377278827>

                        Measurement Browser bound keys are an
                        additive to Secure Payment Confirmation:
                        The Secure Payment Confirmation UseCounter
                        will be used.

                        Availability expectation Secure Payment
                        Confirmation (and Browser Bound Keys) are
                        only in Chromium browsers for the
                        foreseeable future.

                        Non-OSS dependencies

                        Does the feature depend on any code or APIs
                        outside the Chromium open source repository
                        and its open-source dependencies to function?

                        No

                        Sample links
                        https://rsolomakhin.github.io/pr/spc-sync
                        <https://rsolomakhin.github.io/pr/spc-sync>

                        Estimated milestones Shipping on Android
                        139 DevTrial on Android 135

                        Anticipated spec changes

                        Open questions about a feature may be a
                        source of future web compat or interop
                        issues. Please list open issues (e.g. links
                        to known github issues in the project for
                        the feature specification) whose resolution
                        may introduce web compat/interop risk
                        (e.g., changing to naming or structure of
                        the API in a non-backward-compatible way).



                        Link to entry on the Chrome Platform Status
                        
https://chromestatus.com/feature/5106102997614592?gate=5080941065928704
                        
<https://chromestatus.com/feature/5106102997614592?gate=5080941065928704>


                        Links to previous Intent discussions Intent
                        to Prototype:
                        
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68093084.170a0220.15e62e.01e5.GAE%40google.com
                        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68093084.170a0220.15e62e.01e5.GAE%40google.com>



                        This intent message was generated by Chrome
                        Platform Status <https://chromestatus.com>.

-- 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 visit
            
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/065caa09-a757-44d2-ae7c-507d50d6c12bn%40chromium.org
            
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/065caa09-a757-44d2-ae7c-507d50d6c12bn%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 visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e74881ee-3823-4d7c-bbfd-e38c94b959df%40gmail.com.

Reply via email to