Most active commenters
  • lisper(7)
  • bastawhiz(5)
  • scherlock(3)

←back to thread

225 points Terretta | 51 comments | | HN request time: 1.229s | source | bottom
1. jakub_g ◴[] No.41863841[source]
Something that is not clear to me about passkeys and makes me uneasy to start using them:

Are passkeys replacing passwords, 2FA, or both?

What if I created a passkey on some device, lost that device, and my passkeys aren't cloud-backed-up? Would I be able to recover my account, or it's doomed? Or does it depend on how a given website implemented it?

replies(6): >>41863858 #>>41864360 #>>41865277 #>>41866433 #>>41866779 #>>41866793 #
2. rootusrootus ◴[] No.41863858[source]
If the passkey is all you have, then you're doomed (at least to the extent of whatever alternative recovery procedures the vendor is making available to you). That's why it's pretty universal to provide backup codes to put in your safe when setting up a passkey.
replies(4): >>41864020 #>>41867227 #>>41869238 #>>41908599 #
3. create-username ◴[] No.41864020[source]
you should have passkeys on at least two or three devices
replies(2): >>41865385 #>>41866292 #
4. lovethevoid ◴[] No.41864360[source]
Two things:

You kind of have to go out of your way to not have your keys backed up. By default, the easiest route is using your android or iphone and both of them back the keys up using icloud Keychain or google password manager. 1Password, bitwarden, all support syncing. Chrome will allow saving it to icloud or your google account. Keepass can be manually synced. Windows is adding sync in the next update for windows hello. List goes on.

The other thing is that multiple keys can be created. Easiest way to see this in action is google's account security settings. Log in (if you have an account), hit create passkey, see your options and play around with them. You'll also see you can add a hardware security key too, which isn't nothing new but if you have one that's another key that doesn't rely on a mobile device!

If all else fails, the usual account recovery process applies. Much like it would if you forgot your password.

replies(3): >>41865248 #>>41866073 #>>41875709 #
5. Fire-Dragon-DoL ◴[] No.41865248[source]
So we still need a passkey + second factor, isn't that the case?

And if my google account gets banned, I lose access to a trillion things instead of just one.

I was hoping passkeys would work on 1password,but chrome/brave don't support that yet.

It seems like a passkey is just a password though

replies(2): >>41865701 #>>41866973 #
6. lisper ◴[] No.41865277[source]
> Are passkeys replacing passwords, 2FA, or both?

They are advertised as a replacement for passwords, but the truth is that they are orthogonal to both passwords and 2FA. They are a completely different kind of authentication.

Both passwords and passkeys work by proving that you know a secret. The difference is that with a password, the way you prove that you know the secret is by revealing it, which leaves you open to phishing. The other problem with passwords is that the secret is generally one that you are expected to type and remember, which limits how long and random it can be.

With passkeys, the secret is a public key (EDIT: in the sense of public-key encryption. The secret is actually the secret part of a public-private keypair), that is, a long string of random bits that a normal human could not remember even if they wanted to, and the way you prove that you know it is using that key to produce a digital signature for a random challenge. You never reveal your key during normal operation, and that makes it more resistant against phishing.

> What if I created a passkey on some device, lost that device, and my passkeys aren't cloud-backed-up? Would I be able to recover my account, or it's doomed? Or does it depend on how a given website implemented it?

It depends on how a web site implements it, but keep in mind that everything that makes it easier to recover from a lost key also makes your account more vulnerable to attack. So having backups of your passkey keys is a really good idea. But those backups don't have to be in the cloud. You could keep local copies on your own devices, or even print the key on a sheet of paper and keep that in a safe.

replies(4): >>41865612 #>>41865632 #>>41865683 #>>41865684 #
7. EvanAnderson ◴[] No.41865385{3}[source]
Having one more thing to remember to do when I create a new account seems like the kind of tedious make-work computers should be automating.
replies(1): >>41865431 #
8. rootusrootus ◴[] No.41865431{4}[source]
I agree. The better answer from my view is to handle passkeys like passwords and manage them the same way.
9. scherlock ◴[] No.41865612[source]
I don't see how passkeys do anything to prevent phishing.
replies(4): >>41865645 #>>41865646 #>>41865662 #>>41866844 #
10. bastawhiz ◴[] No.41865632[source]
> It depends on how a web site implements it, but keep in mind that everything that makes it easier to recover from a lost key also makes your account more vulnerable to attack. So having backups of your passkey keys is a really good idea. But those backups don't have to be in the cloud. You could keep local copies on your own devices, or even print the key on a sheet of paper and keep that in a safe.

