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 >> >> >> 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 >> >> Design docs >> 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/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 >> >> 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) 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) 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. >> >> >> DevTrial instructions 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 >> >> 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 >> >> 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 >> >> 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 >> >> >> 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.