날씨 정보를 불러오는 중...

패스키(Passkey) 완전 정리 - 비밀번호 없는 로그인은 어떻게 동작하고, 왜 더 안전할까

2026-09-27 19:47 · IT기술 · 조회 3
Passkey

패스키(Passkey) 완전 정리 - 비밀번호 없는 로그인은 어떻게 동작하고, 왜 더 안전할까

요즘 구글, 카카오, 네이버에 로그인하려고 하면 "패스키로 로그인" 버튼이 보이기 시작합니다. 누르면 비밀번호 대신 지문이나 얼굴 인식, 휴대폰 잠금 해제만으로 로그인이 끝나죠. 처음엔 "그냥 생체인증 로그인 아닌가?" 싶지만, 속을 들여다보면 비밀번호와는 완전히 다른 원리로 동작하고, 그 덕분에 피싱에 거의 속지 않는 로그인 방식입니다. 오늘은 패스키가 무엇이고, 어떻게 동작하며, 왜 안전한지, 그리고 실제로 쓰거나 서비스에 붙일 때 알아야 할 것들을 정리합니다.

비밀번호의 세 가지 근본 문제

pw 재사용 - 사람은 수십 개의 서로 다른 비밀번호를 외울 수 없어서 결국 비슷한 비밀번호를 여러 사이트에 씁니다. 한 곳이 털리면 나머지도 줄줄이 뚫립니다(크리덴셜 스터핑).

leak 서버 유출 - 서비스 서버에는 비밀번호(해시)가 저장됩니다. 해시로 저장해도 서버가 털리면 약한 비밀번호부터 풀려 나갑니다.

fish 피싱 - 진짜와 똑같이 생긴 가짜 로그인 페이지에 비밀번호를 입력하면 그대로 넘어갑니다. 문자·OTP 2단계 인증도 가짜 페이지가 실시간으로 중계하면 뚫립니다.

패스키는 이 세 가지를 구조적으로 없애려고 만든 방식입니다. 사람이 기억해서 입력하는 "비밀"이 아예 없으니 재사용할 것도, 입력받아 훔칠 것도 없습니다.

패스키란 무엇인가

패스키는 FIDO 얼라이언스와 W3C가 만든 표준(FIDO2: 웹 표준 WebAuthn + 기기 간 통신 규격 CTAP)으로 만든 로그인 수단입니다. 핵심은 공개키 암호입니다.

  1. 개인키 - 내 기기(휴대폰의 보안 칩, PC의 TPM 등)나 종단간 암호화된 내 키체인 안에만 있습니다. 로그인하는 서비스의 서버로는 절대 보내지지 않습니다.
  2. 공개키 - 서비스 서버에 저장됩니다. 이름 그대로 공개돼도 괜찮은 값입니다.
  3. 생체인증·화면 잠금 - 지문·얼굴·PIN은 서버로 가는 게 아니라, 기기가 "주인이 맞다"는 걸 확인하고 개인키를 쓰게 해 주는 잠금 해제 역할입니다. 지문 정보는 기기 밖으로 나가지 않습니다.

동작 원리: 등록과 로그인

key 처음 한 번, 패스키 만들기(등록)

  1. 사이트가 "패스키를 만들까요?"라고 물으면, 브라우저가 기기에 새 키 쌍(개인키+공개키)을 만들라고 요청합니다.
  2. 지문이나 얼굴로 본인 확인을 하면 기기가 이 사이트 전용 키 쌍을 만듭니다.
  3. 공개키만 서버로 보내 저장합니다. 개인키는 기기(또는 암호화된 클라우드 키체인)에 남습니다.

lock 로그인할 때: 서명으로 증명하기

  1. 서버가 매번 새로운 무작위 값(챌린지)을 보냅니다.
  2. 기기가 본인 확인 후 개인키로 이 챌린지에 서명해서 돌려줍니다.
  3. 서버는 저장해 둔 공개키로 서명을 검증합니다. 맞으면 로그인 성공.

비밀번호처럼 "같은 값을 보내서 비교"하는 게 아니라, 개인키를 가지고 있다는 사실을 매번 새로 증명하는 방식입니다. 챌린지가 매번 바뀌니 중간에서 가로챈 응답을 다시 써먹을 수도 없습니다.

왜 피싱에 강할까

globe 주소가 키에 묶여 있다 - 패스키는 만들 때 사이트 주소(도메인)에 묶입니다. 가짜 사이트 kakao-login.xyz에서는 브라우저가 진짜 kakao.com의 패스키를 아예 꺼내 주지 않습니다. 사람은 비슷한 주소에 속지만, 브라우저는 속지 않습니다.

leak 서버가 털려도 쓸모가 없다 - 서버에 있는 건 공개키뿐이라, 유출돼도 그걸로 로그인할 수 없습니다.

pw 재사용 자체가 불가능 - 사이트마다 다른 키 쌍이 만들어지니, 한 곳의 사고가 다른 곳으로 번지지 않습니다.

패스키의 두 종류

cloud 동기화 패스키 - 아이클라우드 키체인, 구글 비밀번호 관리자, 삼성 패스 같은 곳에 종단간 암호화되어 저장되고, 같은 계정의 내 기기들에 자동으로 복사됩니다. 휴대폰을 바꿔도 그대로 따라오는, 일반 사용자에게 가장 흔한 형태입니다.

usb 기기 고정 패스키 - YubiKey 같은 보안 키 안에만 있고 밖으로 복사되지 않습니다. 관리자 계정이나 회사 업무용처럼 보안이 최우선인 곳에 씁니다.

qr 내 기기가 아닌 PC에서 로그인하려면?

