반응형



MFA(Multi-Factor Authentication)는
“여러 종류의 인증 수단을 조합해서 로그인하는 방식”
쉽게 말하면:
비밀번호만 믿지 말고
추가 증명도 같이 요구하자
라는 개념.
가장 흔한 예시
로그인할 때:
1. 아이디/비밀번호 입력
↓
2. 휴대폰 인증번호 입력
이거 자체가 MFA
왜 필요한가
비밀번호는 털릴 수 있기 때문.
예:
- 피싱
- DB 유출
- 비밀번호 재사용
- 키로거
- 악성코드
등등.
그래서:
비밀번호 알아도
추가 인증 없으면 못 들어오게 하자
가 MFA 핵심.
인증 요소(Factor) 종류
MFA는 서로 다른 종류의 인증을 조합해야 함.
보통 3가지로 나눔.
1. 내가 아는 것 (Knowledge)
지식 기반.
예:
- 비밀번호
- PIN
- 보안 질문
2. 내가 가진 것 (Possession)
소유 기반.
예:
- 휴대폰
- OTP 앱
- 보안키(YubiKey)
- 인증서
- 문자 인증
3. 나 자신 (Inherence)
생체 기반.
예:
- 지문
- 얼굴
- 홍채
MFA는 조합이 중요
예:
좋은 MFA
비밀번호 + OTP
(지식 + 소유)
이것도 MFA
비밀번호 + 지문
이건 MFA 아님
비밀번호 + 보안질문
둘 다 “아는 것”이라
같은 factor임.
OTP가 가장 흔함
실무에서 제일 많이 쓰는 MFA.
OTP 원리
OTP = One Time Password
일회용 비밀번호.
예:
582194
30초마다 바뀜.
대표 앱
- Google Authenticator
- Microsoft Authenticator
- Authy
OTP 동작 원리
보통 TOTP 방식 사용.
(Time-based One-Time Password)
서버와 앱이 같은 Secret 공유
처음 등록 시:
SECRET_KEY
를 서로 저장.
이후
현재 시간 기준으로:
HMAC(secret + currentTime)
계산.
그러면:
- 서버
- 사용자 앱
둘 다 같은 숫자 생성 가능.
그래서 네트워크 통신 없이도 됨
앱은 오프라인이어도 OTP 생성 가능.
SMS 인증은 왜 약하다고 하나
문자 MFA도 MFA는 맞음.
하지만 보안 약점 있음.
대표 공격
SIM Swapping
통신사 속여서:
내 번호를 공격자 유심으로 이동
시키는 공격.
그래서 요즘은:
더 안전한 방식 선호
- OTP 앱
- Passkey
- FIDO2
- 보안키
가장 강력한 MFA
FIDO2 / 보안키
예:
- YubiKey 5 NFC
- Windows Hello
- Face ID
원리
공개키 암호 기반.
사이트마다:
- 공개키 등록
- 개인키는 기기 내부 보관
로그인 시:
개인키 서명
으로 인증.
비밀번호 자체가 없어질 수도 있음.
MFA와 SSO 관계
실무에서 엄청 중요.
보통:
SSO 로그인 시
MFA 추가 요구
구조를 씀.
예:
회사 SSO 로그인:
ID/PW
↓
OTP 입력
↓
사내 모든 시스템 접근
기업에서 MFA 적용 이유
특히 VPN/클라우드 때문에 중요해짐.
예:
- AWS 콘솔
- GitHub
- 사내 VPN
- 관리자 페이지
비밀번호만으로는 위험.
실무 구조
보통:
사용자
↓
IdP(Keycloak/Okta)
↓ MFA 수행
↓
JWT/OIDC 토큰 발급
↓
서비스 접근
Spring Security 기준
요즘은 보통:
- 자체 구현 거의 안함
- IdP에 위임
함.
즉:
- Keycloak
- Auth0
- Okta
가 MFA 처리.
Spring은:
토큰 검증만
하는 경우 많음.
요즘 트렌드
Passwordless
비밀번호 제거 흐름.
예:
Face ID
지문
Passkey
만으로 로그인.
Passkey
애플/구글/MS가 밀고 있음.
사실상:
FIDO2 기반 공개키 인증
임.
핵심 정리
MFA는:
비밀번호 하나만 믿지 말고
서로 다른 종류의 인증 요소를
추가로 요구해서
계정 탈취를 어렵게 만드는 보안 방식
이야.
반응형
댓글