Cybersecurity
Two-Factor Authentication: Choosing a Method and Rolling It Out
Updated April 17, 2018By the CalliArc team
Key takeaway
Authenticator apps are the right default: far stronger than SMS, free, and widely understood. The hard part isn't the second factor — it's account recovery, which is where most 2FA implementations quietly reintroduce the vulnerability they were meant to close.
Adding a second factor is the single highest-value security improvement available to most applications. Choosing the method is straightforward; the surrounding design is where implementations succeed or fail.
The methods, ranked
- Hardware security keys — strongest available, resistant to phishing because the key verifies the site. Best for administrators and high-risk accounts.
- Authenticator apps generating time-based codes — strong, free, offline, and the sensible default for most users.
- Push approval — good usability, but vulnerable to fatigue attacks where a user approves a repeated prompt to make it stop. Show context and use number matching if you offer it.
- SMS codes — weakest, because of SIM swap and interception. Still vastly better than nothing, and sometimes the only option your users will accept.
- Email codes — barely a second factor if the account is recoverable by email, since it's the same factor twice.
Recovery is the real design problem
- Issue single-use recovery codes at enrolment, shown once, with clear instructions to store them somewhere safe.
- Allow more than one registered factor — a second device or key — so losing a phone isn't a lockout.
- Any human-assisted recovery route must have identity verification at least as strong as the factor it bypasses, or you've built a social-engineering path straight past your own control.
- Log and alert on every recovery event; this is where account takeovers show up.
Implementation details that matter
- Allow a small time drift on codes, and rate limit verification attempts — six digits is brute-forceable without a limit.
- Invalidate a code once used, so an intercepted code can't be replayed.
- Re-prompt for the second factor on sensitive actions — changing email, adding a payout account, disabling 2FA itself.
- Offer trusted-device remembering with a sensible expiry, or usability complaints will drive people to disable it.
Rolling it out
- Mandate it for administrators and privileged accounts first, without exception.
- Make it optional for everyone else, then prompt, then require — with notice and a clear reason.
- Write the help documentation before you launch, including the recovery path, and brief support on the exact lockout scenarios.
- Expect a support spike in the first week, and staff for it. That spike is the entire cost of the control, and it's small compared with one account takeover.