Don't use passkeys for encrypting user data

(blog.timcappalli.me)

97 points | by zdw 3 hours ago

13 comments

  • arjie 2 hours ago
    Passkeys have way too many footguns for me. If I use my phone to sign in I'm going to accidentally create a passkey there on iOS embedded webview. When I use Google Chrome, the website won't give me any information for me to find where I stored the passkey. Was it in iOS keyring? Chrome? My Bitwarden? If I had any discipline around this it would make sense but if I accidentally double tap on the screen I've got a passkey and it's stuck on my phone.

    I'm sure it's of use to many people but it's been no end of pain for me and it has really signaled to me what it's like to grow into an old man unable to use computers when I was once a young man who would find this easy.

    • weird-eye-issue 1 hour ago
      Embedded webviews are the stupidest thing ever. Yesterday I got halfway through a checkout process, had to go back to another app to check something, and then the webview simply disappeared so I didn't bother finishing the checkout. This was on Android

      Usually I open it in Chrome but for some reason I didn't realize it was a webview this time

    • EnPissant 1 hour ago
      You can just use bitwarden everywhere if you are ok with it in the cloud.
      • mkehrt 16 minutes ago
        Tell that to my mom who has created a bunch of passkeys all over the place without knowing what they are. I'm trying to unwind it but it's a mess.
      • arjie 1 hour ago
        I do use Bitwarden everywhere but a couple of times the passkey prompt doesn't show it. I think that's how I got the webview for one of my google accounts stored in iOS keychain.
      • rstat1 1 hour ago
        Doesn't need to be in the cloud for it work everywhere.
        • EnPissant 1 hour ago
          True. You can self-host.
  • akersten 1 hour ago
    > Don't use passkeys

    Better title.

    Mom can't figure out what they are or how to use them. They bind you to your device/iCloud/Gaia account so if it gets stolen/banned you're out of luck (yeah yeah multiple devices and paths to auth and backup codes, none of that matters). It's one further step down the attested hardware software and eyeballs path. Passwords forever, shortcomings be damned.

    • afiori 1 minute ago
      Also a password could be the passkey, the passkey protocol is basically a way to send to a server an authenticated public key. The client could deterministically convert passwords to key-pairs and authenticate with those
    • Someone1234 1 hour ago
      Unfortunately some vendors are now REQUIRING passkeys; specific example:

      https://www.healthequity.com

      > As of October 2025, passkey login has been fully rolled out and is now required for members with Health Savings Accounts (HSAs) and Reimbursement Accounts (RAs) who use the HealthEquity Mobile app and web experience.

      https://help.healthequity.com/en/articles/11690915-passkey-f...

      The FAQ is a little misleading by saying WHEN your account has a passkey this and that, but reality is that after October they made them completely mandatory, no bypass, no exceptions. 100% coverage.

      Oh, and by the way, passkeys have been broken on PC/Linux when using Firefox for months:

      > There Was A Problem: We encountered an error contacting the login service. Please try again in a few minutes.

      Neat. You have to use Chrome or Edge.... For months, after making it mandatory...

    • mgrandl 8 minutes ago
      I love passkeys in my selfhosted vaultwarden, but I agree the UX for older people is not quite there.
    • pabs3 1 hour ago
      KeepassXC has exportable passkeys, so you can avoid the stolen case at least.
  • sandeepkd 18 minutes ago
    Probably everything else is debatable, I do agree with one thing though, the cat is indeed out of the bag. It would have been probably a really good use case if the scope was limited to only hardware based security keys for enterprise users only. Rolling it out for OS platforms, software based authenticators just muddies the water. You cannot even provide any guarantees around it being phishing resistant anymore.
  • dchest 2 hours ago
    Nothing in this post is specific to passkeys; it reads like advice to not encrypt data. There’s no way to prevent some users from losing their encryption key anyway. Whatever warnings you include, even when software doesn't connect to the internet and just encrypts local files, someone will write to support that they forgot their password and ask you to "reset" it.

    Good advice at the end, though.

    • orbital-decay 14 minutes ago
      There's a big difference between being kept in the dark and being informed but careless.
    • shepherdjerred 1 hour ago
      The issue I think is that passkey managers don’t make it clear that deleting a passkey can cause permanent data loss
  • johncolanduoni 2 hours ago
    How many people are doing a spring cleaning of unused passkeys in their password managers? We're talking like a kilobyte of data, nobody needs to delete these things in any kind of normal circumstance.

    Sure, it would be great if users would store 5 copies of their encryption keys, with one in a lockbox on the bottom of the ocean. But that's just not going to happen at any kind of scale, so an automatic way of putting encryption keys in a replicated password manager makes sense. And compared to how people normally handle end-to-end encryption keys, it's going to result in a lot less loss data in practice.

    • Glyptodon 14 minutes ago
      I don't know about spring cleaning, but it's pretty easy to delete by accident if you connect to the browser or OS when setting up instead of the password manager.

      That said, I've been assuming I could have multiple passkeys per site and that's turning out to not always be something websites behave sanely about.

    • bo1024 42 minutes ago
      I thought the point of passkey security is that you don't have to send the private key around, it can stay on your device. Different passkey per device. Lose or destroy a device, delete that passkey and move on.
      • slau 18 minutes ago
        That’s how I use them. Passkeys on two Yubikeys. And I tag in my password manager which credentials have what form of auth. UP, TOTP (also stored on the two Yubikeys), Webauthn or passkeys (the former indicating 2FA).
  • halapro 2 hours ago
    If the user deletes passwords they're shown the same exact message. The only saving grace for passwords is that you can remember them, but are you also suggesting to not use generated passwords?
    • bensyverson 2 hours ago
      I think the distinction is that a passkey is meant to be used for authentication (logging in), and is usually not the only way you can authenticate. If you delete your password, passkey, or 2FA method, you can still go through a "forgot password" flow.

      Encryption is different. If you encrypt data with a generated password and then delete it, you're toast, and passkeys are no different. I think the author is arguing that users may not even realize that the passkey itself is needed to decrypt, possibly because they're so associated with login.

      • dansjots 2 hours ago
        for account-associated encryption, what it should do instead is to generate a dedicated file encryption key for each backup, and encrypt said key with the account's passkeys. Each time the user adds a new passkey, it should save an additional copy of the backup's key encrypted with the new passkey. This way you can have multiple redundant passkeys that can decrypt the backup. This is basically how age's multi-recipient encryption works.
        • johncolanduoni 2 hours ago
          Most of these systems already do this, especially since very few applications have a flat encryption key hierarchy regardless of passkeys. The counterpoint would be that not everyone will set up multiple passkeys unless you require it on sign-up, but you're going to have that problem with any other method of storing end-to-end encryption keys. Might as well piggy-back on the password manager's replication methods.
      • halapro 1 hour ago
        You're just saying that the user needs to be aware that you cannot forget or delete a password, which applies just the same way to passkeys.

        Passkeys are effectively just long passwords you cannot see. The mechanism is just gravy.

        • Borealid 1 hour ago
          I think there is a difference.

          Sites usually have the user SEND their password to the site to authenticate. There is no need for sites to be written that way, but that is how they are written.

          Passkeys cannot, by design, be sent to the site. Instead they use a challenge-response protocol.

  • dansjots 2 hours ago
    I recently whipped up a bare-bones PWA wrapping Typage[0] into a quick-and-dirty tool to encrypt files individually using passkeys:

    https://news.ycombinator.com/item?id=46895533

    This give much more conscious control to the user knowing that they are explicitly encrypting which file with which passkey. Additionally, you can just download the page and serve it via localhost so that you always have control of the relying party for your passkey.

    [0] https://words.filippo.io/passkey-encryption/

  • peterspath 2 hours ago
    I was looking into this to start using this. Because it’s quite user friendly to not let the user worry about all the details that involve encryption of data.

    I guess informing them is a good way to start. Are there any other tips on how this can be improved?

  • wmf 2 hours ago
    Another way to say this is that you have to have an account recovery process and you need to think about how your encryption interacts with account recovery.
  • SoftTalker 2 hours ago
    This is why I haven't started using passkeys. Managing them is looks complicated and I don't understand the ramifcations of what I'm doing.

    Also a style nit, it's OK to use "he" or "she" pronouns in a contrived narrative. The "they/their" usage really detracted from the clarity of the example.

    • kgwxd 2 hours ago
      I don't think I would have even realized why I felt tension reading if you hadn't mentioned this. They/their wasn't confusing at all but, giving the hypothetical user a name was the weird part. I realize now I was expecting some other user to enter the scenario the whole time. Alice and Bob style. When I got to the end, I felt like I missed something. If there's just one, "the user"/"they"/"their" is fine.
  • kkfx 1 hour ago
    Trezor support FIDO2 tied on the seed phrase, so if you lost it another hardware wallet will works issueless once restored.
  • hedora 2 hours ago
    100% of the arguments against using passkeys for e2ee data apply to using passkeys as credentials.

    (Unless they are not credentials, and you can loose them then do a password reset via a phishing prone channel like email and SMS. Supporting this eliminates any possible user benefit of passkeys.)

    In addition to the arguments in the article, when used as credentials, they are an obvious trojan horse allowing large websites to completely hijack your operating system.

    Don’t believe me? Try logging into a bank or using rideshare/parking/ev charging with degoogled android. This is where passkeys are taking PCs, and it is their only purpose.

    So, “Don’t use passkeys” would be a better title.

    • inkysigma 2 hours ago
      Passkeys are an open standard? You might as well argue against SSH keys.
      • hedora 2 hours ago
        The standard includes a hardware attestation path.

        That’s the backdoor allowing the eventual takeover of your OS.

        First people use passkeys, and they become standard.

        Then they become required for important accounts for security.

        Then the important accounts require the attestation bit.

        At that point, you cannot run web browsers on open source operating systems.

        This is all boring and predictable. It is exactly what they did with Android, and exactly the same organizations are pushing passkeys.

        Note: If they had good intentions, the operating system would manage any attestation, and not allow websites to query for or require attestation support.

        • johncolanduoni 2 hours ago
          The attestation actually has nothing to do with the browser, only the holder of the passkey's key material. You can satisfy the attestation by having a passkey on your Android device and doing the normal Bluetooth flow with your Firefox browser on your Framework laptop. So this mechanism is totally useless for enacting this plan.

          The operating system doesn't manage attestation because that's totally useless for the stated goal of the attestation system. Enterprises don't want their SaaS vendors to accept passkeys from some random employee's BitWarden, instead of the hardware keys they issued the employee. If the OS manages attestation and doesn't send anything to the relying party, then it doesn't solve anybody's problem at all.

          • hedora 1 hour ago
            It seems like it will only be a matter of time before consumer sites start requiring a patched OS with an attestation bit set in the key.

            Also, as I understand it, sites can whitelist credential hardware.

            If not, then the attestation is security theater. I (or an attacker on your machine), can just make a sw emulator of a hw attestation device, and use that to protect my choice of OS, (and skim your credentials).

            If a whitelist exists, then my “hijack your OS” plan works: Require the builtin macos/windows/signed chrome on signed os password managers. That’s 90% of the market (and dropping) right now.

            • johncolanduoni 42 minutes ago
              As I said, the attestation structurally does NOT attest to your OS or your browser that are displaying the website performing the authentication. It attests to the device that holds the passkey's key material, which is usually not your desktop computer.
          • debazel 41 minutes ago
            I do not want any business with Apple/Google/Microsoft at all, including owning an Android or iPhone for hardware attestation.
          • doubled112 1 hour ago
            Does Firefox support the Bluetooth flow on Linux at this time?
            • johncolanduoni 44 minutes ago
              That's a matter of implementing an open standard. Google hasn't done anything to prevent open source browsers and OSes from implementing it, and nothing in the spec makes it difficult for Firefox/Linux specifically AFAICT.