What is Two Factor Authentication? (2024)

Two-factor authentication (commonly abbreviated 2FA ) adds an extra layer of security to your user's account login by requiring two types of authentication. This is usually something your user knows and something they have.

Looking for how to add 2FA to your personal accounts? Check out Authy's 2FA guides for adding 2FA to sites like Gmail, Fortnite, Gemini, and many more.

What is a factor?

what-is-a-factor page anchor

There are three types of factors:

  1. Knowledge - something you know like a password
  2. Possession - something you have like a mobile phone
  3. Inherence - something you are like a fingerprint

2FA means using any two of these factors. In web authentication, this is commonly something you know and something you have.

The Problem with Passwords

the-problem-with-passwords page anchor

Also known as multi-factor authentication (MFA), two-factor authentication is a common authentication best practice to increase account security normally provided by passwords. Passwords became a de facto standard for online authentication because they're relatively easy to use and unlike a possession factor, you can't lose a password.

What is Two Factor Authentication? (1)

According to the website haveibeenpwned.com, guessable passwords like 123456 are still incredibly common. That password, 123456, has been seen in data breaches over 24 million times . To make matters worse, a 2019 Google study shows that 64% of people admit to reusing passwords across multiple sites. This is a problem because even if someone has a complex password, if they're reusing it for many sites, a data breach at MySpace or Adobe could lead to the user's account getting breached on your company's site through a process known as credential stuffing.

How Does Two Factor Authentication Keep Your Users Secure?

how-does-two-factor-authentication-keep-your-users-secure page anchor

Things like password reuse, poorly encrypted passwords, social engineering, and leaked databases make even a secure password vulnerable. By requiring users to add a second factor to their authentication flow, an account with a compromised password will still be protected. Even targeted attacks are more difficult because the attacker would be required to access to different forms of authentication. A Google study showed that SMS based authentication "can block up to 100% of automated bots, 99% of bulk phishing attacks, and 66% of targeted attacks".

What is Two Factor Authentication? (2)

Mobile phone 2FA has become the industry standard, as most people carry their mobile phones at all times. It's a user-friendly flow, and dynamically generated passcodes are safe to use and users can receive special tokens through SMS or a dedicated authenticator app like Twilio's Authy.

Is SMS 2FA secure?

is-sms-2fa-secure page anchor

SMS authentication has long been a popular choice for securing consumer accounts. It's an easy and familiar channel to deploy and SMS 2FA usage has even grown 9% in the last two years. While the SMS channel has legitimate security concerns, businesses should consider their threat model and offer a spectrum of 2FA options. Offering more secure channels like authenticator apps and push authentication is especially important when you're protecting high value targets like a bank account or email. For more details, check out this blog post on 5 reasons SMS 2FA isn't going away(link takes you to an external page).

Incentivizing Two Factor Authentication

incentivizing-two-factor-authentication page anchor

Offering 2FA isn't enough: your users also have to turn it on. Check out this blog post with tips for incentivizing 2FA(link takes you to an external page) including real world examples from banking and gaming companies.

Examples of Two Factor Authentication

examples-of-two-factor-authentication page anchor

When you use your credit card and are prompted for your billing zip code, that's 2FA in action. Knowledge factors like your zip code may also be passwords or a personal identification number (PIN). Possession factors like your credit card include (but are not limited to) a physical key, fob, and personal cell phones. Two factor authentication for web applications similarly requires something your user knows (their password) and something they have (their personal mobile phone).

Two-step authentication vs. Two-factor authentication

two-step-authentication-vs-two-factor-authentication page anchor

Using two knowledge factors like a password and a PIN is two-step authentication. Using two different factors like a password and a one-time passcode sent to a mobile phone via SMS is two-factor authentication.

How Does Two Factor Authentication Work?

how-does-two-factor-authentication-work page anchor

Most people add a possession authentication factor in addition to an existing knowledge channel. When a user signs up or logs in to your application 1) a numeric code is sent to their mobile device either via SMS, calls, email, 2) with a push notification or 3) through an authenticator app.

Each channel has different tradeoffs:

  • SMS is easy to use but requires cell service and is less secure.
  • An authenticator app (TOTP) provides a constantly rotating set of codes your users can use whenever needed, and does not require a cellular or internet connection.
  • Push authentication is very easy to use, provides additional context about the authentication event, and has predictable pricing for the business, but does require a specific app download.

Only after the user enters the correct numeric code in your application's login flow are they authenticated.

Adding Two Factor Authentication to Your Application

adding-two-factor-authentication-to-your-application page anchor

What is Two Factor Authentication? (3)

There are a wide variety of ways to add two-factor authentication to your application. By using the Twilio Verify API, implementation is simplified and can boil down to just a few lines of code.

2FA with Twilio Verify SMS

2fa-with-twilio-verify-sms page anchor

Node.js

Python

C#

Java

Go

PHP

Ruby

twilio-cli

curl


_11

// Download the helper library from https://www.twilio.com/docs/node/install

_11

// Find your Account SID and Auth Token at twilio.com/console

_11

// and set the environment variables. See http://twil.io/secure

_11

const accountSid = process.env.TWILIO_ACCOUNT_SID;

_11

const authToken = process.env.TWILIO_AUTH_TOKEN;

_11

const client = require('twilio')(accountSid, authToken);

_11

_11

client.verify.v2.services('VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')

_11

.verifications

_11

.create({to: '+15017122661', channel: 'sms'})

_11

.then(verification => console.log(verification.sid));


Output


_23

{

_23

"sid": "VEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

_23

"service_sid": "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

_23

"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

_23

"to": "+15017122661",

_23

"channel": "sms",

_23

"status": "pending",

_23

"valid": false,

_23

"date_created": "2015-07-30T20:00:00Z",

_23

"date_updated": "2015-07-30T20:00:00Z",

_23

"lookup": {},

_23

"amount": null,

_23

"payee": null,

_23

"send_code_attempts": [

_23

{

_23

"time": "2015-07-30T20:00:00Z",

_23

"channel": "SMS",

_23

"attempt_sid": "VLXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

_23

}

_23

],

_23

"sna": null,

_23

"url": "https://verify.twilio.com/v2/Services/VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Verifications/VEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

_23

}


Where to Next?

where-to-next page anchor

Ready to add 2FA to your application with Twilio? Here are some resources to get you started:

  • Serverless phone verification with Twilio Verify and Twilio Functions(link takes you to an external page)
  • How to do Phone Verification in iOS Apps with Twilio Verify and Swift(link takes you to an external page)
  • Verify Push Overview
  • Twilio Verify documentation

We can't wait to see what you build!

What is Two Factor Authentication? (2024)
Top Articles
Latest Posts
Article information

Author: Virgilio Hermann JD

Last Updated:

Views: 5750

Rating: 4 / 5 (41 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Virgilio Hermann JD

Birthday: 1997-12-21

Address: 6946 Schoen Cove, Sipesshire, MO 55944

Phone: +3763365785260

Job: Accounting Engineer

Hobby: Web surfing, Rafting, Dowsing, Stand-up comedy, Ghost hunting, Swimming, Amateur radio

Introduction: My name is Virgilio Hermann JD, I am a fine, gifted, beautiful, encouraging, kind, talented, zealous person who loves writing and wants to share my knowledge and understanding with you.