demo · v135
The "non-syncing" key in SCA / PSD2 regulation
Why merchants asked for this: EU PSD2 and similar regulations require that one of the authentication factors be tied to a specific device, not a cross-device-synced credential. Passkeys sync by design, which technically violated SCA. Browser-bound keys add a second signature, locally generated, that doesn't sync — satisfying the "something you have, on this device" requirement without losing the UX of synced passkeys.
Behind a flag
Browser-bound keys ship behind
chrome://flags/#secure-payment-confirmation-browser-bound-keys. This page sends the two-signature shape through a backend verifier so the server proves the passkey signature and browser-bound signature separately.
WebCrypto: ?
passkey only (pre-135)
// synced key signs the assertion sig = sign(challenge, passkey) // Bank: "Was authentication // device-bound?" — no proof.
passkey + browser-bound key (135+)
// synced passkey signs as usual sig1 = sign(challenge, passkey) // device-local key signs too sig2 = sign(challenge, browserBound) // Bank verifies both. sig2's // public key never left this // device → SCA requirement met.