Ask HN: What is a passkey and why is everybody asking for one lately?

As someone with unique passwords, 2FA, email aliases and a decent password manager and I see no real appeal to passkeys. If anything they seem less secure than what I have now. I understand how it’s leaps and bounds better for people that have reused and simple passwords.

However, the "passkeys" branding is pretty much exclusively used for keys that sync, usually with the platform authenticator. Wouldn't that be kind of a big deal, if you were a tinfoil hatter? Am I missing anything?

13 points | by CGMthrowaway 18 hours ago

4 comments

  • gethly 55 minutes ago
    I too do not and will not use them. As for that they are, i only very briefly looked into it and to me they appeared to be web browser-tweaked take on PGP.
  • kasey_junk 14 hours ago
    Your approach is not phishing resistant. Whether that trade off is worth the centralization you are seeing is worth it, is your choice. But the consensus view by the security community is that it’s reasonably easy to get even sophisticated users credentials via phishing.
  • throw28158916 12 hours ago
    If you go into to website over https your browser validate certificate for that domain. Great. Now what if I told you it is possible to do this but in reverse? Web server can ask a certificate from your web browser to validate your identity. So both ends know that the other is legitimate. Now the question is where to store that certificate? As a file on disk? Seems like bad idea - too easy to steal. Instead of that we can store them in dedicated hardware like yubikeys or tpm module. And the great thing is they are resistent to phishing because certificates use mathematics and can not be fooled by wrong url in browser address bar. So generally passkeys are just authentication using certificates.

    (Although I recommend reading more about FIDO2 keys and webauthn instead of passkeys, because passkeys are one specific variant of FIDO2 webauthn + marketing around it.)

  • runjake 16 hours ago
    Because Passkeys are considered more secure. They had a rough, confusing start but seem to be taking off.

    I don't know your level of technical knowledge, but Passkeys replace passwords by using public key cryptography instead of shared secrets (passwords).

    They consist of a key pair (public and private) and are based on the FIDO2/WebAuthn standard. Like other public key systems (PGP, SSH keys, or SSL certificates), the public key is shared while the private key remains secret.

    There are two main types of Passkeys: device-bound and synced. Both types are significantly more secure than passwords and resistant to phishing, but they have different trade-offs between security and convenience.

    Device-Bound Passkeys:

    With device-bound Passkeys, the private key is stored in a Secure Enclave or a Trusted Platform Module (TPM) on your device. The Secure Enclave and TPM are hardware-isolated, preventing even your operating system from directly accessing them. Instead, you use a special authentication API to make calls. There is no direct memory access to these keys unless an exploit is discovered.

    Think of a Secure Enclave and Trusted Platform Modules as a little, isolated computer inside your device -- because that's what they are! They have their own processor and operating system, and they are completely isolated from the rest of the device. They only release signatures and never release secrets (and aren't even capable of doing so, under normal cases). The device can only talk to the Secure Enclave/TPM via special authentication APIs.

    Synced Passkeys:

    Synced Passkeys store the private key in encrypted form within a password manager or platform keychain (like iCloud Keychain, Google Password Manager, or 1Password. These passkeys are designed to be backed up and synchronized across your devices for convenience. While the keys are encrypted during storage and transit, they're not permanently bound to a single hardware chip.

    This makes them more flexible and user-friendly, though they rely on the security of your account and the encryption used by the syncing service rather than hardware isolation.

    Here's how the flow works as I understand it:

    1. You visit a website and try to login.

    2. The server sends a randomized challenge string.

    3. Your device's authenticator signs that challenge using the private key.

    4. That signature gets sent back to the server.

    5. The server verifies the signature using the public key it has on file.

    Why Passkeys are cool:

    - No shared secrets, so there's nothing on the server that's useful to steal.

    - They're phishing resistant, the browser or whatever ensures the origin matches before allowing auth.

    - No replay attacks because the server issues a new randomized challenge string every time.

    - No cred stuffing because each passkey is unique to the service it's generated for.

    This should all be correct to the best of my unexpert knowledge.

    ---

    Edit: Corrected some serious errors and forgot to explain device-bound vs. synced passkeys -- a major oversight!

    Disclaimer: Yes, I'm a human and I use --. This comment is self-written but I did use AI for grammar correction.