posted in Technology
I don't like passkeys | Ethan Hawksley
hawksley.dev/blog/i-dont-like-passkeysposted in Technology
I don't like passkeys | Ethan Hawksley
hawksley.dev/blog/i-dont-like-passkeysReplying to @lemmydividebyzero@reddthat.com
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.
Replying to @Technus@lemmy.zip
So…re-using the same password for every service and site?
Grandma, that’s enough internet for today, OK?
Replying to @GreenShimada@lemmy.world
how old is your grandma?
Replying to @merde@sh.itjust.works
Would be 100 right now if she had led out for a few more months.
Replying to @GreenShimada@lemmy.world
Would be 100 right now if she had led out for a few more months.
at that age just knowing what a password is already a triumph
Replying to @merde@sh.itjust.works
Well, she also had terrible dementia for years, so the only passwords she was going to remember was the Little Orphan Annie secret code of “Drink More Ovaltine.”
My MIL is a grandma, and I would give her a 75% chance of reading her passwords to “someone from the bank” if they caught her at the right time. Maybe she’s already done that, I’m not sure if she did that or almost did that once.
Replying to @GreenShimada@lemmy.world
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.
Replying to @Technus@lemmy.zip
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.
Replying to @BiscuityCat@lemmy.world
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.
Replying to @Technus@lemmy.zip
Ah, gotcha.
So, basically a biometic key, but with a password? Isn’t that basically just a self-signed certificate, then?
Replying to @Technus@lemmy.zip
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.
Bitwarden lets you store passkeys in its vault, which I think is what you’re asking for? It’s mentioned in the post too.
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.
Replying to @Technus@lemmy.zip
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.
Replying to @Technus@lemmy.zip
This just sounds like using the same password on every site. Am I missing something?
Passkeys have to be unique per site so that you can revoke one without having to change something on every other site.
Replying to @Technus@lemmy.zip
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! 😛
Replying to @Technus@lemmy.zip
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”.
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.
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.