본문 바로가기

Spring Boot

MFA에 대해서

Multi-Factor Authentication

서로 다른 인증 요소를 2개 이상 사용하는 모든 인증 방식

MFA는 하나의 기술을 말하는게 아니라, 여러 종류의 인증 요소 조합으로 만들어진다

 

요소 의미 예시
Knowledge 내가 아는것 비밀번호, PIN 번호
Possession 내가 가진것 휴대폰, OTP, 보안키
Inherence 지문, 얼굴

 

위의 것들을 조합해서 만듬

 

1. 비밀번호 + OTP (Knowledge + Possession)

가장 많이 쓰는 MFA임

일반적인 비밀번호와 OTP 인증을 통해 이루어진다

이 구성은 보안이 괜찮고, 구현이 쉬워서 일반적인 MFA로 활용한다

 

 

 

2. 비밀번호 + SMS or 이메일 코드 (Knowledge + Possession)

비밀번호와 문자 인증으로 이루어진 구조

이 구조는 쉽고, 사용자 친화적이다

그러나 SMS의 경우 SIM 탈취로 인해 해킹의 우려가 있고, 이메일 또한 탈취당할 가능성이 있다

그래서 일반적으로 OTP가 SMS/이메일보다 안전하다

 

 

 

3. 비밀번호 + 생체 인증(Knowledge + Inherence)

비밀번호와 지문, 혹은 얼굴을 통해 이루어지는 MFA

스마트폰, Windows Hello, Mac TouchID 등이 대표적이다

이 방식은 매우 빠르고, 편하고, 보안이 높다곤 하는데 우리나라에선 다 뚫린 케이스가 있었다...

 

 

 

4. 비밀번호 + 보안키(FIDO / WebAuthn, Knowledge + Possession)

비밀번호와 USB 보안키 방식의 MFA

Google, Git, AWS, 기업 계정에서 보통 사용한다

이 방식은 매우매우 강력하고, 피싱을 방지해서 기업에서 많이들 쓴다

 

 

 

5. Passkey / Passwordless MFA(Possession + Inherence, 내가 가진것 + 나 자신)

기기 인증이나 지문/얼굴을 통해 이루어지는 MFA

Google, Apple, MS에서 사용해볼 수 있음

비밀번호 없이 이루어진다는 특징이 있음

이 방식은 피싱이 거의 불가해서 매우 안전하다

 

 

 

6. 3단계 이상 MFA

3단계 이상은 보통 은행, 정부, 대기업 규모나 AWS Root 계정에서 사용할 수 있다

비밀번호 + OTP + 지문 / 비밀번호 + OTP + 보안키 형태가 일반적이라고 함


Security에서

로그인 - MFA - token 발급의 구조로 설계해볼 수 있다