The fundamental blind spot engineers have had with every authentication protocol for 30 years is forgetting that trust must be mutual. The lone exception has been phishing prevention with user-selected avatars, and that didn't last long.
Every advancement in "security" has assumed the service needs to more strictly identify the customer, without caring about the customer's trust for the service, or experience with performing the identification ritual.
So when your bank asks you for a code or your mom's maiden name, they never offer anything to verify they are who they say they are. whenever I ask they say "of course we're from chase, we just called you", without realizing how absurd that is.
Now Passkeys suffer an even worse dilemma. Now the customer has 4 dimensions of tools to record & use in order to log in. Did I use email, google, facebook, apple ID to log in? Did I save this code via phone, text, authenticator app (which one, there are multiple incompatible ones)? Did I use a passkey ? where is that passkey located? my phone, my browser storage, my authentication extension.
We started with a single dimension of email + password to log in. Now it's an entire decision tree that has to be recorded. How do you even record this?
disqus : credential = email, password = "see bitwarden", 2fa = microsoft authenticator, passkey = "on iphone in icloud"
viator: credential = google sso, password = same, 2fa = symantec, passkey = "edge on windows 11 laptop in office"
This is absolutely absurd!I thought engineers were tested for scaling during the interview process. This protocol doesn't even scale to a single site.