이 페이지는 자동 번역되었습니다. 영어 원문은 여기.
isUserVerifyingPlatformAuthenticatorAvailable()이 Safari가 아닌 모든 브라우저에서 false를 반환하여 감지 로직 업데이트가 필요했던 것이 그 예입니다.패스키를 구현하지 마세요.
적어도 무슨 수를 써서라도 구현해서는 안 되며, 제대로 수행할 리소스가 없다면 구현하지 마세요.
엔터프라이즈 Passkey 백서. passkey 프로그램을 위한 실무 가이드, 도입 패턴, KPI.
네, 패스키는 지난 10년 동안 소비자 인증에 일어난 가장 좋은 일입니다. 네, 패스키는 피싱을 막아줍니다. 네, UX를 대폭 개선할 수 있습니다. 하지만 패스키를 잘못 구현하면 많은 피해를 입힐 수도 있습니다.
WebAuthn 서버를 구현하는 것은 그리 복잡하지 않습니다. 실제 과제는 그 주변의 모든 것입니다. 패스키를 대규모로 효율적으로 운영하려면 미리 계획해야 합니다. 패스키 롤아웃을 시작한 후에만 표면화되는 운영 현실인 모든 "2일 차(Day 2)" 문제에 대해 생각해야 합니다.
이 문서에서는 패스키 프로젝트를 지속적으로 실패하게 만드는 다섯 가지 2일 차 문제를 다룹니다. 이 모든 문제를 해결할 수 없다면 패스키를 출시할 준비가 되지 않은 것입니다. 해결할 수 있다면 암호가 제공할 수 있는 그 어떤 것보다 더 안전하고 사용하기 쉬운 인증을 구축하게 될 것입니다.
엔지니어링에서 "1일 차(Day 1)"는 제품을 제작하고 출시하는 때입니다. "2일 차(Day 2)"는 출시한 제품을 운영, 유지 보수 및 확장하는 시기입니다. 패스키의 경우 1일 차는 다음과 같이 간단할 수 있습니다.
대부분의 팀은 며칠 또는 몇 주 안에 기본 패스키 구현을 실행할 수 있습니다.
2일 차는 프로젝트가 실패하는 시점입니다. 실제 엣지 케이스를 가진 실제 기기의 실제 사용자가 패스키 시스템과 상호 작용하는 순간입니다. MacBook에서 완벽하게 작동하던 멋진 데모가 기업 프록시 뒤의 Chrome을 실행하는 Windows 노트북에서 제대로 작동하지 않는다는 것을 발견하는 때입니다. 지원 팀에 "더 이상 로그인할 수 없습니다"라는 티켓이 넘쳐나는 때입니다.
작동하는 패스키 데모와 프로덕션 등급 패스키 배포 사이의 간극은 엄청납니다. 우리는 이전에 기술적인 구현 함정과 패스키 프로젝트가 실패하는 전략적 이유를 다루었습니다. 이 문서에서는 운영 관점에서 라이브로 전환한 후 발생하는 상황에 특히 중점을 둡니다.
여기서 다룰 다섯 가지 2일 차 문제는 다음과 같습니다.
복구 및 대체를 제대로 설계하지 않으면 사용자를 대규모로 차단하거나 제거하려고 했던 피싱되기 쉬운 흐름을 조용히 다시 도입하게 됩니다.
iPhone에 패스키를 등록한 후 그 iPhone을 분실한 사용자를 생각해 보십시오. 일반적으로 이러한 복구 사례의 상당 부분은 이제 자격 증명 관리자(대부분 iPhone의 iCloud Keychain)에서 처리합니다. 사용자가 자신의 Apple 계정에 액세스할 수 있는 한, 새 기기에서 로그인할 수 있는 동기화된 패스키를 사용할 수 있습니다. 하지만 해당 클라우드 계정에 더 이상 액세스할 수 없다면 어떻게 될까요? 이때 일반적인 복구 경로가 필요합니다.
사용자가 로그인을 시도하는 기기에서 비공개 키를 여전히 사용할 수 있다고 가정하여 WebAuthn 로그인 세레모니를 시작한다고 가정해 보겠습니다. 이로 인해 사용자에게 "다른 기기에서 패스키로 로그인하십시오"라는 OS / 브라우저 모달이 표시됩니다. 기본적으로 사용자는 이제 자신의 계정에서 차단되었습니다. 패스키가 저장된 다른 기기가 없습니다. 사용자는 몹시 혼란스러워합니다. 이 상황을 수천 명의 사용자에게 곱하면 지원 위기가 발생합니다.
일반적인 반응은 이메일 기반 계정 재설정을 대체 수단으로 추가하는 것입니다. 하지만 이것은 패스키의 목적에 어긋납니다. 피싱 가능한 복구 채널을 방금 다시 도입한 것입니다. 사용자의 이메일을 손상시킬 수 있는 공격자는 이제 피싱 방지 패스키 구현을 완전히 우회할 수 있습니다.
저희가 생각하는 올바른 접근 방식은 계층화된 복구입니다.
일반적으로 비용/마찰 관점에서 정당화될 수 있는 계정 복구 계층을 결정해야 합니다. 예를 들어, 소매 / 전자 상거래 산업에서는 처음 두 계층만 제공하고 재정적 이유로 인한 피싱 위험을 감수할 수 있습니다. 보안이 더 중요한 다른 산업에서는 3단계와 4단계로 이동합니다.
각 계층은 복잡성을 더합니다. 사용 사례에 필요한 계층을 결정하고, 구축하고, 모든 기기 조합에서 테스트하고, 사용량을 모니터링해야 합니다. 이것은 초기 WebAuthn 통합보다 훨씬 더 많은 작업입니다.
대부분의 팀은 복구를 지나치게 단순화하거나(암호 또는 SMS OTP로 대체) 지나치게 복잡하게(예: 모든 복구에 하드웨어 보안 키 요구) 만듭니다. 올바른 균형은 위협 모델, 사용자 기반 및 규제 요구 사항에 따라 다릅니다. 잘못 이해하면 보안 태세를 약화시키거나 사용자가 흐름을 포기할 만큼 많은 마찰을 일으킬 수 있습니다.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.
Read the case study사용자는 깔끔한 Apple 전용 세계에 살지 않습니다. 기기를 전환하고, Windows와 iOS를 혼합하고, 다양한 브라우저를 사용하고, 기업에서 관리하는 설정에서 작업합니다. 계획하지 않았다면 패스키 흐름이 중단되는 지점이 바로 여기입니다.
패스키 생태계는 세 가지 주요 플랫폼(Apple, Google 및 Microsoft), 여러 브라우저(Chrome, Safari, Firefox 및 Edge), 수십 개의 패스키 제공업체 / 자격 증명 관리자(예: 1Password, Bitwarden, Dashlane 및 기타) 및 수많은 OS/브라우저/기기 조합에 걸쳐 있습니다. 각 조합은 다음과 같이 약간씩 다르게 작동할 수 있습니다.
사용자가 iPhone에서 패스키를 생성했지만 Windows 노트북에서 로그인하려는 경우 교차 기기 인증(일반적으로 QR 코드 및 블루투스를 통해)을 사용할 수 있습니다. 이 흐름은 작동하지만 취약합니다.
저희는 수천 가지 기기 조합에서 이러한 엣지 케이스를 직접 확인했습니다. 패스키를 자체적으로 구축하는 경우 모든 경우를 테스트하고 처리해야 합니다. 그럴 수 없다면 사용자는 지원 팀에서 설명할 수 없는 오류에 직면하게 될 것입니다.
동일한 기기에서도 브라우저마다 다르게 작동합니다. macOS의 Chrome은 macOS의 Safari와 다른 패스키 모달을 표시합니다. Firefox에는 자체 동작이 있습니다. 올바른 흐름을 올바른 사용자에게 전달하려면 클라이언트 힌트와 사용자 에이전트 감지가 중요하지만 모든 조합에서 이를 올바르게 구문 분석하는 것은 결코 끝나지 않는 유지 관리 부담입니다.
패스키 테스트 및 QA는 웹 앱의 경우 이미 과제입니다(문제 5: 플랫폼 변경으로 인해 패스키가 조용히 망가짐에서 자세히 다룹니다). 그러나 제품에 네이티브 iOS 및 Android 앱도 있는 경우 아키텍처 결정 및 웹 전용 팀이 결코 직면하지 않는 플랫폼별 동작으로 인해 복잡성이 배가됩니다.
첫 번째 결정은 패스키를 네이티브로 구현할지 WebView를 통해 구현할지 여부입니다. 각 접근 방식에는 장단점이 있습니다.
| 측면 | 네이티브 구현 | WebView 구현 |
|---|---|---|
| UX 품질 | 동급 최고, 플랫폼 네이티브 느낌 | WebView 유형에 따라 다름 |
| 유지 관리 | iOS 및 Android를 위한 별도 코드베이스 | 공유된 웹 로직 |
| 플랫폼 요구 사항 | Apple/Google SDK 변경 사항을 따라야 함 | WebView 패스키 지원 문제를 처리해야 함 |
| 복잡성 | 높음(플랫폼별 API) | 중간(단, WebView 유형이 중요함) |
iOS에서만 WKWebView, SFSafariViewController, SFAuthenticationSession 및 ASWebAuthenticationSession 중에서 선택할 수 있으며 각 옵션마다 패스키 지원 특성이 다릅니다. Android에서는 Chrome Custom Tabs가 표준 WebView와 다르게 작동합니다. 웹 전용 팀은 내릴 필요가 없는 결정이며 각 선택 사항은 자체 유지 관리 표면을 만듭니다.
아키텍처 결정 외에도 iOS와 Android는 OS 수준에서 패스키를 다르게 처리합니다.
NotAllowedError로 표면화되지만 iOS에서는 SimpleAuthenticationServices.AuthorizationError로, Android의 Credential Manager에서는 User cancelled the operation으로 표면화됩니다. 완전한 크로스 플랫폼 오류 매핑은 프로덕션의 WebAuthn 오류를 참조하십시오.웹 앱과 네이티브 앱을 모두 운영하는 경우 QA 노력은 두 배가 아니라 세 배가 됩니다. 웹, iOS 및 Android는 각각 독립적인 엔드투엔드 테스트 및 모니터링이 필요한 별도의 패스키 환경으로 작동합니다. 그리고 수정 사항을 즉시 배포할 수 있는 웹과 달리, 네이티브 앱 수정 사항은 앱 스토어 심사 주기에 의해 차단됩니다.
"패스키 지원됨"이 "패스키 사용됨"을 의미하지는 않습니다. 롤아웃 전략과 측정 체계가 없다면 채택률은 실망스러울 것이며 내부적으로 프로젝트는 실패로 낙인찍힐 것입니다.
패스키 구현이 실패하는 이유에 대한 문서에서 이를 광범위하게 다루었습니다. 사용자가 패스키로 전환하지 않으면 프로젝트는 이미 실패한 것입니다. 암호는 여전히 지배적이고, SMS OTP 비용은 높게 유지되며, 피싱 위험이 지속되고, 조직은 상당한 엔지니어링 투자에 대한 수익을 얻지 못합니다.
패스키 채택에 대한 비즈니스 사례는 강력하지만 실제로 채택이 이루어지는 경우에만 해당됩니다. 우리는 롤아웃 및 채택 전략에 대해 아무도 생각하지 않았기 때문에 기술 구현이 훌륭하게 이루어졌음에도 불구하고 채택률이 5% 미만인 상태로 패스키를 출시하는 기업을 보았습니다.
패스키 채택을 주도하는 것은 다음과 같은 요소가 필요한 제품 과제입니다.
대규모 패스키 배포에 대한 경험을 바탕으로, 기업이 목표로 해야 할 사항은 다음과 같습니다.
| 지표 | 취약함 | 허용 가능 | 강력함 |
|---|---|---|---|
| 패스키 생성률 (자격을 갖춘 사용자 중) | <10% | 10-60% | >60% |
| 패스키 로그인 비율 (모든 로그인 중) | <5% | 5-40% | >40% |
3개월 후 채택 수치가 "취약함" 열에 해당한다면 프로젝트에 문제가 있는 것입니다. 이를 측정할 분석 도구가 없으면 전혀 알 수 없습니다.
OS 및 브라우저 업데이트는 프롬프트, 자동 완성 동작 및 대체 흐름을 변경합니다. 지속적인 모니터링을 하지 않으면 예고 없이 회귀 버그와 지원 티켓을 받게 될 것입니다.
최근 우리는 프로덕션 환경에서 발생한 WebAuthn 오류에 대한 포괄적인 개요를 게시했습니다.
서버가 유효성을 검사하는 문자열에 불과한 암호와 달리 패스키는 운영 체제, 브라우저 및 자격 증명 관리자와의 심층적인 통합에 의존합니다. Apple이 새로운 iOS 버전을 출시하면 패스키 생성 프롬프트가 다르게 보일 수 있습니다. Chrome이 자동 완성 로직을 업데이트하면 로그인 흐름이 끊어질 수 있습니다. 암호 관리자가 새 버전을 릴리스하면 사용자가 예상하지 못한 방식으로 패스키 요청을 가로채기 시작할 수 있습니다.
최근의 한 예로, isUserVerifyingPlatformAuthenticatorAvailable()이 Safari가 아닌 모든 브라우저(Chrome, Edge, Firefox)에서 false를 반환하는 iOS 26.2 버그가 있었는데, 이 경우 해결 방법으로 getClientCapabilities()를 사용하는 플랫폼 인식 감지 로직이 필요했습니다.
잠재적인 모든 버그를 인식하고 채택을 추적하려면 인증 가시성(observability) 스택을 설정해야 합니다. 최소한 다음 사항을 갖추는 것이 좋습니다.
NotAllowedError로 표면화됨)와 예상치 못한 오류(동시성 버그로 인한 AbortError 급증 또는 Android 업데이트 후 새로운 Credential Manager 패스키 오류)를 구분합니다.이것은 대부분의 팀이 인시던트가 발생한 후에야 구축하는 인증 분석 인프라입니다. 그때쯤이면 사용자 신뢰와 내부 프로젝트 신뢰도에 이미 피해를 입은 후입니다.
패스키 구현의 진정한 비용은 초기 구축 비용이 아닙니다. 지속적인 유지 관리 비용입니다.
최신 뉴스를 위해 Passkeys Substack을 구독하세요.
이러한 2일 차 문제를 고려할 때 패스키를 출시해야 할 때와 하지 말아야 할 때에 대한 솔직한 평가는 다음과 같습니다.
적절한 계획 없이 규제상의 이유로 무리하게 진행하면 비용이 크게 상승할 수 있습니다. 형편없이 구현된 패스키 시스템은 패스키 시스템이 아예 없는 것보다 나쁩니다. 사용자 신뢰를 떨어뜨리고 지원 오버헤드를 발생시키며 내부 이해 관계자에게 프로젝트를 중단할 이유를 제공합니다.
이 문서에 설명된 2일 차 문제는 많은 기업이 패스키 인프라를 직접 구축하는 대신 구매를 선택하는 정확한 이유입니다. WebAuthn 서버 구축은 쉬운 부분입니다. 적절한 복구, 모니터링 및 채택 분석을 통해 수천 가지 기기 조합에서 프로덕션 등급 패스키 시스템을 운영하는 것이 데모와 실제 배포를 구분하는 요소입니다.
Corbado는 구체적으로 2일 차 문제가 어렵기 때문에 존재합니다. 당사 플랫폼이 운영의 복잡성을 처리해 주므로 귀하가 직접 구축하고 유지 관리할 필요가 없습니다.
Corbado는 적응형 보안 수준을 갖춘 즉시 사용 가능한 복구 흐름을 제공합니다. 동기화된 패스키 전략에서부터 교차 기기 인증 및 자동화된 신원 확인에 이르기까지 복구 논리가 내장되어 있으며 지속적으로 업데이트됩니다.
당사의 프런트엔드 SDK는 수천 개의 OS, 브라우저 및 패스키 제공업체 조합에서 사전 테스트되었습니다. 기기 감지, 조건부 UI 처리 및 대체 라우팅이 자동으로 수행됩니다. 새 브라우저 버전에서 문제가 발생하면 사용자가 알아채기 전에 SDK에서 이를 수정합니다.
Corbado는 플랫폼 차이를 추상화하는 SDK를 사용하여 네이티브 및 WebView 패스키 구현을 모두 지원합니다. 사용자는 앱의 UX에 집중하고 당사는 iOS 및 Android 전반에 걸친 패스키 배관을 처리합니다.
당사의 분석 대시보드는 패스키 생성률, 로그인 성공률, 대체율 및 기기 수준 분류 등 중요한 모든 지표를 추적합니다. 원시 데이터뿐만 아니라 채택을 주도할 실행 가능한 통찰력을 얻을 수 있습니다.
Corbado는 패스키에 영향을 미치는 OS 및 브라우저 변경 사항을 지속적으로 모니터링합니다. SDK가 사전에 업데이트됩니다. 플랫폼 환경이 기반에서 바뀌더라도 패스키 배포는 안정적으로 유지됩니다.
패스키는 인증의 표준(gold standard)입니다. 의심의 여지가 없습니다. 그러나 "패스키 지원됨"에서 "대규모로 안정적으로 작동하는 패스키"로 가는 길에는 대부분의 팀이 과소평가하는 2일 차 문제들이 깔려 있습니다.
우리가 다룬 다섯 가지 문제(복구, 교차 기기 엣지 케이스, 네이티브 앱의 복잡성, 채택 및 플랫폼 변경)는 드문 일이 아닙니다. 프로덕션 패스키 배포의 핵심 운영 과제입니다. 무시한다고 사라지는 것이 아닙니다. 단지 사용자가 가장 먼저 발견하게 될 뿐입니다.
솔직한 권장 사항: 패스키를 제대로 수행할 노하우와 리소스가 없다면 출시하지 마세요. 제품, 엔지니어링, 보안 및 분석과 같은 역량에 투자하거나 이러한 문제를 이미 해결한 파트너와 협력하십시오. 최악의 결과는 2일 차를 아무도 계획하지 않았기 때문에 롤백되는 덜 익은 패스키 배포입니다.
Corbado는 대규모로 consumer authentication을 운영하는 CIAM 팀을 위한 Passkey Intelligence Platform입니다. IDP 로그와 일반 analytics 도구가 보여주지 못하는 것을 볼 수 있게 해드립니다: 어떤 디바이스, OS 버전, 브라우저, credential manager가 passkey를 지원하는지, 왜 등록이 로그인으로 이어지지 않는지, WebAuthn 플로우가 어디서 실패하는지, OS나 브라우저 업데이트가 언제 조용히 로그인을 망가뜨리는지 — Okta, Auth0, Ping, Cognito 또는 자체 IDP를 교체하지 않고도 전부 파악할 수 있습니다. 두 가지 제품: Corbado Observe는 passkey 및 다른 모든 로그인 방식에 대한 observability를 더합니다. Corbado Connect는 analytics가 내장된 managed passkey를 제공합니다 (기존 IDP와 함께). VicRoads는 Corbado로 500만+ 사용자에게 passkey를 운영하고 있습니다 (passkey 활성화율 +80%). Passkey 전문가와 상담하기 →
다섯 가지 운영 문제는 안전하지 않은 복구 및 대체 흐름, 교차 기기 생태계의 엣지 케이스, 네이티브 앱의 복잡성, 낮은 사용자 채택률, 그리고 OS 및 브라우저 업데이트로 인한 조용한 회귀 버그입니다. 대부분의 팀은 초기 WebAuthn 통합에 집중하고 이러한 출시 후 과제를 과소평가하며, 이것이 많은 패스키 프로젝트가 롤백되거나 내부적으로 조용히 폐기되는 이유입니다.
사용자는 QR 코드와 블루투스 교차 기기 흐름을 통해 인증할 수 있지만, 이는 두 기기 모두에서 블루투스가 활성화되어 있어야 하며 기업 MDM 정책 및 방화벽에 의해 차단될 수 있습니다. 브라우저 간에 UX가 크게 다르며 사용자는 종종 왜 QR 코드를 스캔해야 하는지 이해하지 못하기 때문에, 기기 인식 대체 라우팅과 명확한 커뮤니케이션이 엔터프라이즈 배포에 중요합니다.
강력한 채택이란 자격이 있는 사용자의 60% 이상이 패스키를 생성하고 모든 로그인 중 패스키 로그인 비율이 40% 이상인 것을 의미합니다. 3개월 후 패스키 생성률이 10% 미만이고 로그인 비율이 5% 미만인 경우 출시가 실패하고 있음을 나타냅니다. 이를 측정하려면 기기 및 OS 조합별로 세분화된 생성률, 로그인 성공률, 대체율 및 중도 포기율을 추적하는 전용 인프라가 필요합니다.
네이티브 구현은 동급 최고의 UX를 제공하지만 플랫폼별 API 처리 및 독립적인 QA 파이프라인을 갖춘 별도의 iOS 및 Android 코드베이스가 필요합니다. WebView 접근 방식은 웹 로직을 공유하지만 WebView 유형에 따라 패스키 지원의 불일치를 초래합니다. iOS에서만 WKWebView, SFSafariViewController 및 ASWebAuthenticationSession 중 무엇을 선택하느냐에 따라 패스키 지원 특성이 다르며, 아키텍처를 결정하기 전에 이를 평가해야 합니다.
이메일 기반 재설정과 같은 단순화된 복구는 피싱 가능한 채널을 다시 도입하는 반면, 필수 하드웨어 보안 키와 같은 지나치게 엄격한 복구는 중도 포기를 유발합니다. 권장되는 접근 방식은 계층화된 방식입니다. 동기화된 패스키를 주요 전략으로, 교차 기기 QR 코드 인증을 두 번째 계층으로, 라이브니스 체크가 포함된 자동 신원 확인을 세 번째 계층으로, 그리고 디지털 검증 가능 자격 증명을 네 번째 계층으로 사용합니다. 구현할 계층은 위협 모델, 사용자 기반 및 규제 요구 사항에 따라 다릅니다.
관련 글
목차