My voice is my passport, verify me.
A passkey is a super general term. It’s usually something you can store in a file (because you can store any data in a file) though sometimes it may have a hardware element. You can probably save your passkey in a file and you certainly can copy it onto a USB drive.
You can also save passkeys into password managers which is what I personally do so (coupled with a syncing script) I can access it from any of my devices.
That makes it sound like it’s a password. If a passkey can be saved in a password manager, can it be memorized or written down? What makes a passkey different than a password? Or are they just two ways of saying the same thing? Is it a really long password that makes you dread having to type it in, or even worse, enter it in with a virtual keyboard with a remote with arrow buttons?
No, the cryptographic keys used in passkey are not just very long passwords. In face they are not so long. Typical keys generated with ed25519 are 60 characters long.
The key difference is that during normal use, the private key of the passkey doesn’t leave the device (or password manager). The passkey basically comes in 2 parts, the public and private (secret) part. In order to log in, the website presents a cryptographic challenge that is only solvable using your private key - and crucially you can solve the challenge without revealing your private key. An attacker could get your answer to the challenge and still be unable to solve additional challenges without the private part of your passkey.
This of course makes it basically impossible to manually log in using a passkey and a keyboard, without any password manager to do the cryptographic calculations (unless you have a LOT of paper and time), but the security advantage of making it near impossible to be phished is generally regarded as a net positive. In order to steal a passkey there would need to be a vulnerability in the software, since passkeys make it much harder to trick a user into giving it away (since tricking the user into logging in on a fake website doesn’t work due to the aforementioned cryptography, the main way to steal a passkey would be to trick the user into exporting it - which is a much higher bar).
Everything in a computer is data - passwords are no different from novels and you could use War and Peace as your password as long as you hated whatever system needed to check it.
Passkey is usually used to describe a password you keep in a file usually with a public/private pairing though, with everything computer, this is only the general form and description.
I mentioned putting it in a password manager because, as mentioned, it’s just a string of text… if you want you can put the full executable bundle for Starcraft2 in your password manager - most have trivial ways to copy in whole files but, again, it’s just data.
Basically dedicated 2FA hardware.
If you lose it, you’re fucked, end of story.
You do not need specific hardware to use passkey. For example you can use a password manager like Bitwarden and have your passkeys sync between multiple devices, including a good old regular computer.
Specific hardware car be use to secure how the passkeys are stored. For example, smartphones usually have a security chip that help s with storing encrypted data.
Your milage will vary with your corporate policies. You’re not wrong, but you’re not completely right.
I can’t just pick up any smartphone and install a passkey manager on it. It has to adhere to some specific hardware requirements (like a dedicated chip or instruction set on a CPU).
So yea, in standing by the 2fa dedicated hardware line. It’s easier than getting into the weeds on hardware device configuration.
Your milage will vary with your corporate policies.
What does this have to do with anything?
I can’t just pick up any smartphone and install a passkey manager on it.
Sure, because “any smartphone” includes smartphones that don’t turn on, that are locked with a passcode you don’t know, or that are running a 10 year old OS.
Which modern smartphones (meaning, still supported by its manufacturer and running a current OS, i.e., iOS 17/18 or Android 14/15) don’t have passkey support? I don’t know of a single one.
If you mean the “passkeys” that are becoming popular as a “password replacement”, it’s basically speaking a public private keypair. What makes it more secure is that, under normal conditions (aside from backing up the passkey), the private “secret” part of the keypair never leaves the app or device it’s stored on. It’s only used temporarily to sign messages and prove that you have the secret key, unlike a password which needs to be sent securely to a server to validate.
You could in theory store a backup on a USB drive but since passkeys are new, it highly depends on the password manager you use to store the passkey. Since passkeys are more complex than something you can memorize/type, it has to be stored in a password manager of some sort to be useful, so you would need to check that password manager allows backing up passkeys. There is currently work being done to standardize the formats/protocols to transfer passkeys so it seems this is very much up in the air. For example, I use BitWarden which stores passkeys, but it seems like I can only add or delete passkeys to an entry, not export them and apparently they get exported with the passwords when the vault is exported. BitWarden also syncs your vault to every logged in device though so you could see that as a form of backup. Going one step further, even though BitWarden doesn’t have a passkey export/backup feature yet (in addition to Bitwarden’s vault export), the self-hosted server also stores all your passwords including passkeys in regular files which also can be backed up (this is how I back up my VaultWarden instance) - although it would probably be hard to use that backup in any other way besides restoring it onto a BitWarden server instance.
Edit: I didn’t realize passkeys were exported with the vault export, since I haven’t used it and noticed that editing an entry doesn’t allow you to view passkey data - only remove, updated my comment to reflect that.
What are the benefits of a client certificate? As an end user, I’m pretty sure I’ve never used one.
I don’t know much about client certificates, because nobody ever used them. All I know is that they are decades older than passkeys, and “certificate” implies there is a public-private keypair, just like in a passkey.
Passkeys are basically client certs for website logins.
Server stores a public key, encrypts a challenge on login attempt. Client browser uses private key to decrypt challenge (and sign it maybe?) and respond to web server to authenticate.
Hackers can’t get a shared secret (like a password or password hash) by hacking the website’s database becaus the public key is all they store; useless without the private key.
Not foolproof, but much harder to exploit than passwords - which many people re-use across multiple sites.
Bitwarden exports passkeys when using the .json export format
If you’re talking about what Google or Microsoft offer as a login tool, it’s basically a file hidden on your physical PC so when you attempt to login to a service that wants it, the service gets a password from you and the passkey from your actual device to authenticate you.
For example, I have passkey enabled on my windows PC that my Google account has a passkey in. Anytime I access the built in password manager in chrome, Windows now gives me a pop up for a PIN number, and then windows will authenticate on my behalf with the hidden passkey.
If I need to access my password manager from my phone or another computer, I have to use my Google password instead since my passkey isn’t on those physical devices.
I believe Microsoft stores your passkey files on your motherboards TPM module, but I could be wrong.
As far as I understand it, passkey is a password replacement and a protocol built on top of FIDO.
The intention is to replace passwords by cryptographic keys (asymmetric encryption). These keys come in pairs always:
- a private key: secret and only ever known to you
- a public key: given to the service you want to authenticate to. This key can also be seen as a lock that can only be open by the matching private key.
The keys are nothing more than text and they can very well be stored in files on a USB drive, copied, transferre, deleted, etc.
But passkey also defines the process to exchange and store the keys in a secure manner. Therefore in practice you will always use a password manager and maybe also some specific hardware, to automatically hand the key exchange and secure storage of all the different keys your have for all of the different services you registered to.