This is a great writeup of the continuing failure of passkeys to meet their potential. It demonstrates the gordian knot:

1. the ecosystem is confusing due to the plethora of different interacting layers
2. therefore, to simplify, every vendor attempts to own as many layers as they can, obscuring other vendors' tools
3. therefore, users are confused into thinking that passkeys are platform-specific, because their platform vendor is obscuring alternatives

https://arstechnica.com/security/2024/12/passkey-technology-is-elegant-but-its-most-definitely-not-usable-security/

Passkey technology is elegant, but it’s most definitely not usable security

Just in time for holiday tech-support sessions, here’s what to know about passkeys.

Ars Technica
This is a particularly painful and comprehensive example of an industry-wide trend, which is that vendors are expected to deliver things as fully-formed, self-explanatory products. Users, already justifiably wary of the upgrade treadmill, reflexively flinch away from anything that looks like a big learning investment, which means "user education" is treated as a sort of taboo, something that *cannot* be made a prerequisite to using a product, because if you're explaining, you've already lost.
The failure of passkeys to date is a particularly dramatic example of this because it's extremely high-stakes, visible, and black-or-white (you're either switching your auth to passkeys or you aren't, whereas other apps you may use in a casual or incorrect capacity). But the same problem exists in other domains, and it's almost as bad.
Almost every communication technology is like this. Email is bad so we *still* keep getting new email clients that try to "solve" email (or chat apps; remember when slack was going to "solve" email?). Don't worry, don't change your habits, you don't need to learn anything, just click this button. We made a "promotions" tab, and an "important" tab for you, so now you won't be overloaded. Just consume product, don't learn to be a better communicator. Here are some suggested AI replies.
People need to develop sophisticated strategies and think deeply about their values and goals when using social media, but the only response that social media companies have to this is to introduce features or to constantly tweak their recommendation algorithms. Disinformation? Oh, that's okay, we'll block the word "suicide" so now everyone starts saying "unalive yourself in minecraft", great, teen mental health is solved. No need to have a difficult conversation about norms and pedagogy.
I can't blame companies; users really do reflexively avoid learning, and have been conditioned to see their primary feedback mechanism as switching apps. If your app requires learning, you'll see massive churn and be harshly punished for that. I definitely can't blame users, who avoid learning because developing deep expertise with modern apps is rewarded by having your brains scrambled with constant A/B tests of everything being reshuffled to suit the users who *don't* put in effort.
In a way, you can see the passkeys community pushing *against* this trend, trying to acknowledge this need, developing resources like https://webauthn.io to allow users and developers to cultivate a structured understanding of the technology as a whole, decoupled from vendor-specific solutions. But the ingrained product development habits from every vendor undermine this.
A demonstration of the WebAuthn specification

Demonstration of the WebAuthn specification.

WebAuthn.io
@glyph I'm going to add something, it's not as big as the other problems you raised but I think it's a problem: Someone, somewhere, set it up so the non-vendor-locked version of passkeys so it *requires*, per the spec, for you to use Bluetooth, which simply means I will never use it. This is probably childish. But I am probably not the only person who hears "bluetooth" and immediately tunes out.

@mcc @glyph i am using non-vendor-locked passkeys with zero bluetooth

(keepassx supports it)

@whitequark @glyph 🤔 are the passkeys stored on the same physical device that they are utilized on
@whitequark @mcc I'm not really clear on what "non-vendor-locked" means here, but it sounds like people aren't paying attention to an extremely stupid corner of the spec, so: great

@glyph @mcc i am using a password manager with a browser extension that lets me do passkey logins in most places i've tried to do them

keepassx stores them in the password database, like everything else it stores

it's a normal file

@whitequark @glyph @mcc AFAICT passkeys are a half-baked solution to a non-problem that was already solved by "use a password manager and let it generate strong passwords".
@dalias @glyph @mcc PKI-based authentication is strictly better than what you're suggesting since you can no longer steal a credential (other than from the password manager), no matter what happens with the browser or the website
@whitequark @glyph @mcc That's assuming you want to store the keys on a separate device, which is a really bad idea for most normal users.
@dalias @glyph @mcc i said nothing about a separate device

@whitequark @dalias @glyph I said something about a separate device (in a different part of the thread)

Continuing from here:

https://mastodon.social/@mcc/113748384835298072

…in addition to the website not being trustable with your password, it's also possible the machine on which the web browser is running cannot be trusted with your password. This is an important case to me personally, not on *all* machines, but on some machines separately.

Here I note something important and problematic:

(Post 2 of 4)

@whitequark @dalias @glyph The thing I want out of passkeys is completely different from what Catherine wants out of passkeys, which is (I think) different from what Glyph wants! I want SRP. I want authentication without the shared secret (password) having to travel from its trusted home (whereever that is) to the authenticating party, thus hitting peril from lazy/malicious Twitter engineers, malwared Microsoft Windows, etc. Glyph wants anti-fishing. Catherine wants (I think) convenience. (3/4)
@whitequark @dalias @glyph Because we all want different things, some of us don't get them. Catherine seems satisfied with her passkey implementation, but glyph is not satisfied because for convenience it's been watered down to being not quite anti-phishy enough, and I— who wanted SRP but do not care at all about "phishing"— don't get SRP, because the "anti-phishing" rules erect barriers to me using my passkeys in the way I want (without transferring the keys to certain untrusted devices). (4/4)
@whitequark @dalias @glyph Passkeys were trying to be too many things to too many people and I think this made them worse.

