패스키(Passkeys)의 기술 기초인 WebAuthn/CTAP 표준과 공개키 암호화 원리를 설명하고, 등록·인증 두 가지 흐름을 API 수준에서 구체적으로 다룬다. FIDO Alliance와 W3C가 공동 정의한 표준 위에서 패스키가 어떻게 피싱·자격증명 스터핑을 근본적으로 차단하는지 분석한다.
핵심 포인트- 패스키는 W3C WebAuthn + FIDO Alliance CTAP 표준 기반 공개키 인증, Apple·Google 패스워드 매니저와 동기화
- 등록 시 navigator.credentials.create, 인증 시 navigator.credentials.get API 사용
- 사이트별 고유 키 쌍 생성 → 자격증명 스터핑 원천 차단
- 개인키는 기기 하드웨어 보안 모듈에만 저장, 서버엔 공개키만 전달 → 서버 해킹 시 피해 없음
- 비밀번호 대비 로그인 속도 최대 40% 빠르고 피싱 저항성 내장
상세 정리- 표준 기반: W3C(WebAuthn)와 FIDO Alliance(CTAP)가 공동 정의. Apple iCloud Keychain·Google Password Manager가 크로스 디바이스 동기화를 지원해 기기 분실 시에도 복구 가능.
- 공개키 구조: 등록 시 기기에서 공개키/개인키 쌍 생성. 공개키는 서버에 저장, 개인키는 기기 하드웨어 보안 모듈 내부에서 외부로 탈출 불가.
- 등록 흐름: 서버가 챌린지(난수) 발급 → navigator.credentials.create 호출 → 생체인식/PIN 으로 인증기 잠금 해제 → 공개키 자격증명 생성 → 서버로 전송.
- 인증 흐름: 서버가 새 챌린지 발급 → navigator.credentials.get 으로 패스키 조회 → 개인키로 챌린지에 서명(어설션 생성) → 서버가 공개키로 서명 검증.
- 피싱 저항: 패스키 자격증명이 등록 도메인에 바인딩 — 위조 사이트에서 navigator.credentials.get 요청 시 도메인 불일치로 인증 거부됨.
- 재사용 불가: 사이트마다 별도 키 쌍 생성 — 한 사이트 공개키 유출이 다른 사이트 계정에 영향 없음.
- 크로스 디바이스: iCloud Keychain·Google Password Manager 동기화로 기기 교체·분실 시에도 계정 복구 가능. 별도 인증 앱 불필요.
- 사용성: 생체인식 또는 PIN 으로 비밀번호 입력보다 최대 40% 빠른 로그인. 사이트마다 비밀번호 기억 불필요.
- 현재 제한: 패스키 미지원 구형 기기 사용자 위해 이메일 매직링크·TOTP 대체 채널 병행 필요. 구현 복잡성과 문서 부족이 현재 주요 채택 장벽으로 지목.
왜 읽나패스키 구현을 처음 검토하는 웹 개발자가 WebAuthn API 흐름과 보안 원리를 개념부터 API 레벨까지 빠르게 파악할 수 있다.