I don't like passkeys | Ethan Hawksley
Ethan Hawksley
I don't like passkeys | Ethan Hawksley
Why passkeys are a step back for personal security: examining account lockout risks, platform lock-in, hardware key limits, and fragile recovery flows.
This article does a great job of articulating a lot of the uncomfortableness I have around passkeys. I’ve always said they make a lot more sense in an corporate environment but the level of control you lose in a personal setting is not commensurate with the protections and possible lock-in they offer.
I just don’t like passkeys. They are an overly technical solution to what is mostly a human problem.
Idk, when I want to log into my personal GitHub a bitwarden window opens from the extension, I click the GitHub profile I wanna sign in, and I do.
It’s a great implementation since it’s not linked to a physical device and it lets me authenticate in place. It’s still MFA, it’s just more comfy.
It’s not MFA if all you need is your bitwarden password.
Unless your bitwarden has MFA and locks after an amount of time commensurate with your security needs
True, but how does GitHub know your bitwarden has MFA? It only knows something has a valid credential.
Github doesn’t need to know how you implement it, just that your browser is handling it (and in this case the browser lets Bitwarden handle it lol)
It technically is, it’s not about the amount of actions you need to do, it’s about the amount of actions the platform you are logging in needs to do with you. That both interactions interface with a bitwarden local device makes the weak link your local device, which already was anyway.
Github only asks me for (bitwarden’s) passkey. That’s just a single factor.
A securely stored modern certificate is going to be magnitudes more secure than password plus MFA.
The certificate path uses cryptography to prevent disclosure of your secret, and can’t be compromised when the site inevitably gets hacked.
If you’re using software that properly uses your device’s SE / TPM chip then it’s much more secure against malware, etc. And the main selling point is the much stronger phishing resistance (can’t trick you into logging in via a fake site, etc)
I wouldn’t classify passkeys as MFA tho, they are a passwordless method that’s more secure than most MFA methods. Afaik it’s based on signed certificates or something like that and that’s virtually unhackable unless someone gets physical access to your device (and that’s game over anyway).
But bitwarden uploads it to the cloud to be used on any computer, AFAIK.
This would be great if it worked consistently.
In reality, extensions work in some browsers but not others, on some websites but not others, and with passwords at least you can fall back to copying and pasting, or even typing, if auto-fill isn’t working in the context for whatever reason. With a passkey not only are you SOL, but it will delay your ability to move onto the password option if there is one.
The devils in the (implementation) details.
Agreed in general, but that’s how improvements roll out for anything basically.
You enable it where it works, and you keep using the nonce based MFA whose name I can’t recall right now for where it doesn’t work well.
It might sound annoying but that’s society, it takes a long time to adopt new tools and build a standard.
Sadly did not dig into the whole “the other side decides which device you are allowed to use” topic, a feature inherently build into passkeys.
I think that is only an issue based on what Passkey attestation is configured by the relying party? From what I have read a lot of public facing companies implementing it will have passkey attestation statements configured as None, which typically means there isn’t an authenticator certificate verification.
Only companies issuing their own passkeys on company hardware has a reason to enable attestation (forcing use of company approved devices throughout). Any public facing service has no reason to use attestation.
I think their biggest weakness is the vendor lock in. Using a 3rd party password manager is the best solution for most people, so they arent locked to their phone. But they are right in saying none of it is quite ready.
I think the article is forgetting, they are password replacements, not account recovery replacements. Realistically, people are just as likely to forget a password, and account recovery proceedures still have to be in place. I dont see the issue there.
Passkeys are good they are just being pushed before properly fully developed, but we are slowly getting there.
That is exactly why passkeys are a good thing. Basically everyone reused passwords everywhere.
A password manager is better than passkeys in 2026
Some password managers can sync passkeys for you! Bitwarden can handle it
Maybe 5 or 10 years ago, but who doesn’t use a password manager these days? They generate random passwords and remember them for you
Do you know any non tech people, especially over 40? Literally none of them uses a password manager.
Most of the non-techy people I know use the password manager built into their Web browser at the very least.
xkcd.com/2501/
Huh I thought it was going to be the correcthorsebatterystaple comic
In my experience you’re more likely to find a sticky note on the desk with passwords than someone using a password manager, 2fa, or an ounce of ‘common’ sense.
So we should be using passkeys to access our password managers that generate random passwords and remember them for us! Ultimate protection.
My current employer will not authorize the use of a password manager. I have a key fob for my Microsoft account, and another account does phone verification. I use one password. If they don’t want to put the effort in for account security then neither do I. I use a password manager for nearly all my other accounts.
Love them.
Using 1Password for sync.
Never ever failed to connect to QR code passkey request, even on weird corporate networks.
Portability has gotten so much better - there’s now a defined standard for portability that passkey providers are implementing.
Honestly I cannot understand the criticism at all.
I lose physical objects. That’s mine.
Passkeys don’t require physical storage at all. All of passkeys are in the cloud, synced across platforms.
I am using my password manager, which is keepass.
I have tried adding pass keys to it, and have had mixed success. On some websites, it seems to work fine, and then on others, it seems to break miserably, and made me return back to a password.
I like the idea of passkeys, because then you don’t have a shared secret between you and the website, and you get a different key for every single website using public-private key cryptography. That’s fantastic, but the implementation still needs some work.
They’re going to have to pry my keepass out of my cold, dead hands.
The trap: Putting any 3rd party between you and your access.
It’s a 3 card monte game, but with security.
Roleplay: Mr. Jonsith did you know your house is vulnerable? Your simple little key can be used by anyone to get in to your house. Security!? Our Keypass system will super secure your house. You give us your key, and when you want access, you come to one of our 5 in town locations, request access from us by showing us this new key here, and we will let you into your house.
next year: “In order to lower our costs and keep your monthly rate low, the five locations near you are being consolidated into a single location in Farawayville.”
another year later: “In order to lower our costs and keep your monthly rate low, our physical locations are being migrated to an online presence accessible through the HahaTrickedYou app, now available in your app store.”
seven months after that: the app doesn’t work. web site disappears. company goes under.
I really wish that SQRL had taken off, as it solved most of the problems noted. It was effectively passkeys that you generated on the fly based on your private key (which you can back up and restore to other platforms if necessary) and the website domain by scanning a QR code (or clicking rh QR code if your on the same device) and sends the signed challenge to the website to auth you.
No need to login to your manager on random systems, no issues with platform lock-in, no worries about dedicated hardware, no worry about losing your access if your device dies (assuming you backup your shit).
SQuiRreL!
Yeah, no idea why not popular.
Steve put so much time into it too. SQRL really is the superior method of the two.
Good article.
Currently passkeys are too much of a vendor lock-in to big tech.
Bitwarden support alone does not change that.
I agree the passkey user experience needs work, but man do I enjoy it over the haphazard ‘passwordless’ website login that just sends you an email.
I get it, they’re just skipping an attack vector and basically relying only on ‘2FA’. But now I have to go to a different app/tab, copy a code, and return to the site instead of letting the password manager fill stuff in for me. Some, like kickstarter, let you still have a 2FA code enabled so you have to grab your code from whichever authenticator and go to your email. Really nice login experience out of nowhere one day. \s
bitwarden went from working great to buggy on browsers. sometimes the browser passes the request to the extension but most times goes to the os
What browser
i have had issues on Firefox, Chrome and Safari between Windows, Linux, and macOS
There is still nothing better than passwords.
I don’t want my access to be tied to a specific device. Devices get lost, or break.
I don’t want someone to be able to use my face or finger or eyeball to access my data. You can legally be compelled to unlock a device with your biometric security.
So current biometric security sucks. And passkeys suck.
Also, though…passwords suck for all the reasons that we all already know.
There has to be some better method that the owner can have full agency over, I just don’t know what. I don’t have the answers.
Every attempt at using passkeys has been a step into murkier, less easily understood, less convenient security.
Passkeys may be a “step up” from password + TFA in terms of usability, but there’s such a variety of implementations and explanations of how those implementations “keep me secure” - I feel like any idiot who grabs my phone when I’m not looking and can follow my unlock finger smudges on the screen can use my pass keys… No thanks.
There’s a fantastic paper from a while ago that did a great job of covering what you’re getting at. It’s one of the most cited papers in password security research. Basically, everything we’ve ever found sucks but passwords seem to suck the least. Great read if you have the time - www.cl.cam.ac.uk/techreports/UCAM-CL-TR-817.pdf
I don’t know that OP is wrong per-se, but I think they’re overstated a bit.
Their statement that passkeys are better than people using the same password, but are a step back for people using a password manager, is maybe a bit much. It’s basically the same, but sometimes better.
Most of their drawbacks are the hardware implementations, but that’s already true of people using hardware 2FA, and corporate management, which is already a problem if you use Apple’s or Google’s existing baked-in password managers.
But if you don’t already have both of those problems, the standard is basically just “instead of having the password manager pretend to type in a box, what if they dumped something into the stream directly”, and that extends to what if the UI didn’t ask for anything and just said “hey, do you want to login? Just let me know and it’s done”
And, like, should you be able to export from Apple’s built in store to migrate? Absolutely, but if you never used Apple’s passkeys in the first place, because ugh gross, then it’s not a problem you need solved yet.
There is one problem I’ll admit, which is that it’s easier to make a sketchy password manager that just pretends to be a keyboard. I myself don’t actually use passkeys because I sync my passwords with git and use
pass, which is cool and I love it. And then I type them using a dmenu script and xdotool, which is silly and I love it. But that doesn’t work with passkeys which I can definitely store in git, but would require a real actual connection between my browser and the tool, in a way that I don’t think currently exists.But just because I can’t use my sketchy crap, doesn’t always mean it’s a step back 😛
The article is saying that while passkeys could theoretically be better, the current implementation is bad because it cedes power to centralized 3rd parties, entrenching users who now have no way out when that 3rd party is incompetent or corrupt.
Companies have had 13,000+ Data breaches in the last 5 years. Lets all put our access in one of those, so that when some thief get access to one, they get access to everything.
“But Lutra, they won’t have access-access the pieces arent all there … blah blah blah”
Oh, cool, Lets put all our access in one of those, so when they get access to one, they lock us all out of everything.
I dont understand the issue. Arent passkeys and password in any case just stored in a pw manager nowadays?
He talks about that if you read the article
Me neither | aesthelete
I’m not the biggest fan of passkeys, either.
The problem he is describing here is mostly with enrollment and account recovery and not so much passkeys. The risk of getting locked out of accounts exists whether or not you use passkeys. Code based authenticators are not any better in this regard. Enrollment and recovery are the hardest part of identity. Passkeys are meant to address phishing risks specifically. I would love to see us do better on account recovery whether or not passkeys get adopted. The thing is, passkeys adoption is pretty slow and it has little to do with the issues described in this article. People just find it complicated and confusing. Until it is dead simple and the default, it will not find broad adoption.
The core issue is identity. If people would protect a digital identity a little better than they protect a credit card, that could/should be the basis of everything. Any account “worth more” than the CC $50 liability limit should have additional layers ON TOP OF the secure identity, including front line security that must be passed before the secure identity comes into play, but that single identity could/should be an element of access control to all non-anonymous accounts.
Anonymous accounts should stick with passwords, and online material should be clearly attributed as anonymous, or sourced from a secure identity (signed by said identity and blockchained to provide provenance).
I don’t understand one thing about hardware keys. Aren’t they, like, easy to steal? Sure, someone could torture my Bitwarden masterkey out of me, but hardware keys seem to make sabotage much much easier.
You can PIN lock hardware keys
That’s good to know.
They’re as easy to steal and misuse as a laptop with KeePassX on it. Hardware as a second factor was always a better use case.
Passkeys are a good idea with an insufficient compatibility issue.
In self host vaultwarden and it’s great with my passkeys and very convenient.
Hosting? Passkeys is the thing with the Aegis app, no?
No, that’s MFA, the rotating number code thing. Passkeys are another thing.
Totp
I agree with this article, i think all points mde are valid and true.
But is there a downside for using mozzila password manager? (other than being in the cloud) I think It allows you to sync your passwords and login information accross any device you use, it works well for phone apps, websites log in and cross platform credentials (ios, android, linux and webpages)
Microsoft & Bitwarden are my only two accounts currently that allowed me to use a physical Yubikey as a passkey and have it work on Firefox + Linux. Bitwarden login with passkey only works in the webapp though, not the browser extension, desktop app or mobile app.
I’m confused by this — I use passkeys stored in Bitwarden and they work fine in the browser extension and mobile app (I don’t use the desktop app often so IDK). Are there particular sites that it doesn’t work with?
I think they mean logging into Bitwarden with a physical passkey.
I mean logging into the bitwarden account with the yubikey. Passkeys stored in bitwarden are usually accepted
Can’t confirm, my yubikey is my 2nd factor for bitwarden and I login with it on both my phone and web browsers
It works as second factor, yes. It does for many services, but using it for actually passwordless passkey login doesn’t work for most services with my yubikey.
Passkeys and 1FA were always just a duct tape solution for users resuing basic passwords without having to set a stronger password requirement or relying on users to use a strong password.
I think Chrome and Firefox should have decided on making an API for their builtin password generation and filling functions, that way any password manager would be able to integrate with foolproof functionality out of box.
People already use browser auto gen passwords for the reason that its faster and usually has an account sync built in. Now it would work with any 3rd party solution as well which covers enterprise and security minded users as well.
Users won’t use a password manager if it means you have to manually make an entry everytime you make an account.
I still feel like phishing prevention alone justifies passkeys enough
I feel like there’s some potential in password-derived passkeys, which would get around the storage and hardware lock-in issues. It’d essentially be a master password like for BitWarden, but instead of needing an app to store a bunch of generated passwords, the master password could be all you need to authenticate.
Most of the sources of compromise for regular users would be eliminated because the password never leaves the client.
So…re-using the same password for every service and site?
Grandma, that’s enough internet for today, OK?
how old is your grandma?
In the scheme I’m proposing, the password never gets sent to the server.
The issue of password reuse is the password getting sent to the site, because the prevailing approach is to hash the password server-side. Passwords leak because they get stored in plaintext, or hashed using outdated algorithms, or get logged with request metadata–bottom line, they end up stored somewhere that an attacker can get their grubby little paws on them, or in a way they can reasonably recover them.
Using a master password to derive a passkey client-side isn’t any different than using a master password to unlock a password manager. It just cuts out the middle step.
It’s not a bad idea but that idea breaks as soon as you have to change the master password. You would have to change every one of those passkeys. Which could be annoying, if you have a lot of them.
You might like the current implementation of bitwarden passkeys. You have the master password to unlock your vault of passwords and passkeys as per usual, but then the webpages connect with the extension to authenticate via passkey, so there’s no weak link where the password is sent, but changing the master password doesn’t affect all your other passkeys afaik.
I do not like the idea of password-derived Passkeys, because then acquiring the password is once again all an attacker needs.
Passkeys work now because the device itself is the second factor, the “something you have”.
This exactly how the flow works with Bitwarden now; I’m not understanding how your system makes any changes other than how the passkey is derived.
In fact, that makes things less secure for two reasons: if attackers learn a master password, they can derive other passkeys from it for other sites even if they cannot access the vault (not possible with current passkeys) and if you want to change your master password, all your derived passkeys become invalid and need to be regenerated.
Bitwarden lets you store passkeys in its vault, which I think is what you’re asking for? It’s mentioned in the post too.
I have some passkeys in my Bitwarden, and my Bitwarden account is protected with a USB + NFC Yubikey.
The experience is inconsistent across phone platforms at the moment, but it works great on computers. On Android, it currently only lets you use a password manager if the passkey is your primary credential for logging into the site. Android doesn’t support passkeys from password managers for 2FA yet.
No. I’m talking about using the password to directly derive the passkey. This would eliminate the need to store them in something like BitWarden.
What you are proposing is no different from using a password and wrapping it in custom transport security to send it to the server. This would result in everyone simply using the same password for all sites.
The return of SASL DIGEST! (Or these days probably CRAM or SCRAM)
But yeah, the “hard” part would be that you don’t want the user to type in a password to the website because it could get snatched, so you’d want the User Agent to pop up a password prompt, you type it, and then it does the hashing etc internally and only dumps the hash into the request. So you’d still need some kind of standard for that.
Which is basically just HTTP auth from the 90s. So the good news is that’s always been possible, and already has broad support and works with all browsers! 😛
Passkeys are worthless trash, invented explicitly to save Microsoft and Google money on password reset server time.
They do not solve session hijacking. Any attacker that has your granny on the phone to read them her password can also tell granny to go to a link and give them her session cookies.
You think big tech did this to save… on … CPU costs of password resets?
This is actually really what you think?
Not the commenter, but they’re not taking about CPU costs.
Fair, but costs of resets overall. This is not a factor in tech giant costs.
You world be very surprised. It’s not what I directly work on, but there are entire programs dedicated to tracking and lowering the cost of password and account resets (and doing it securely). That last part is the hard thing. Large organizations can save millions of dollars if they can get people to not lose/forget their credentials -or- self service those resets (but even then, having that person do it is now losing their time and energy).
It’s not just indirect opportunity costs either, it’s direct costs to the IT organization. Smaller teams can absorb this stuff as a rounding error on their time, but the second you’re counting in the thousands, you need to deal with this type of thing. (And I’ll repeat: securely)
Now imagine doing it as a B2C+B2B organization like Google or Microsoft. The costs are staggering.
Grannies love to hand out cookies.
They solve the problem of people using the same password everywhere. That’s significant.
That’s what CSRF mitigations are for.
Do you actually understand how any of the modern web works or does your knowledge stop at W3Schools tutorials from the mid-2000s?