@mcc @whitequark @dalias I think there is some validity to what you're saying—in particular, I think that passkey implementations could do a better job respecting individual autonomy and allowing individuals to provide input to their threat model, which the big vendors cannot have and is not universal.

But to the extent that "passkeys" are trying to do a thing, it's to solve a big *social* problem of password reuse and account compromise, which other solutions have demonstrably not addressed

@glyph I'm sure, but the thing is, they are trying to push people's lives into a different shape without actually having the power to force that. Apple, or sometimes the government, can force people's lives in a different shape. The passkey body can't. So if they say "change the shape of your life or you can't use this thing" people just won't use the thing. And then probably sites won't support the thing, because people aren't using it. And that seems to be the reality we live in with passkeys
@glyph As I see it they had a choice between successfully solving a technical problem or unsuccessfully solving a social problem and they picked the latter. You said passkeys don't care about my preferences. Well, I have the option of not caring about passkeys. And so does everyone else. They have made it very, *very* easy to not care about passkeys.
@mcc In the spirt of a transparent sprachspiel, the point of all my ranting on this topic is that I want my nerd friends to use them because I want us to be prepared to assist our normie friends to migrate to passkeys, once the normies have had their PayPal accounts popped enough times to start caring (which, unfortunately, is a growing demographic). So I do care a little bit about you using them but not to a degree that would be worth even a minor amount of discomfort on your part
@mcc to that end, so I understand your use-case, you want to have a device — one of your own design? or is a phone okay for this? a hard token? — that serves as the credential store, which never ever exposes the plaintext of the credential material to the devices (presumably "not secure" things like, Windows machines, game consoles, STBs, etc) but allows them to be authenticated with relative ease?
@glyph I'd like to authenticate from an untrusted device without "high trust" items like keys, passwords or shared secrets being shown to the untrusted device. I don't want there to be restrictions on the nature of the trusted device, and I don't want assumptions to be made about any device in the chain having cameras or bluetooth. I'm okay with using USB. I do not care if it is "easy" (I'd type a 40-digit base58 number if I needed to). I don't care about "proximity". I don't care about phishing

@mcc Then you’re not the target audience for passkeys. The audience for passkeys is users who don’t want to have to know what password managers are or why 2FA is imposed on them, and the goal is to make auth easier and more secure than passwords.

The mere fact of passkeys trying to do so is laudable, because the goal of the alternatives (SMS or app 2FA, hardware tokens) is for nerds to assert their superiority over non nerds by making them miserable with the excuse of more security.
@glyph

@oscherler I want the ability to sign into websites without risk from eavesdroppers in the chain. It really fucking sucks that I'm not allowed to have that because I am "not the target audience for passkeys". Maybe they should have allowed a broader target audience.

@mcc I should note that within the spec, this *is* entirely possible to achieve with passkeys. Nobody has yet built the extremely specific device you want, because I think it is a fairly esoteric threat model. But nothing precludes it.

(I keep wanting to convince you to drop some of these constraints, because I wanted the same thing at one point and I was happier after _I_ was convinced to drop those aspects, but I do not think our threat models overlap exactly, so this impulse is misguided.)

@mcc (Specifically what I think you want is a roaming authenticator that implements a ctap2 device in software.)

@glyph What I'd really like:
- I say "Authenticate with passkey" in Firefox
- I get a notification on my phone*
- I tap "authenticate" on my phone
- My phone contacts the appropriate server and/or some anonymizing proxy hosted by whoever forwarded the push notification, and does the authentication handshake with the server

It should be possible to just do this over the internet.

* For anti-phishing, maybe there is a symbol or 5-digit code on both firefox and the phone & you check if they match

@mcc as I understand it, you're describing the camera-based QR flow, and the "esoteric" part of the threat model is the part where you need this to be achievable without the camera, instead using a weaker short code. You might be correct that this is not esoteric, I admit my argument in favor rests on at least 2 rhetorical fallacies (none of the major vendors have seen fit to implement it [authority], and I sort of assume they have market research to drive their decisions [question-begging]).
@glyph Note, to be clear, I don't *necessarily* need a weaker short code! The case I'm worried about is I am stranded in a net cafe in Taiwan and the computers don't have bluetooth, and I need to log in to something, but since I've used passkeys for that site in the past they no longer accept simple passwords. There are other things I want, but my "showstopper" is the lack of a fallback when hardware requirements don't pan out. If what I want is a *worst-case fallback*, very long codes are okay.

@mcc okay so in principle, I agree with your criticism of the spec; passkeys should have a fully self-contained fallback like this.

However, as a heavy user of password managers and also passkeys, the practical lived reality does include this sort of worst-case fallback, which is "password+TOTP".

It's still a huge improvement to my security because I log in with passkeys constantly without thinking about it, and when I am in the desperate situation you describe, I slow *way* down

@glyph A larger version of the criticism might be "the ecosystem should be friendlier to plugging your own authentication systems in". (It's still not clear to me how Bitwarden is interoperating with Chrome on Android, and whether it's an open system or if Chrome just added a single opening for Bitwarden.) I can imagine reasons the ecosystem might want to resist this even if it relaxed things for me in other ways.

@mcc @glyph That's part of the extension API: https://developer.chrome.com/docs/extensions/reference/api/webAuthenticationProxy

So any extension should be able to access it (and AFAIK this is how Keepass does it)

chrome.webAuthenticationProxy  |  API  |  Chrome for Developers

Chrome for Developers