Passkey (WebAuthn / FIDO2) 는 업계가 "이제 비밀번호는 필요 없다" 에 가장 가까이 간 결과물이야. phishing 에 강하고, 디바이스에 묶이거나 sync 되고, 요즘 OS 와 브라우저에선 다 돌아가.
Passkey 가 실제로 뭔지
디바이스의 secure enclave (TouchID, Windows Hello, Android keystore) 또는 비밀번호 매니저 (1Password, iCloud Keychain, Google) 에 저장된 keypair. 서버는 public key 만 저장. 로그인은 디바이스가 challenge 에 서명해서 private key 를 갖고 있음을 증명하는 거야. phishing 으로 빼낼 공유 시크릿도, 흘릴 비밀번호도 없어.
다중 디바이스, 다중 사용자한테 PIN 을 이기는 이유
| 속성 | PIN (Track 5) | Passkey |
|---|---|---|
| Phishing 가능 | 응 (가짜 페이지에 타이핑) | 아니 (브라우저가 origin 을 확인함) |
| Brute-forceable | 4자리는 1만 조합 | 암호학적 키, 불가능 |
| Per-user identity | 아니 (PIN 공유 모델) | 됨 (디바이스마다 자기 credential 을 가짐) |
| 디바이스 간 sync | 수동. 직접 공유해야 함 | iCloud / Google / 1Password 통해 native |
| 셋업 복잡도 | 5분 | 20–60분 (서버 사이드 WebAuthn) |
| 복구 | Track 6 의 복구 토큰 | 계정 복구 flow + backup passkey |
정직한 trade-off
- 복구가 더 어려워. passkey 를 가진 디바이스를 전부 잃으면 다시 들어가기가 훨씬 힘들어. 최소 두 개는 꼭 등록해둬. 노트북과 폰, 아니면 예비용 하드웨어 키.
- 서버 쪽 복잡도는 진짜야. WebAuthn ceremony 엔 까다로운 구석이 있어 (user verification flag, AAGUID, attestation). 라이브러리를 써. spec 보고 직접 짜지 마.
- 오래된 브라우저나 회사 정책 제한 은 아직 남아 있어. 당분간은 fallback (PIN, 이메일 magic link) 을 같이 둬.