Here's a little scenario that played out at work the other day...
Dramatis personae:
M - who is Me. Customer service agent extrodinaire.
C - who is a dumbass cranky customer
Our scene opens on your humble narrator diligently toiling at his work station
M: Thank you for calling The Company, my name is M, may I have your name please?
C: yeah yeah, my name is C, and I got a lot of problems with you people! Do you know how many times that damned robot voice tried to send me messages? I just want to talk to a person dammit!
M: I'm so sorry to hear you're having a bad experience sir! I'll be happy to help you with anything you need, but it does appear you have enabled two factor authentication, so I'll need to send a link to your phone so I can access your account
C: THIS IS FUCKING RIDICULOUS! YOU CAN'T JUST TELL ME WHAT I WANT???? I PAY YOU PEOPLE A FORTUNE EVERY MONTH AND I CAN'T EVEN ASK A DAMNED QUESTION??? THIS COMPANY IS A FUCKING JOKE!!!
M: Yes sir, I know the enhanced security requirements can be frustrating, but unfortunately we've had to update them in order to make sure our customers accounts remain secure. It should just take a moment for me to send the message though and all you have to do is click the link! Can I go ahead and send it to your number on file?
C: are you fucking kidding me here? Is this what I pay for every goddamned month??? ALL I WANT TO DO IS ASK A QUESTION AND YOU ARE REFUSING TO HELP ME!!! GET ME YOUR SUPERVISOR! NOW!
M: again sir, I understand how frustrating this can be. Unfortunately in order to protect your security, I cannot give you any information or transfer you to anyone else until we have verified your account. If you would prefer not to verify the account that is certainly your right though. Was there anything else I can help you with today?
C: (sighs dramatically) fine... just send me the goddamned thing... I'm leaving this joke of a company tomorrow though.
M: well sir I would hate for you to have to go to a competitor who doesn't value your security as much as we do here at The Company. I'll send that message out. You should be getting it right.... now
(Mr C grumbles incoherently as he clicks the link. It takes him all of two seconds.)
C: THERE! I did what you ORDERED! Now will you PLEASE help me with my account???
M: Absolutely sir! What can I help you with today?
C: I have gotten at least 20 messages from you people today telling me some bullshit about approving an order being placed on my account! I DIDN'T ORDER ANYTHING!!! DO YOU PEOPLE EVEN KNOW WHAT YOU'RE DOING OVER THERE???
(I pause to take a brief respite and collect my thoughts as I feel a little piece of my soul dying)
M: That is a very serious issue sir! It appears someone was attempting to access your account online, and nearly managed to place an order for almost $5000 worth of equipment! It looks like the order was canceled because they couldn't get past your (here it comes) enhanced two factor authentication requirements.
It can be overwhelming for people when they first start, but after a while you eventually learn to expect it lol
I can tell you from experience that someone like this probably makes up a reason to call in once or twice a month at least and claims they are taking their business elsewhere EVERY TIME for years and years lol
It might be I'm being stupid, so please tell 'em if I am. But why do you not wait to find out what the question even is before going into their account? That way you could explain the troubleshooting process better to them, no?
Fuck the 2 factor bullshit.
I've lost many accounts just because I moved to another country and changed my number.
I still know the password, It is my account but I can't login just because the asshole who created 2 factor authentication never moved out of his parent's basement.
While true, other scenarios do come into play, like "I'm using a FIDO key but I dropped it down a storm drain". Meaning you pretty much have to provide some recovery mechanism, since you can't really require the user to have a backup device.
The security level should be the user's choice. Maybe I don't care if my neopets account is hacked. Maybe the 2fa offered actually decreases security, like the SMS 2FA required by my 401k account that can be used as the sole recovery factor, bypassing the password. Maybe I'm accessing from a system configuration that makes 2fa really annoying, like a build system running inside a fresh VM on every run.
The service doesn't have the context necessary to know when 2FA is warranted.
I do live in a state of constant dread of losing my phone, or having it break down, or getting a new phone now, but at least things are "secure" again *sigh
Unfortunately, it’s often implemented as two-step authentication though. Like asking for a password and an answer to a security question. Those are both something you know. Two-factor authentication would involve two of these factors: something you know, something you have, and something you are.
Your identity cannot be stolen. The idea is science fiction. What thieves make off with are your credentials. Many of which you have no choice and sometimes no knowledge of. If you think about it, these credentials aren't necessarily for your benefit, and sometimes directly to your harm.
But it's your job to safeguard and secure these credentials with your time, effort, and hardware you own and maintain. Carry on consumer.
I was all for it and even bought a USB dongle to make it super easy. Turns out this shit doesn't work anywhere. Fuck 2FA if nobody implements decent mechanisms.
TOTP - no particular investment needed, so very popular, but a bit onerous
Various MFA vendors that tie into their cloud services. I hate these since it means I generally have to get additional apps, with uneven platform support
Webauthn/Passkey - Cool, integration with my phone, a Fido usb key, windows hello if applicable, no need for external service, uses asymmetric encryption so it's not shared secret and it's more convenient.... Almost no one bothers to implement it for their service though, despite it being pretty damn easy.
2-factor would be fine if it didn’t have to involve my phone. It’s such a pain in the ass. Like a second password would be fine, so my password manager could just do both at once.
I just want them to make it so I can use my password manager, because juggling multiple authentication apps and sms messages etc just makes me less likely to turn on 2fa in the first place.
There are options for 2fa for desktop, for Windows and Linux^. You could have multiple devices with your 2fa codes, makes it not as bad if your phone breaks.
^ (though from my experience with the Windows ones they are not as robust, but they get the job done)
A second password would not be 2FA, it would just be two passwords.
2 Factor refers to 2 different ways of proving your identity. Something you know (your password) and something you have (your phone). You can also get dedicated 2FA devices, they look like a little USB drive with a screen, but honestly, they are more of a pain to deal with than your phone, and most 2FA systems do not have support for all the different brands and devices.
This was my ISP and I a few years ago. I'm a beta tester for some of their features, and I argued this was necessary for ages. They finally implemented it, and now err on the side of way too many prompts for 2FA, but at least we have it.
My current beef is arguing that we NEED IPv6 settings in the router. One size does NOT fit all.
It's an uphill battle...
Yes, shared secret based, but not a big deal because it is machine generated and unique per account. The 'server has your credential' is only a problem if the credential is reused across services. If you have access to read TOTP secrets from the server, you probably don't need those TOTP secrets to further compromise the service.
But webauthn/passkey is a better approach. Properly managed SSH keys are good too, but folks aren't too happy about how ssh keys are commonly pretty lax. Client certificates similarly would have worked, but never took off. Similar story for smartcards.