๐ฑ Multi-Factor Authentication
Why two factors from different categories is qualitatively stronger than oneโฑ ~2 min
TOTP โ Time-Based One-Time Password
TOTP (RFC 6238) is the mechanism behind Google Authenticator, Authy, and most '6-digit code' MFA. Setup: the server and your phone share a secret seed during enrollment (usually via QR code). At login: both sides independently compute HMAC-SHA1(seed, floor(current_time / 30)) and truncate to 6 digits. If your 6-digit code matches the server's calculation โ you have the seed โ authentication succeeds.
FIDO2 / WebAuthn โ Phishing-Resistant MFA
TOTP codes can be phished โ a fake login page can capture your 6-digit code and use it immediately. FIDO2 (Fast IDentity Online 2, using the WebAuthn standard) is phishing-resistant by design. The authenticator (YubiKey, phone, Windows Hello) signs a challenge that includes the domain name. If you're on a phishing site with a different domain, the signature will be for the wrong domain and authentication fails.
| MFA Method | Phishing Resistant | SIM Swap Resistant | Usability |
|---|---|---|---|
| SMS OTP | โ No | โ No (SS7 attack, SIM swap) | High โ no app needed |
| Email OTP | โ No | โ Sort of | High โ no app needed |
| TOTP (Authenticator app) | โ No (can be phished in real-time) | โ Yes | Medium โ need app |
| FIDO2/WebAuthn (hardware key) | โโ Yes | โ Yes | High โ tap key or use biometric |
| Passkeys (FIDO2 on device) | โโ Yes | โ Yes | High โ built into phone/laptop |
Passkeys โ Replacing Passwords Entirely
What makes FIDO2/passkeys phishing-resistant?