PC 화면에 QR 코드가 뜨면 휴대폰 카메라로 찍고, 휴대폰에서 지문 인증을 하면 됩니다. 이때 두 기기가 블루투스로 가까이 있는지를 확인하기 때문에, 멀리 있는 공격자가 QR 화면만 보여 주고 대신 로그인하는 수법이 통하지 않습니다.

지금 얼마나 쓰이고 있나

  1. 전 세계 - FIDO 얼라이언스는 2026년 "월드 패스키 데이" 발표에서 사용 중인 패스키가 약 50억 개, 상위 100개 웹사이트의 절반 가까이가 패스키를 지원한다고 밝혔습니다.
  2. 구글 - 2023년 10월부터 개인 계정의 기본 로그인 옵션으로 패스키를 제공하고 있습니다.
  3. 마이크로소프트 - 2025년 5월부터 새 계정을 비밀번호 없이(패스키 우선) 쓰도록 바꿨습니다.
  4. 국내 - 카카오는 2024년 11월 카카오계정에 패스키를 도입해 카카오 로그인을 쓰는 외부 서비스까지 지원하고, 네이버 로그인 화면에도 패스키 로그인이 들어갔습니다. 삼성 스마트폰은 삼성 패스에 패스키를 저장할 수 있습니다.

직접 써 보기: 구글 계정에 패스키 만들기

  1. 휴대폰이나 PC에서 Google 계정 관리 → 보안으로 들어갑니다.
  2. 패스키 및 보안 키 → 패스키 만들기를 누릅니다.
  3. 지문·얼굴·화면 잠금으로 확인하면 끝. 다음 로그인부터는 "패스키 사용"을 고르면 됩니다.

카카오·네이버·애플 계정도 각 서비스의 계정 보안 설정에서 패스키를 등록할 수 있습니다. 한 번 만들어 두면 같은 계정의 다른 기기에서도 자동으로 쓸 수 있습니다(동기화 패스키 기준).

개발자 관점: 우리 서비스에 붙이려면

브라우저에는 이미 WebAuthn API가 들어 있어서, 프론트엔드는 두 함수만 알면 됩니다. 등록은 navigator.credentials.create(), 로그인은 navigator.credentials.get()입니다.

// 로그인(인증) 요청 - challenge는 서버가 매번 새로 만들어 내려준 값
const credential = await navigator.credentials.get({
  publicKey: {
    challenge: base64urlToBuffer(options.challenge),
    rpId: 'example.com',            // 패스키가 묶인 도메인
    userVerification: 'preferred',  // 지문·얼굴·PIN으로 본인 확인
  },
  mediation: 'conditional',         // 아이디 입력칸 자동완성에 패스키 제안
});
// credential.response 안의 서명(signature)을 서버로 보내 공개키로 검증

서명 검증, 챌린지 관리 같은 서버 쪽은 직접 구현하기보다 검증된 라이브러리(Node.js의 SimpleWebAuthn, 파이썬의 py_webauthn, 자바의 webauthn4j 등)를 쓰는 게 안전합니다. 실제로 붙일 때 챙길 것들은 이렇습니다.

  1. 챌린지는 매번 새로, 한 번만 - 서버에 잠깐 저장했다가 검증 후 바로 버립니다.
  2. rpId(도메인) 설계 - 여러 서브도메인에서 쓸 거면 상위 도메인으로 잡아야 합니다. 나중에 도메인을 바꾸면 기존 패스키를 못 씁니다.
  3. 한 사용자에 패스키 여러 개 - 휴대폰, 회사 PC, 보안 키처럼 여러 개를 등록할 수 있게 만듭니다.
  4. 처음엔 비밀번호와 병행 - 패스키를 "추가 로그인 수단"으로 먼저 제공하고, 익숙해지면 권장 방식으로 올리는 게 일반적인 순서입니다.

알아 둘 한계와 주의점

warn 기기를 전부 잃어버리면? - 동기화 패스키는 클라우드 계정만 살아 있으면 새 기기에서 복구됩니다. 반대로 그 클라우드 계정 자체의 복구 수단(복구 이메일, 복구 코드)은 꼭 챙겨 두세요. 보안 키는 분실 대비로 2개를 등록하는 게 정석입니다.

user 공용 PC - 공용 PC에는 패스키를 만들지 말고, 휴대폰 QR 로그인을 쓰는 게 맞습니다.

phone 다른 관리 앱으로 옮기기 - 초기에는 애플·구글·패스워드 매니저 사이에서 패스키를 옮기기 어려웠는데, 이를 위한 표준(자격 증명 교환 규격)이 만들어져 주요 플랫폼에 도입되는 중입니다.

check 계정 전체가 안전해지려면 - 패스키를 만들어도 비밀번호 로그인이 살아 있으면 공격자는 그쪽을 노립니다. 가능하면 비밀번호를 강하게 바꾸거나, 서비스가 지원한다면 비밀번호 로그인을 끄는 것까지 고려해 보세요.

마무리

패스키는 "더 편한 로그인"이면서 동시에 "더 안전한 로그인"이라는, 보안 기술에서 보기 드문 조합입니다. 비밀번호를 외울 필요가 없고, 가짜 사이트에 속아 입력할 비밀도 없으며, 서버가 털려도 쓸모 있는 정보가 남지 않습니다. 아직 모든 서비스가 지원하는 건 아니지만, 자주 쓰는 구글·카카오·네이버 계정부터 하나씩 패스키를 등록해 두는 것만으로도 가장 흔한 계정 탈취 수법 대부분을 막을 수 있습니다.

참고: FIDO Alliance - Passkeys, W3C WebAuthn, Google 패스키 개발자 문서, 카카오 패스키 도입 발표. 수치와 서비스별 지원 현황은 계속 바뀌니 최신 정보를 확인해 주세요.


댓글 0

로그인 후 댓글을 작성할 수 있습니다.