WebAuthn(Web Authentication API)은 FIDO2의 핵심 구성 요소로, W3C에서 표준화한 웹 기반 인증 API입니다.
🔑 WebAuthn 개요
- 정식 명칭: Web Authentication API
- 표준화: W3C + FIDO Alliance (2018년 공개)
- 역할: 웹 브라우저와 웹 애플리케이션이 공개키 기반 인증을 쉽게 구현할 수 있도록 지원.
- 기능: 비밀번호 없이(또는 비밀번호와 함께) 로그인 가능.
⚙️ 동작 방식
- 등록(Registration)
- 사용자가 서비스에 로그인할 때, 기기(스마트폰, 보안키, OS 내장 인증기 등)가 공개키/개인키 쌍 생성.
- 서비스 서버에는 공개키만 저장.
- 인증(Authentication)
- 로그인 시 서버가 난수(Challenge)를 발급.
- 사용자는 지문, 얼굴인식, PIN 등으로 개인키 사용 → Challenge에 전자서명 생성.
- 서버는 공개키로 검증 → 사용자가 진짜임을 확인.
🌍 지원 환경
- 브라우저: 크롬, 엣지, 사파리, 파이어폭스 (대부분 지원)
- 플랫폼 인증기: Windows Hello, Android 생체인식, iOS Face ID/Touch ID
- 외부 인증기: YubiKey 같은 USB/NFC/Bluetooth 보안키
✅ 장점
- 서버에 비밀번호 저장 불필요 → 데이터 유출 피해 최소화
- 피싱 방지 (서버 도메인과 연동된 키로만 인증 가능)
- 멀티 디바이스 확장 (Passkey 개념으로 기기 간 동기화)
📌 요약:
WebAuthn은 웹에서 동작하는 공개키 기반 인증 표준이며, FIDO2의 핵심.
→ “아이디+비밀번호” 대신 지문·얼굴인식·보안키로 바로 로그인할 수 있게 만드는 기술입니다.
🌐 브라우저별 WebAuthn 지원 요약
브라우저최소 지원 버전 / 시점주요 특징 / 제한사항
| Chrome | Desktop: v67+ webauthn-doc.spomky-labs.com+2위키백과+2 모바일(Android): 최신 버전에서 폭넓게 지원 webauthn.wtf+2webauthn.me+2 |
플랫폼 인증기(biometrics) + 외부 보안키 모두 사용 가능. 대부분 기능이 잘 구현됨. |
| Firefox | Desktop: v60+ webauthn-doc.spomky-labs.com+2위키백과+2 Android: v68+부터 일부 지원됨 webauthn-doc.spomky-labs.com+2窓の杜+2 |
외부 키 지원 양호. 플랫폼 인증기의 생체 인증 통합 등은 OS / 버전별로 제약 있음. |
| Microsoft Edge (Chromium 기반) | Desktop: Chromium 기반 버전부터 완전 지원 (Edge 79+ 등) webauthn-doc.spomky-labs.com+2위키백과+2 | Windows Hello 등의 플랫폼 인증기 + 외부 보안키 기능 사용 가능. 이전 비-Chromium Edge는 제한적 지원. |
| Safari | macOS: Safari 13+ webauthn-doc.spomky-labs.com+2AppleInsider+2 iOS: iOS Safari 13.3+ (이후 버전) webauthn-doc.spomky-labs.com+2더 버지+2 |
Touch ID / Face ID 등의 생체 인증 및 외부 보안키 지원. 다만, 일부 구 버전에서는 제한적이며 사용자 제스처(user gesture) 요구사항이나 제약이 있음. simplewebauthn.dev+2webauthn-doc.spomky-labs.com+2 |
| Opera | Opera 54+ 데스크탑 버전에서 지원됨 webauthn-doc.spomky-labs.com+1 | Chromium 기반이므로 Chrome과 유사한 지원. 외부 키·플랫폼 인증 모두 가능. |
| Internet Explorer | 지원 안됨 / 폐지됨 webauthn-doc.spomky-labs.com+2okta.github.io+2 | WebAuthn 기술 사양상 미지원. 기존 보안 취약점 및 기능 부족 문제로 사용 지양됨. |
⚠️ 주의사항 / 기능별 제약
- 플랫폼 인증기 vs 외부 인증기:
외부 보안키(USB/NFC/Bluetooth 등)는 거의 모든 지원 브라우저에서 작동하지만, 플랫폼에 내장된 인증기(지문·얼굴·PIN 등)의 지원은 OS와 브라우저 버전에 따라 다름. - iOS / Safari의 제한:
iOS의 경우 WebAuthn이 Safari 및 일부 브라우저에서 지원되나, 생체 인증(예: Face ID, Touch ID) 또는 외부 키 사용에 대한 제약이 존재하곤 함. 예를 들어 iOS 13.3 이전 버전의 Safari는 외부 보안 키만 지원하거나 완전한 생체 인증 기능이 없었음. webauthn.me+2더 버지+2 - 버전별 버그 / 구현 차이:
브라우저마다 WebAuthn API의 navigator.credentials.create() / get() 호출 시 사용자 제스처 필요성, 인증기 타입 지원, 응답 검증 방식 등에서 작은 차이가 있음. 예: Safari의 사용자 제스처 감지 관련 문제. simplewebauthn.dev+1 - Passkey / Level-3 기능:
WebAuthn의 최신 기능들(예: Passkeys, getClientCapabilities(), conditional mediation 등)은 모든 브라우저에 완전히 구현된 것은 아니고 일부 브라우저만 지원 시작함. passlock.dev+1
'소프트웨어 > 상식' 카테고리의 다른 글
| 패스키(Passkey) (1) | 2025.09.17 |
|---|---|
| OTP(One-Time Password) 원리 (0) | 2025.09.17 |
| FIDO vs MFA vs TOTP (0) | 2025.09.17 |
| FIDO(Fast IDentity Online) (0) | 2025.09.17 |
| TOTP(Time-based One-Time Password) (0) | 2025.09.17 |