FIDO/WebAuthn은
요즘 패스키(Passkey), Face ID 로그인, Windows Hello 로그인 같은 것들의 핵심 기술
즉:
비밀번호 대신
공개키 암호 기반으로 로그인하자
라는 방향.
먼저 관계 정리
FIDO
큰 개념/표준 연합.
만든 곳:
- FIDO Alliance
WebAuthn
브라우저 표준 API.
즉:
브라우저가
FIDO 인증 기능 제공
하는 것.
쉽게 말하면
FIDO
"이런 인증 방식 쓰자"
표준.
WebAuthn
브라우저에서 실제 구현하는 API
왜 나온 건가
비밀번호의 근본적 문제 때문.
기존 비밀번호 문제
1. 서버가 비밀번호를 관리해야 함
해시 저장해도 위험.
DB 털리면 공격 가능.
2. 피싱 취약
사용자가:
가짜 사이트
에 비밀번호 입력 가능.
3. 재사용 문제
같은 비밀번호 여러 사이트 사용.
FIDO 목표
핵심은:
서버가 비밀번호를 몰라도 되게 하자
야.
핵심 원리
공개키 암호 기반
회원가입 또는 Passkey 사용 선택 시:
사용자 기기에서
공개키 / 개인키 생성
함.
서버에는 공개키만 저장
PUBLIC KEY
만 서버에 저장.
개인키는 절대 안나감
중요.
개인키는:
- 아이폰 Secure Enclave
- Android Keystore
- TPM
- 보안키(YubiKey)
같은 안전한 하드웨어 내부 보관.
기존 구조
USER
- email
- password_hash
Passkey 추가 후
USER
- email
- password_hash
PASSKEY_CREDENTIAL
- user_id
- credential_id
- public_key
- device_info
이런 느낌.
동작 과정
최초 생성시
STEP 1
현재 로그인 상태 확인.
(기존 비밀번호/MFA 기반)
STEP 2
브라우저가 WebAuthn API 호출.
navigator.credentials.create()
STEP 3
OS/기기가 키 생성.
PUBLIC KEY
PRIVATE KEY
STEP 4
공개키만 구글 서버 등록.
STEP 5
이후 로그인부터:
Face ID
지문
PIN
등으로 인증 가능.
로그인시
STEP 1
사이트:
"진짜 너 맞아?"
랜덤 challenge 생성.
STEP 2
브라우저가 사용자 인증 요청.
예:
- 지문
- Face ID
- PIN
STEP 3
기기가 challenge를 개인키로 서명.
SIGN(challenge)
STEP 4
서버는 공개키로 검증.
아 진짜 개인키 가진 사용자네
판단.
왜 안전한가
핵심 3개.
1. 비밀번호 없음
서버가 비밀번호 저장 안함.
2. 개인키 유출 어려움
기기 밖으로 안나감.
3. 피싱 방어
엄청 중요.
FIDO/WebAuthn은:
현재 접속 도메인(origin)
을 같이 검증함.
즉:
fake-google.com
에서는
google.com 용 개인키 사용 불가
이게 기존 OTP보다 강한 이유
OTP는 사용자가 속아서 입력 가능.
하지만 WebAuthn은:
도메인 자체 검증
해서 피싱에 매우 강함.
Passkey가 뭐냐
사실상:
FIDO/WebAuthn 기반 로그인 정보
를 사용자 친화적으로 부르는 이름.
예:
- 아이폰 Face ID 로그인
- 크롬 패스키 로그인
- Windows Hello
전부 Passkey 계열.
실사용 예시
회원가입
"Passkey 생성하시겠습니까?"
누름.
이후 로그인
Face ID
만 하면 끝.
비밀번호 없음.
WebAuthn 구조
브라우저 API 형태.
회원가입(등록)
navigator.credentials.create()
로그인(인증)
navigator.credentials.get()
실무 구조
Browser
↓ WebAuthn API
OS / Security Hardware
↓
Private Key Sign
↓
Server verifies with Public Key
서버에는 뭐 저장하나
보통:
{
"credentialId": "...",
"publicKey": "...",
"signCount": ...
}
signCount 역할
재전송 공격 방지.
인증 횟수 증가값 검증.
생체정보는 서버가 안가짐
이것도 중요.
예:
- 지문
- 얼굴
이런 건:
기기 내부에서만 검증
됨.
서버는:
"인증 성공 여부"
만 받음.
그래서 Face ID가 안전한 이유
애플 서버가 네 얼굴 저장하는 게 아님.
기기 Secure Enclave 내부 처리.
실무에서 많이 쓰는 라이브러리
프론트
- 브라우저 WebAuthn API
백엔드
Java
Node.js
실무 적용 방식
요즘은 보통:
1. MFA 추가수단
ID/PW + Passkey
2. Passwordless
비밀번호 제거
방향.
SSO와 같이 사용
예:
Keycloak + WebAuthn
조합.
기업에서 중요해진 이유
특히:
- 피싱 공격
- OTP 탈취
- 세션 탈취
증가 때문.
그래서:
FIDO2
Passkey
Passwordless
가 차세대 인증 핵심 흐름 됨.
WebAuthn 지원 브라우저
거의 다 지원.
- Google Chrome
- Microsoft Edge
- Safari
- Firefox
핵심 정리
FIDO/WebAuthn은:
비밀번호 대신
기기 내부 개인키 + 공개키 암호 + 생체인증을 이용해
피싱과 비밀번호 탈취를 막는
차세대 인증 기술
이야.
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| 쿠키 보안 옵션 (0) | 2026.05.18 |
|---|---|
| 공개키/개인키 용례에 따른 목적과 용법 (0) | 2026.05.18 |
| Refresh Token 구조 (0) | 2026.05.18 |
| OAuth2는 왜 이렇게 복잡한가 (0) | 2026.05.18 |
| 구글 로그인 기반 회원가입 시 DB구조 (0) | 2026.05.18 |
댓글