Obviously this isn't bad advice, but it is the reason I won't be diving into passkeys any time soon. Firefox Sync (the original version) had this philosophy: it's perfectly secure but if you lose your key, you've lost your bookmarks, history, and anything else that gets synced. For non-power users this is a catastrophic failure mode. For power users this still happens and it sucks. I was at Mozilla during this time and the failure modes of Sync were impressively common, even among employees.

Nobody expects to lose their backup. If you were a victim of hurricane Helene, it's entirely likely your safe is gone and all of your devices are destroyed. If that also means you've permanently lost access to your files or email or whatever, that's really really bad. And completely within the realm of possibility!

Obviously you can't fix this with cryptography alone. But it shows that passkeys can't be implemented as a full solution.

replies(1): >>41865652 #
11. bastawhiz ◴[] No.41865645{3}[source]
How exactly do you get someone to give their passkey private key to a bad actor?
replies(1): >>41866054 #
12. lisper ◴[] No.41865646{3}[source]
Two main ways: first, as I said in my original comment, you don't reveal the key when you use a passkey. So at worst a phisher might be able to get you to sign a challenge that they are facing to get into your account once, but they would not be able to re-use your credentials to get in again or to get into another site. And second, in a proper implementation you would have a separate key for every site you want to authenticate to, so a phisher would not have to merely phish you, they would have to mount an MITM attack on an HTTPS session (or find some other way to impersonate the site they are trying to phish your credentials for). That's not impossible, but it's orders of magnitude harder than impersonating a site through a typosquatting attack.
replies(1): >>41866169 #
13. lisper ◴[] No.41865652{3}[source]
But that's not a problem with passkeys, that's a problem with Firefox Sync.
replies(1): >>41865711 #
14. sitharus ◴[] No.41865662{3}[source]
Phishing relies on visual confusion to get people to enter their passwords on a site that isn't the one they think it is.

WebAuthn credentials are bound to the issuing domain, so the user agent will not supply a passkey to a domain other than the one it should go to.

