다요소 인증(多要素認證, Multi-factor authentication, MFA)은 적어도 다음 분류 중 두 가지에 한해 별도의 여러 증거 부분을 인증 매커니즘에 성공적으로 제시한 이후에만 사용자가 접근 권한이 주어지는 컴퓨터 접근 제어 방식의 하나이다: 지식(knowledge), 소유(possession), 속성(inherence).출처:위키
다중 인증(MFA, Multi-Factor Authentication)은 사용자의 신원을 확인하기 위해 두 가지 이상의 인증 요소를 요구하는 보안 절차입니다. 이는 단일 인증 방식보다 보안을 강화하여 무단 접근을 방지하는 데 효과적입니다.
1967년 영국 Barclays 은행에서 도입된 최초의 ATM은 카드(소유 요소)와 PIN(지식 요소)을 요구하여 초기의 2단계 인증 형태를 구현했습니다.
1990년대 후반, AT&T는 하드웨어 토큰을 활용한 2FA 시스템을 개발했습니다. 이러한 시스템은 기업 환경에서 보안을 강화하는 데 사용되었습니다.
2000년대 초반, 온라인 뱅킹 및 전자상거래의 성장과 함께 소비자용 2FA가 확산되었습니다. SMS 기반 OTP와 같은 방식이 일반화되었으며, 이는 피싱 공격과 같은 위협에 대응하기 위한 조치였습니다.
스마트폰의 보급과 함께 모바일 앱 기반의 인증 방식이 등장했으며, 지문, 얼굴 인식 등 생체 인증 기술도 MFA에 통합되었습니다. 또한, FIDO2 및 WebAuthn과 같은 표준이 개발되어 비밀번호 없는 인증 환경이 조성되고 있습니다.
MFA는 일반적으로 다음 세 가지 요소 중 두 가지 이상을 조합하여 사용합니다:
강력한 비밀번호 정책 필요 (예: 길이, 복잡성, 반복 방지 등)
해시(예: bcrypt, Argon2) 처리 필수
SMS/이메일 OTP: 일정 시간 만료, 횟수 제한, 서버-클라이언트 동기화 필요
Authenticator App (TOTP): 시간 기반 알고리즘(HOTP/TOTP), Google Authenticator, Authy 등 연동
FIDO2/WebAuthn: 생체 기반 또는 보안키 기반 → 브라우저/디바이스 호환성 고려
일반적으로 클라이언트(기기)에 저장, 서버에는 생체 정보 저장 안함
WebAuthn API, Android/iOS 생체 인증 API 사용
MFA 인증 흐름을 탈취 방지 설계
토큰 재사용 불가, 단일 사용성 확보
TLS(HTTPS) 적용 필수
타이밍 공격, 브루트포스 방지
MFA 실패 시 반복 제한 및 알림 기능
TOTP 사용 시 서버와 클라이언트의 시간 동기화 관리
MFA 등록/삭제 기능 제공 (사용자 선택 가능하게)
백업 수단 제공 (예: 백업 코드, 보조 이메일)
MFA 단계에서의 안내 메시지 명확화 (예: "인증 코드를 입력하세요", "앱에서 승인해주세요")
MFA 오류 시 유연한 예외 처리 (예: 디바이스 분실 시)
| 요소 | 라이브러리/기술 |
|---|---|
| OTP 생성/검증 | speakeasy, otplib, google-authenticator |
| SMS 발송 | Twilio, MessageBird, AWS SNS |
| 이메일 인증 | nodemailer, Amazon SES |
| WebAuthn | @simplewebauthn/server, webauthn-json |
| 상태 저장 | Redis (TTL 기반) or DB (PostgreSQL, MongoDB) |