2FA (Two-Factor Authentication)

2FA이중 인증 또는 2단계 인증으로, 계정 로그인 시 두 가지 다른 방식으로 본인임을 증명하는 보안 방식입니다.

인증 요소의 3가지 종류

보안에서 인증 요소는 크게 세 가지로 분류됩니다.

  1. 지식 기반 (Something you know) — 비밀번호, PIN, 보안 질문
  2. 소유 기반 (Something you have) — 스마트폰, OTP 기기, 보안 키
  3. 속성 기반 (Something you are) — 지문, 얼굴 인식, 홍채

2FA는 이 중 서로 다른 두 가지 요소를 조합해 사용합니다.

대표적인 2FA 방식

방식 설명 보안 수준
SMS OTP 문자로 6자리 코드 전송 낮음 (SIM 스와핑 취약)
TOTP Google Authenticator 같은 앱 기반 시간제 코드 중간
HOTP 이벤트 기반 OTP (카운터 방식) 중간
Push 알림 앱으로 승인/거부 요청 (Duo 등) 중간~높음
하드웨어 키 YubiKey 같은 물리 보안 키 (FIDO2/WebAuthn) 매우 높음
이메일 OTP 이메일로 코드 전송 낮음~중간

MFA와의 차이

  • 2FA — 정확히 두 가지 요소 사용
  • MFA (Multi-Factor Authentication) — 두 가지 이상 사용, 2FA를 포함하는 상위 개념
  • 실무에서는 두 용어를 혼용하는 경우가 많습니다.

개발 관점에서 자주 쓰이는 표준

  • TOTP — RFC 6238, speakeasy / otpauth 같은 라이브러리로 구현
  • FIDO2 / WebAuthn — 패스키(Passkey)의 기반, 피싱에 가장 강함
  • PKCE + OAuth 2.0 — 모바일 앱 인증 흐름에서 2FA와 결합되는 경우 많음