We had originally planned to go all-in on passkeys for ONCE/Campfire, and we built the early authentication system entirely around that. It was not a simple setup! Handling passkeys properly is surprisingly complicated on the backend, but we got it done. Unfortunately, the user experience kinda sucked, so we ended up ripping it all out...
Every time I’ve tried to understand passkeys I either don’t get it and it’s scary to potentially be locked out or I do understand it and I still find it scary to potentially be locked out.
Even 2fa is tricky.
If my phone is stolen and I don’t have my laptop with backup codes, then I’m not getting into my accounts.
What if both are stolen or damaged at the same time?
Passkeys are basically passwords that you don’t send to the server. So they are safer against phishing.
Basically the server has a message. They will scramble it with your public key. And send it to you. Your private key unscrambles the message and then you send the message back to them. So if they receive the original message back. They know you are you. And they never got their hands on your private key at any point. It’s awesome.
2fa is an entirely different thing. And I do wish it was more standard how it works. Some places if you lose it you lose your account (bitwarden). Others you don’t (protonmail).
Everyone should use passkeys. 2fa you have to decide if your case warrants it.
Edit: example of passkeys:
Step 1: they have the message “cat”
Step 2: they encrypt it with your public key and it becomes “acm”
Step 3: they send you the encrypted message “acm”
Step 4: you decrypt the message “acm” into “cat” with your private key.
Step 5: you send them back the message “cat”
Only your private key would be able to decrypt something encrypted with your public key. So they now know you are you. And they never got a hand on your private key. It’s the same as a password except you never send it directly to the server.
Bitwarden has a passkey service + a paid totp service, so I can always use either to log into whatever within two clicks. Yeah it’s less secure than a physical keychain but… Whatever, it’s better than passwords and as easy to use.
In any case, if you atore the backup codes in a place where you can lose them, that’s on you. Upload them into somewhere you control that has good privacy laws.
Every time I’ve tried to understand passkeys I either don’t get it and it’s scary to potentially be locked out or I do understand it and I still find it scary to potentially be locked out.
Even 2fa is tricky.
If my phone is stolen and I don’t have my laptop with backup codes, then I’m not getting into my accounts.
What if both are stolen or damaged at the same time?
Passkeys are basically passwords that you don’t send to the server. So they are safer against phishing.
Basically the server has a message. They will scramble it with your public key. And send it to you. Your private key unscrambles the message and then you send the message back to them. So if they receive the original message back. They know you are you. And they never got their hands on your private key at any point. It’s awesome.
2fa is an entirely different thing. And I do wish it was more standard how it works. Some places if you lose it you lose your account (bitwarden). Others you don’t (protonmail).
Everyone should use passkeys. 2fa you have to decide if your case warrants it.
Edit: example of passkeys:
Step 1: they have the message “cat”
Step 2: they encrypt it with your public key and it becomes “acm”
Step 3: they send you the encrypted message “acm”
Step 4: you decrypt the message “acm” into “cat” with your private key.
Step 5: you send them back the message “cat”
Only your private key would be able to decrypt something encrypted with your public key. So they now know you are you. And they never got a hand on your private key. It’s the same as a password except you never send it directly to the server.
Bitwarden has a passkey service + a paid totp service, so I can always use either to log into whatever within two clicks. Yeah it’s less secure than a physical keychain but… Whatever, it’s better than passwords and as easy to use.
In any case, if you atore the backup codes in a place where you can lose them, that’s on you. Upload them into somewhere you control that has good privacy laws.