2FA (Two-Factor Authentication)
2FA (Two-Factor Authentication)
2FA는 이중 인증 또는 2단계 인증으로, 계정 로그인 시 두 가지 다른 방식으로 본인임을 증명하는 보안 방식입니다.
인증 요소의 3가지 종류
보안에서 인증 요소는 크게 세 가지로 분류됩니다.
- 지식 기반 (Something you know) — 비밀번호, PIN, 보안 질문
- 소유 기반 (Something you have) — 스마트폰, OTP 기기, 보안 키
- 속성 기반 (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와 결합되는 경우 많음