15. regedit728 ◴[] No.41865683[source]
Minor correction (I'm assuming it was a typo) -- the secret for the passkey should be the private key. The server stores the user's corresponding public key.

Based on my (limited) understanding from reading the page: 1. Server generates challenge, sends a challenge 2. User device signs the challenge by encrypting with its private key, returns the signature. 3. Server verifies the signature by decrypting with the public key.

As you mentioned, the private key (the only thing that can generate a valid signature) isn't leaked.

replies(1): >>41865726 #
16. ◴[] No.41865684[source]
17. sitharus ◴[] No.41865701{3}[source]
It depends on your security risk profile and the type of passkey provided. The passkey's response describes if the credential is transferrable or not, and if the user has been positively verified as present.

They're as secure as having your password + 2FA in a password manager.

replies(1): >>41866087 #
18. bastawhiz ◴[] No.41865711{4}[source]
It's a problem for anything where you need to manually keep backups of key material. It's why so many cryptobros lost millions (billions?). If you expect the average person to keep their passkey backup stored well enough to avoid the possibility of physical disaster or losing access to their Google Drive, you've set them up for failure. And when the stakes are losing access to your online life, that's a catastrophic design flaw.
replies(1): >>41865739 #
19. lisper ◴[] No.41865726{3}[source]
> Minor correction (I'm assuming it was a typo) -- the secret for the passkey should be the private key

Yeah, I meant "public key" in the sense of "public-key cryptography". I've edited the comment to make this clearer. Thanks for pointing that out.

> Based on my (limited) understanding from reading the page: 1. Server generates challenge, sends a challenge 2. User device signs the challenge by encrypting with its private key, returns the signature. 3. Server verifies the signature by decrypting with the public key.

That is almost exactly right, but since we're being precise here, I would just pick on this one very minor nit:

> User device signs the challenge by encrypting with its private key

> Server verifies the signature by decrypting with the public key

"Signing/verification" and "encrypting/decrypting" are two completely different things. In RSA these are conflated, but it's important not to confuse them. With elliptic curves, these have nothing to do with each other. It's just a peculiarity of RSA that makes it encrypt/decrypt to do digital signatures.

replies(1): >>41866906 #
20. lisper ◴[] No.41865739{5}[source]
> It's a problem for anything where you need to manually keep backups of key material.

Well, OK, but what is the alternative?

(Actually, you don't need to manually keep backups. You can have automatic backups, but those come with their own set of risks.)

replies(1): >>41870028 #
21. scherlock ◴[] No.41866054{4}[source]
"Hi, this is Bob from blah support, we need to confirm your account is a correct. When prompted please confirm to give us access". if someone is dumb enough to hand out a password, they are dumb enough to click approve. Phishing is a social attack, not a technical attack.
replies(2): >>41866566 #>>41869995 #
22. thayne ◴[] No.41866073[source]
> The other thing is that multiple keys can be created.

That depends on the site. For Google, sure you can add multiple passkeys. But many other sites will just do minimum effort and only allow you to register a single passkey.

23. prophesi ◴[] No.41866087{4}[source]
Should be noted that there's still debate on user presence, to the point that someone submitted a CVE[0][1] on KeePassXC for not abiding by this part of the protocol (and which I take Keepass's side).

[0] https://github.com/keepassxreboot/keepassxc/issues/9339

[1] https://keepassxc.org/blog/2023-06-20-cve-202335866/

edit: This actually might be a better thread to hear some of the debate between an Okta dev and the KeepassXC team:

https://github.com/keepassxreboot/keepassxc/issues/10406

24. scherlock ◴[] No.41866169{4}[source]
So, it really doesn’t prevent phishing. If you can get someone to give you their password, you can probably get them to click approve. The real benefit is to the service provider, not having to worry about leaking a secret if they get compromised.
replies(2): >>41866925 #>>41866976 #
25. hedora ◴[] No.41866292{3}[source]
How do you keep those devices synced? I have over 500 accounts in my password manager. Do I need to manually set up 500 * 3 devices?
replies(2): >>41866851 #>>41883393 #
26. dwaite ◴[] No.41866433[source]
> Are passkeys replacing passwords, 2FA, or both?

The minimum bar is replacing passwords with something more secure for the user.

If the site wants more specific factors or characteristics of authentication (such as a non-cloneable possession factor) then only some authenticators provide that today themselves. For someone using a synced software provider, they will need to do an additional step to meet this sort of requirement.

Factors aren't nearly as solid as they are made out to be - my SMS OTP is synched to all my devices, my TOTP keys come from a software implementation right alongside my password - which isn't a true knowledge factor because it was auto-generated for me. Password managers and other software have long put us on the path of sites leveraging externalized authentication processes and policies, similar to how they might do this explicitly by accepting federation.

> What if I created a passkey on some device, lost that device, and my passkeys aren't cloud-backed-up? Would I be able to recover my account, or it's doomed? Or does it depend on how a given website implemented it?

The syncing is meant to make it harder to lose the passkey. Sites still ultimately have to have a recovery process when someone does lose access.

replies(1): >>41867819 #
27. tadfisher ◴[] No.41866566{5}[source]
Your passkey provider will simply refuse to show that it has a credential for Bob's phishing convincing phishing site. RP challenges are bound to a domain for this purpose.
28. gre345t34 ◴[] No.41866779[source]
A FIDO2 credential can be used for passwordless authentication, so long as the authenticator performs user verification (e.g. requires a PIN). This counts as 2FA because it's something you have (the authenticator) plus something you know/are (PIN/biometric).

It can also be used as an second factor for traditional username/password auth (with or without user verification).

Losing a passkey is no different to losing any other credential: you need another method to authenticate or recover your account.

29. ◴[] No.41866793[source]
30. gre345t34 ◴[] No.41866844{3}[source]
If you got tricked into logging into goggle.com or something the FIDO2 auth would fail because a) the URL would not match the credential metadata and b) the resulting assertion, a signature over data which includes the URL, would not be valid (google.com would not accept it).
31. klausa ◴[] No.41866851{4}[source]
You use your password manager to sync them.
32. regedit728 ◴[] No.41866906{4}[source]
interesting. unfortunately i don't have as much awareness of ECC as i should have, thanks for the information.
33. lisper ◴[] No.41866925{5}[source]
> you can probably get them to click approve

It depends on the type of attack being mounted, but a typical phishing attack is mounted as a MITM attack. With passkeys, a MITM cannot get the client to even ask the user to approve the transaction because the attacker cannot authenticate as the relying party.

You can attack passkeys by, say, compromising the user's machine, but that's not phishing.

