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.
Browser bound keys are an additive feature for Secure Payment Confirmation, the risk is that other browser do not implement it.
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
Web developers should be able to inspect the new signature output which is defined in WebIDL, thus no changes are needed in devtools.
Browser bound keys add to Secure Payment Confirmation which is supported only on Android, Windows, and Mac.
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.
Does the feature depend on any code or APIs outside the Chromium open source repository and its open-source dependencies to function?
NoShipping on Android | 139 |
DevTrial on Android | 135 |
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).
--
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+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/68487d9f.170a0220.bdf4.01e1.GAE%40google.com.
No
Is this feature fully tested by web-platform-tests?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.
Hmm, I disagree. Generally we're now in the habit of creating WPTs for APIs which are backed by hardware by mocking them out in testing situations, I don't think there's any reason that SPC should be different, is there? For example WebUSB defines a whole testing API for this purpose, but there are other lighter weight options too. In this case I'd imagine we might want to follow the pattern used by WebAuthn which is to define some webdriver commands.
Rick, thanks for taking a look.No
Is this feature fully tested by web-platform-tests?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.
Hmm, I disagree. Generally we're now in the habit of creating WPTs for APIs which are backed by hardware by mocking them out in testing situations, I don't think there's any reason that SPC should be different, is there? For example WebUSB defines a whole testing API for this purpose, but there are other lighter weight options too. In this case I'd imagine we might want to follow the pattern used by WebAuthn which is to define some webdriver commands.I can follow up quickly (likely before browser bound keys ship to stable) with option 3 which would allow other implementations to test against, but would still show Chrome as not supporting browser bound keys on wpt.fyi since those tests run on Linux.
Broadly, there are 3 options for WPT tests:
1. Model the API of hardware crypto library in the specification, then provide a testing API allowing the test to implement the API. Currently the secure payment confirmation specification does not define a model of hardware (unlike WebAuthn), so a large spec change would be needed before the matching testing api could be implemented.
2. Allow a software implementation for browser bound keys when enabled via a WebDriver command. The secure payment confirmation would need to be amended with a mode (initiated via a new WebDriver command) where the browser always provides the software implementation. This would allow WPT tests to pass on platforms where they otherwise would not, particularly wpt.fyi would report that Chrome does support browser bound keys (though this would be inaccurate for Linux on which Chrome's tests run on).3. Let WPT tests report (correctly) that Chrome does not support browser bound keys on Linux. wpt.fyi would show Chrome not supporting browser bound keys; however, other implementations could pass the WPT tests (if those implementation's WPT tests run on a platform with hardware support, or implement browser bound keys in software). No test specific APIs are needed, so no need to extends WebDriver or change the secure payment confirmation specification.
On Wed, Jun 18, 2025 at 1:27 PM Reilly Grant <rei...@chromium.org> wrote:Note the approach I took in WebUSB hasn't proven popular. I wouldn't replicate it. WebAuthn defines WebDriver commands and that's the approach we've been trying to take other APIs in as well such as Web Bluetooth and Web Smart Card.
Contact emails slob...@chromium.org, smcg...@chromium.org, rou...@chromium.org
Explainer https://github.com/w3c/secure-payment-confirmation/issues/271
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?
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
--
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+...@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.
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
But clearing data, can the user reset or delete this key in an intuitive way?
That sounds like a lot of work and unlikely to actually be done by anyone. Is that ok?
/Daniel
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
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.