The cryptography behind passkeys

tatersolid | 223 points

I love passkeys. I love them being on my phone, requiring biometric authentication before unlocking. I just hate the vendor lock in that comes with it.

Does anyone know the state of the standard wrt this? I know that they planned on doing something about it, just haven't kept up.

labadal | 20 hours ago

> Generally, authenticators are “something you have.”

Shameless plug: Here's one that is "something you know" :) https://github.com/lxgr/brainchain

It derives all keypairs from a passphrase, and rederives the private key from the key handle, similar to "stateless" hardware authenticators.

Please don't use it for anything important – it's a fundamentally bad idea, similar to "brain wallets"; I only implemented it to figure out whether it was possible, and to improve my own understanding of the WebAuthN and FIDO specifications.

lxgr | 13 hours ago

I see everyone putting their TOTP and second factor in the same vault as their username/password. Doesn't this defeat the purpose of the second factor to some degree?

sschueller | 3 hours ago

So how well do passkeys work when you don't sync passwords. When you bounce from machine to machine. From OS to OS.

How well does password recovery work in those scenarios?

whartung | 18 hours ago

Somewhat off-topic: Does anyone know the underlying strength of the keys used as the "root of trust" behind passkey synchronization on Android/iOS? I can't find a lot of documentation on this.

It seems like they're synced between devices using client-side encryption, with keys derived from your phone's lock code (typically only 4-6 digits). Is it possible that the passkeys are fully random, but then encrypted with far less than 128/256 bits of actual entropy while being synchronized between devices?

Could it be possible to brute force the keys server-side (IIUC, derived from 4-6 digit pins) with non-excessive amounts of compute? What am I missing?

petedoyle | 17 hours ago

Are passkeys seeing any traction?

joelthelion | 19 hours ago

Why does a browser have to be in the loop?

nemoniac | 15 hours ago

Challenge-response with asymmetric encryption is pretty much perfect. I wish all auth worked like SSH.

Passkeys kind of take that concept, but make it suck. No backups. Terrible interoperability.

The other day I attempted to create one on my Mac with Firefox. The system passkey popup came up and made me scan a QR code with my iPhone that had to be connected to the internet. Bitwarden (my iOS passkey manager, that part works well) did open, but after selecting the profile to create the passkey in, it errored out. No passkey for me.

solarkraft | 19 hours ago

Is there a "platform authenticator" that allows import/export of the actual origin site, keypair, and credential id in plaintext? The next would be a variety of platform authenticators able to import and use those?

I don't want vendor lockin and I don't want proprietary third party cloud based backup/recovery.

Today with totp, I store the plaintext otpauth url and I can use oathtool to spit out codes when needed on my desktop. My phone has aegis, but I don't use any cloud based backup/recovery. I switched from Google Authenticator after they implemented their cloud based syncing to google.

throw7 | 16 hours ago

[dead]

leelou2 | 5 hours ago

Passwords and password managers seem good enough to me, and TOTP support is everywhere now.

Passkeys just feel like a standard written by large tech companies as a flywheel technology to keep me locked into whatever hardware and software ecosystem I'm already in since seemingly no one besides maybe Bitwarden supports exporting them. Which seems pointless, because I don't know of any platform that supports importing them.

I am also getting tired of corporate white knight nerds defending trillion dollar companies telling me that portability isn't a concern.

andrewmcwatters | 19 hours ago

[dead]

NeuroForge08 | 18 hours ago

[dead]

gitroom | 3 hours ago

[flagged]

toprerules | 20 hours ago

[flagged]

42lux | 17 hours ago

[flagged]

supportengineer | 20 hours ago