Two-Factor Authentication (2FA): SMS vs Authenticator vs Passkey | DSET
A comparison of SMS codes, authenticator apps, hardware keys, and passkeys. Which 2FA method best resists phishing and SIM swapping? Clear guidance for individuals and organizations.
Quick Answer
Two-factor authentication (2FA/MFA) protects your account by requiring a second proof in addition to your password. The weakest method is the email code, while the strongest are passkeys and hardware security keys (FIDO2), because they are cryptographically bound to the domain and cannot be phished. SMS codes are better than nothing but remain exposed to SIM swapping and real-time phishing. Practical ranking (strongest to weakest): passkey ≈ hardware key > authenticator/TOTP app > push approval > SMS code > email code. Our recommendation: use passkeys or hardware keys on critical accounts (email, banking, corporate login), at minimum move to an authenticator app, and store your recovery codes securely.
Why Isn't a Password Alone Enough?
Passwords rely on a single secret. Once that secret leaks, your account is exposed. Passwords are compromised through:
- Data breaches: A password leaks from one site, and if you reused it, all your accounts fall (password reuse).
- Phishing: Fake login pages copy your password.
- Brute-force and dictionary attacks: Weak passwords are cracked in seconds.
- Malware: A keylogger on your device records your keystrokes.
Two-factor authentication ensures that even if the password is stolen, the attacker cannot provide the second proof. In other words, 2FA removes the password as a single point of failure. That is why 2FA is no longer optional, neither for individuals nor for organizations.
Password theft often begins with phishing; to recognize fake emails, see our guide on how to spot a phishing email.
2FA Methods: A Closer Look
Email Code (Weakest)
A code sent to your email during login counts as a second factor but provides little real protection. If an attacker has already accessed your email (the most common target), they see the code too. The email code does not offer a channel separate from the one protecting the account. Replace it wherever possible.
SMS Code (Easy but Risky)
A one-time code via SMS is the most common method because everyone has a phone and setup is simple. It is definitely better than no 2FA. However, it has two serious weaknesses:
- SIM swap: The attacker tricks the carrier through social engineering, or bribes an employee, to port your number to their SIM. From that moment, all your SMS codes go to the attacker.
- Real-time phishing: A fake page instantly relays the SMS code you enter to the real site and steals your session.
SMS depends on the phone network and carrier security, which is why it is not ideal for critical accounts. Services like WhatsApp also rely on SMS verification and are therefore at risk; we covered this in my WhatsApp account was hijacked.
Authenticator / TOTP App (Solid Middle Ground)
Apps like Google Authenticator, Microsoft Authenticator, or Authy generate 6-digit codes that change every 30 seconds (the TOTP standard). Their advantages:
- Works offline: No network or internet needed; the code is generated on your device.
- Resistant to SIM swap: Even if your number is stolen, the codes stay in the app.
- Free and easy to set up: Activated in seconds by scanning a QR code.
The weakness: a TOTP code can be phished. If you enter the code on a fake page yourself, the attacker can relay it to the real site within 30 seconds and log in. Still, it is a big leap over SMS and offers the best practical balance for most individuals.
Push Approval (Convenient but Fatigue Risk)
Instead of a code, some apps send a "Do you want to sign in? Approve / Deny" notification to your phone. It is very easy to use. However, it is vulnerable to an attack called MFA fatigue: since the attacker knows your password, they send dozens of pushes in a row until the user, annoyed or by mistake, taps "Approve." Modern push systems reduce this risk with on-screen two-digit number matching; apps that support this are safer.
Hardware Security Key (FIDO2 - Phishing-Resistant)
Physical keys like YubiKey connect via USB, NFC, or Bluetooth. They use the FIDO2/WebAuthn standard, and their game-changing feature is this: the key is cryptographically bound to the domain you log in to. On a fake site, the key will not work because the domain does not match. Therefore:
- Phishing attacks fail; there is no "entering the code in the wrong place."
- SIM swapping becomes completely meaningless.
- The secret never leaves the device; the server only knows the public key.
The downside is that the key has a cost and must be carried with you. It is the gold standard for organizations and high-risk individuals.
Passkey (Passwordless, the Future Standard)
A passkey brings FIDO2 technology embedded into your phone, computer, or password manager. It eliminates the password entirely; face recognition, fingerprint, or device PIN is enough to log in. Why is it unphishable?
- Each passkey is a public/private key pair. The private key never leaves your device and is never sent to any server.
- The passkey is bound to the domain it was registered with. On a fake page like
g00gle.com, the browser/OS will not even offer the passkey. - There is no "code" to relay or mistakenly enter; authentication is entirely cryptographic.
Apple, Google, and Microsoft have embedded passkeys into their platforms, and they can sync across devices via the cloud. This delivers both top-tier security and SMS-level ease of use. This is the future standard.
Comparison Table
| Method | Security | Ease of Use | Phishing Resistance | SIM Swap Resistance |
|---|---|---|---|---|
| Email code | Very low | High | None | Yes |
| SMS code | Low | Very high | None | None |
| Authenticator (TOTP) | Medium-High | High | Weak | Full |
| Push approval | Medium-High | Very high | Medium | Full |
| Hardware key (FIDO2) | Very high | Medium | Full | Full |
| Passkey | Very high | High | Full | Full |
How Is 2FA Bypassed? SIM Swap and Real-Time Phishing
Knowing that 2FA can also be defeated helps you choose the right method.
SIM swap attack: The attacker impersonates you to the carrier (easier if your identity details have leaked) and ports your number to a new SIM. Your phone suddenly loses signal, while the attacker receives all your SMS codes. This attack only breaks SMS-based 2FA; authenticator apps, hardware keys, and passkeys are unaffected.
Real-time phishing (adversary-in-the-middle): The attacker sets up a fake proxy page sitting between you and the real site. You enter your password and SMS/TOTP code on the fake page, which instantly relays them to the real site and steals your session cookie. This attack defeats SMS and authenticator codes too. The only real defense is to use a FIDO2 hardware key or passkey that is cryptographically bound to the domain, because there is no "code" to relay and the fake domain does not match.
If your account was hijacked this way, acting fast is critical; our articles recovering a stolen Instagram account and is my phone hacked explain the first steps.
Recovery Codes and Backup
Every 2FA method needs a backup for the day you lose your device. Most services give you one-time recovery codes when you enable 2FA. You should:
- Not leave them as a screenshot on your phone.
- Store them in a password manager, an encrypted note, or printed in a physical safe.
- Cross out a code once used; each code is single-use.
For critical accounts, registering two separate methods is the safest approach: for example, a hardware key plus a backup passkey. That way you are not locked out when one is lost.
Lost Phone or Key Scenario
- You lost your phone with the authenticator on it: Cloud-backed apps like Authy or synced passkeys move to the new device. For TOTPs without backup, log in with your recovery codes and re-enroll 2FA on the new device.
- You lost your hardware key: This is why registering a second key is always recommended. Log in with the second one and remove the lost key from account settings.
- You have no backup at all: You must start the service's account recovery process, which is usually slow and requires identity verification. To avoid this, set up the backup from the start.
Recommendations for Individuals and Organizations
For individual users:
- Move from email and SMS 2FA to at least an authenticator app.
- Enable passkeys on critical accounts like email, banking, and social media.
- Store your recovery codes in a secure password manager.
For organizations:
- Enforce phishing-resistant 2FA (FIDO2 keys or passkeys) on admin and privileged accounts.
- Gradually retire SMS-based 2FA; if unavoidable, keep it only on low-risk systems.
- If push is used, enable number matching and provide MFA fatigue awareness training.
- Make recovery processes and backup key distribution part of policy.
Frequently Asked Questions (FAQ)
Is the 2FA code sent via SMS secure? SMS is better than no 2FA but is one of the weakest real methods. It can be bypassed by SIM swapping and real-time phishing. If possible, switch to an authenticator app or passkey.
Why can't a passkey be phished? A passkey is cryptographically bound to the domain it is registered with, and the private key never leaves your device. On a fake site the browser will not offer the passkey; there is no code to relay or steal.
Does an authenticator app work without internet? Yes. TOTP codes are generated on your device based on time; no internet or network is required. This makes it far more resilient than SMS.
If I lose my phone, will I be locked out of my accounts? Not if you have recovery codes or a second method (backup key, synced passkey). That is why you must always set up a backup when enabling 2FA.
How many different 2FA methods should an account have? For critical accounts, at least two are recommended: a primary method (passkey or hardware key) and a backup. That way you are not locked out if one is lost.
About DSET
DSET is a cybersecurity firm operating since 2003 in Ankara Hacettepe Teknokent, Beytepe, Çankaya. We provide support for account security, hijacked account recovery, and enterprise 2FA architecture. The initial diagnosis is free. Contact us: +90 536 662 38 09.
Sources
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.