WebAuthn, 패스키, 그리고 비밀번호의 종말

· 기능

WebAuthn은 FIDO2 표준의 인증 계층이에요. 사용자가 기억하는 비밀에 의존하는 대신 비대칭 암호화를 사용해요. 등록 시 사용자의 인증자(하드웨어 키, 보안 엔클레이브, TPM 등)가 신뢰 당사자 도메인에 한정된 개인-공개 키 쌍을 생성해요. 브라우저는 공개 키와 증명 데이터를 서버로 보내고, 서버는 이를 자격 증명 레코드로 저장해요. 개인 키는 절대 사용자 기기를 벗어나지 않아요. 

인증 흐름

로그인 시 서버는 무작위 챌린지를 발급해요. 브라우저가 이 챌린지를 인증자에 전달하면 인증자는 사용자 존재(예: 버튼 누르기)를 확인하고, 선택적으로 사용자 확인(PIN, 생체 인식)을 강제한 다음 저장된 개인 키로 챌린지에 서명해요. 서버는 이전에 등록된 공개 키를 사용해 서명을 검증하고 인증자의 서명 카운터가 증가했는지 확인해 복제된 키를 방지해요. 

패스키

패스키는 WebAuthn 자격 증명을 크로스 디바이스 사용 가능성으로 확장해요. 운영 체제는 종단 간 암호화된 클라우드 저장소를 통해 자격 증명을 동기화해요. 패스키는 기기의 로컬 인증 방법(Touch ID, Face ID, Windows Hello, Android 생체 인식)으로 잠금 해제하고 브라우저와 기기 전체에서 사용할 수 있어요. 이는 하드웨어 기반 보안을 유지하면서 기억하거나 입력하는 번거로움을 없애줘요. 

비밀번호 대비 장점

  1. 피싱 저항성 – 인증자는 각 자격 증명을 특정 출처에 바인딩해요. 피싱 사이트가 다른 도메인의 챌린지에 서명하도록 속일 수 없어요.
  2. 공유 비밀 없음 – 비밀번호 데이터베이스 없이 자격 증명 유출 위험이 크게 줄어요. 서버의 자격 증명 저장소가 침해되더라도 공격자는 공개 키만 얻어요.
  3. 더 나은 UX – 사용자는 생체 인식 프롬프트를 확인하거나 보안 키를 터치하기만 하면 돼요. 크로스 디바이스 패스키는 비밀번호 재설정과 입력 오류를 없애요.
  4. 강력한 다단계 인증 – WebAuthn은 단일 동작으로 "소유한 것"(인증자)과 "본인 확인/아는 것"(생체 인식 또는 PIN)을 충족해 최소한의 노력으로 강력한 MFA를 달성해요.
  5. 재생 및 자격 증명 스터핑 저항성 – 챌린지는 일회용이며 개인 키는 서비스 간에 재사용할 수 없어 재생 공격과 자격 증명 스터핑을 방지해요.