34. chrchr ◴[] No.41866973{3}[source]
A key difference between a passkey and a password is that a passkey is never transmitted off of your device. The existing tech that they most resemble is ssh keys.
replies(3): >>41867537 #>>41871031 #>>41885812 #
35. Ferret7446 ◴[] No.41866976{5}[source]
They would have to get you to install a malicious version of your web browser and/or passkey manager, as all legitimate implementations enforce having the correct TLS domain, which is significantly harder than getting you to visit a random URL.
36. lxgr ◴[] No.41867227[source]
Unfortunately that pattern negates many benefits of WebAuthN: That recovery code is phishable, can be captured by malware on the client or server etc.
37. zigzag312 ◴[] No.41867537{4}[source]
How does Google Password Manager sync your passkeys then?

EDIT: Private key is not transmitted off of your device when authenticating, but it can be transmitted off of your device by your password manager.

"The difference between passkeys and passwords is that passkeys are cryptographic key pairs. The key pair is specific to a website. One half is shared with the website, and the other half is private and stored on your device or in your password manager." [0]

"Passkeys are securely backed up and synced between your Android devices" [0]

"Passkeys are stored in your Google Account..." [0]

"Your iCloud Keychain stores and syncs them [passkeys] between iOS, iPadOS, and macOS devices." [0]

[0] https://support.google.com/chrome/answer/13168025

replies(2): >>41869313 #>>41870704 #
38. ForHackernews ◴[] No.41867819[source]
> Sites still ultimately have to have a recovery process when someone does lose access.

Do they? Is that legally mandated somewhere, or can they just say "You're stuffed, make a new account if you want"?

replies(1): >>41869205 #
39. jesseendahl ◴[] No.41869205{3}[source]
Account recovery flows are generally entirely unaffected by the move from password to passkey.

It’s just your login credential.

If you lose either a password or a passkey, you do the same thing: reset and set a new one via email recovery.

replies(1): >>41871234 #
40. jesseendahl ◴[] No.41869238[source]
Account recovery flows are generally entirely unaffected by the move from password to passkey.

It’s just your login credential.

If you lose either a password or a passkey, you do the same thing: set a new one via email recovery.

41. e40 ◴[] No.41869313{5}[source]
And the interaction between the thing that generates the passkey and my password manager is very confusing. I got multiple popups and it wasn’t completely clear which was chrome ans 1password.
42. bastawhiz ◴[] No.41869995{5}[source]
Your browser won't auth you with a key meant for a site you're not on. There's no mechanism for what you're describing.
43. bastawhiz ◴[] No.41870028{6}[source]
I'd give a key to my bank that they could create signatures with if I asked for (and was authenticated with) that third parties could trust to bypass my passkey. I'd pay a fee for it, the bank holds liability for verifying my identity.

Banks aren't perfect but mine already has all my money and the deed to my house. I trust the safety of my bank more than I trust Google not to lock me out or all my hardware to be destroyed.

replies(1): >>41870535 #
44. lisper ◴[] No.41870535{7}[source]
OK, so your proposed alternative is to give a key to a trusted third party (TTP). But how do you authenticate to that TTP?
45. chrchr ◴[] No.41870704{5}[source]
> Private key is not transmitted off of your device when authenticating.

Thank you. I should have been more specific. Non-transerral during auth is important because it virtually eliminates fishing, and that also explains why the Powers That Be are touchy about exporting. Exfiltration enables scenarios where a nefarious party tricks a user into transferring their cryptographic keys.

46. kbolino ◴[] No.41871031{4}[source]
Strictly speaking, passwords do not have to be shared during auth, either. There are password-agreement schemes (e.g. SRP [1] as used in TLS-SRP) which allow one or both parties to prove they know the password without sharing it. However, these schemes never gained broad adoption.

[1]: https://en.wikipedia.org/wiki/Secure_Remote_Password_protoco...

47. jakub_g ◴[] No.41871234{4}[source]
This exactly where my distinction about "what the passkey actually is" is important: if it's only a password, then I assume I can do the recovery. Whereas if it's 2FA, I assume I can't.
48. bobbylarrybobby ◴[] No.41875709[source]
It's easy to have your keys backed up to a device, but then the question becomes losing the device and being able to get back into a new one. I know that Google really, really likes to make sure it's you when you log in from an unexpected device, location, IP, etc, and it might be hard to prove that it's you without that one device.
49. create-username ◴[] No.41883393{4}[source]
I sync them manually, like a medieval peasant
50. Fire-Dragon-DoL ◴[] No.41885812{4}[source]
I see that makes more sense. It is an upgrade to passwords, but in an ideal world we solve the other half (two factor) too.
51. CatWChainsaw ◴[] No.41908599[source]
A backup code is a password made of numbers.