← 목록으로

비밀번호 지옥 탈출! 패스키(Passkey)로 로그인 경험을 혁신하는 방법

2026. 7. 31.

비밀번호 지옥 탈출! 패스키(Passkey)로 로그인 경험을 혁신하는 방법

여러분, 아마 한 번쯤 보셨을 겁니다. 전통적인 비밀번호 입력란 대신 "Face ID로 로그인" 또는 "패스키 사용" 같은 메시지가 뜨는 작은 알림창 말이죠. 바로 그게 패스키입니다. 오해하지 마세요. 단순히 지문 뒤에 숨겨진 비밀번호가 아닙니다.

최고의 비밀번호는 당신이 한 번도 입력할 필요 없는 비밀번호다.

비밀번호의 끝나지 않는 문제들

비밀번호는 당신이 기억해야 하는 '비밀'이고, 웹사이트는 이를 저장해야 하는 '비밀'입니다(이상적으로는 해시화된 형태로). 문제는 이 시스템 전체가 두 가지 취약점에 전적으로 의존한다는 점입니다.

  • 사용자: 매번 새로운 비밀번호를 만드는 데 지쳐 여기저기 같은 비밀번호를 재사용하는 당신.
  • 웹사이트: 해킹당해 비밀번호 데이터베이스가 유출될 수 있는 웹사이트.

여기에 피싱까지 더해지면 상황은 더욱 심각해집니다. 실제와 완벽하게 똑같이 위장한 가짜 웹사이트가 당신도 모르는 사이에 비밀번호를 훔쳐 갈 수 있죠. 이건 단순히 사소한 문제가 아닙니다. Verizon DBIR 보고서가 매년 상기시켜 주듯이, 사회 공학, 피싱, 그리고 도난당한 인증 정보는 소프트웨어 취약점과 더불어 전 세계적으로 해킹의 주요 원인 중 하나로 꾸준히 꼽히고 있습니다. 제가 실무에서 여러 시스템을 관리하면서 겪었던 가장 큰 골칫거리 중 하나가 바로 이 비밀번호 관리였죠. 사용자들에게 아무리 주의를 줘도, 결국은 '사람'이 가장 큰 보안 구멍이 되곤 했습니다.

Verizon DBIR 보고서의 해킹 원인 발췌

<small>출처: 데이터 유출 조사 보고서, Verizon</small>

비밀번호 관리자와 2단계 인증(2FA)을 사용한다 하더라도, 근본적인 취약점은 여전히 남아 있습니다. 바로 당신이 실수로 공유할 수 있는 '비밀'이라는 점이죠.

패스키, 정확히 무엇일까요?

패스키는 비대칭 암호화를 기반으로 합니다. 서버에 연결하기 위해 키 페어를 생성해 본 경험이 있다면 SSH와 동일한 원리라고 이해하시면 빠를 겁니다. 저도 처음에는 '이게 정말 비밀번호를 대체할 수 있을까?' 싶었는데, 원리를 파고들수록 감탄하게 되더군요.

웹사이트용 패스키를 생성할 때 과정은 이렇습니다:

  1. 당신의 기기 (휴대폰, 컴퓨터, 보안 토큰)가 키 페어를 생성합니다: 개인 키(Private Key)와 공개 키(Public Key).
  2. 개인 키는 절대로 당신의 기기를 벗어나지 않습니다. Secure Enclave (iPhone/Mac), TPM (Windows) 또는 YubiKey 같은 USB 키의 칩처럼 보안 칩에 저장됩니다.
  3. 반면에 공개 키는 웹사이트로 전송되어 서버에 저장됩니다.

로그인할 때는, 사이트가 당신에게 챌린지(임의의 숫자)를 보냅니다. 당신의 기기는 개인 키로 이 챌린지에 서명하고, 사이트는 공개 키를 이용해 이 서명을 검증하죠. 만약 서명이 일치하면, 당신은 인증됩니다.

네트워크를 통해 전달되는 것은 '비밀'이 아니라 '서명'뿐입니다. W3C WebAuthn 스펙에 명확히 명시되어 있죠. 훔칠 것도 없고, 피싱으로 빼낼 것도 없습니다.

왜 더 안전할까요?

비밀번호패스키
공유된 비밀, 로그인 시마다 전송됨전송되는 것 없음, 오직 서명만 사용됨
여러 사이트에서 재사용 가능사이트별 고유, 특정 도메인에 연결
피싱에 취약피싱에 강력히 저항 (정확한 도메인에 연결)
서버 침해 시 유출 가능서버는 공개 키만 저장하며, 이는 공격자에게 무용지물
기억하거나 관리자를 통해 관리해야 함생체 인식 또는 로컬 코드로 잠금 해제

핵심은 이겁니다. 패스키는 생성된 도메인에 연결되어 있습니다. 만약 paypal.com 대신 paypa1.com 같은 가짜 사이트로 접속한다면, 당신의 기기는 패스키 사용을 아예 제안조차 하지 않을 겁니다. 이런 검증은 당신이 아닌 브라우저/운영체제가 수행합니다. 구글이 아주 잘 설명했듯이, 패스키는 비밀번호와 달리 생성된 사이트에 암호학적으로 바인딩되어 있어 가짜 사이트에서 가로채거나 재사용하는 것이 불가능합니다. 사용자들의 주의 여부와 관계없이, 설계 자체가 피싱 방어에 강한 것이죠. 실제로 제가 피싱 사이트 테스트를 해봤을 때, 패스키는 아예 동작조차 하지 않아서 얼마나 견고한지 직접 체감할 수 있었습니다.

내부 동작: WebAuthn과 FIDO2

기술적으로 패스키는 FIDO Alliance(구글, 애플, 마이크로소프트, 유비코 등이 회원사)가 추진하는 더 큰 개념인 FIDO2 표준의 일부인 WebAuthn (W3C) 표준을 기반으로 합니다. 브라우저가 자바스크립트를 통해 노출하는 API가 바로 이것이며, 이를 이용해 자격 증명을 생성하고 사용하게 됩니다.

사용자, 브라우저, 서버 간 WebAuthn 등록 흐름 다이어그램

<small>등록 흐름 다이어그램, W3C WebAuthn 스펙 기반</small>

클라이언트 측에서 패스키를 생성하는 코드는 대략 다음과 같습니다:

const credential = await navigator.credentials.create({
  publicKey: {
    challenge: new Uint8Array(32), // 서버에서 제공
    rp: { name: "My Super Site", id: "mysupersite.com" },
    user: {
      id: new Uint8Array(16),
      name: "thomas@example.com",
      displayName: "Thomas",
    },
    pubKeyCredParams: [{ alg: -7, type: "public-key" }], // ES256
    authenticatorSelection: { userVerification: "required" },
  },
});

그리고 기존 패스키로 로그인하는 코드는 이렇습니다:

const assertion = await navigator.credentials.get({
  publicKey: {
    challenge: new Uint8Array(32), // 서버에서 제공
    userVerification: "required",
  },
});

서버는 challenge를 생성하고, 브라우저는 모든 생체 인식 및 잠금 해제 과정을 처리한 뒤 검증을 위한 서명을 다시 보내줍니다. 서버 측에서는 Node.js의 @simplewebauthn/server 같은 라이브러리가 대부분의 검증 작업을 수행합니다. 이런 로우 레벨 API를 직접 다룰 일이 많지는 않지만, 웹 개발자로서 이 표준들이 어떻게 우리의 디지털 생활을 더 안전하게 만드는지 이해하는 건 매우 중요하다고 생각합니다.

휴대폰을 잃어버리면 어떻게 되나요?

이것은 모든 사람을 당황하게 하는 질문이며, 이 주제에 공감하신다면 제가 이미 휴대폰 도난 후 2FA의 번거로움에 대해 전체 글을 쓴 적이 있습니다. '단일 실패 지점'이라는 동일한 원리가 패스키에도 적용되죠. 저도 처음에는 이 부분이 가장 걱정스러웠습니다. 예전에 휴대폰 분실로 2FA 인증에 애먹었던 경험이 있어서 '패스키도 똑같으면 어쩌지?' 싶었죠. 하지만 2022년 이후, 애플, 구글, 마이크로소프트는 패스키 동기화 기능을 추가했습니다.

  • iOS/macOS: iCloud 키체인을 통해 동기화됩니다.
  • Android/Chrome: Google 계정을 통해 동기화되며, 구글 비밀번호 관리자를 사용하여 모든 데이터를 종단간 암호화합니다.
  • Windows: Windows Hello를 통해 가능하지만, 애플이나 구글보다 기기 간 동기화는 아직 제한적입니다.

따라서 휴대폰을 잃어버리더라도 새로운 기기에서 iCloud 또는 Google 계정에 다시 접근할 수 있다면, 당신의 패스키도 복원될 것입니다. 또한, 동기화는 되지 않지만 어떤 호환 기기에서든 동일하게 작동하는 물리 보안 키(YubiKey)를 백업으로 사용할 수도 있습니다. 이는 전통적인 2FA에 대한 조언과 똑같습니다. "모든 계란을 한 바구니에 담지 마라"는 거죠.

지금 바로 패스키를 사용하는 방법

점점 더 많은 서비스들이 패스키를 제공하고 있습니다. 구글, 애플, 깃허브, 마이크로소프트, 페이팔, 아마존, X 등 셀 수 없이 많죠. 구글은 한 발 더 나아가 개인 계정의 기본 로그인 방식을 패스키로 변경했습니다. 보통 계정의 보안 설정에서 "접근 키" 또는 "패스키" 항목을 찾을 수 있을 겁니다.

일반적인 사용 절차는 다음과 같습니다:

  1. 해당 서비스의 보안 설정으로 이동합니다.
  2. "접근 키 추가" 또는 "패스키 생성" 버튼을 클릭합니다.
  3. 브라우저 또는 운영체제가 Face ID, Touch ID, Windows Hello 또는 휴대폰 비밀번호를 사용하여 확인하도록 요청할 것입니다.
  4. 이것으로 끝입니다. 다음 로그인부터는 비밀번호가 필요 없습니다.

만약 운영체제의 키체인 외에 다른 곳에서 패스키를 관리하고 싶다면(특히 여러 플랫폼을 사용하는 경우 유용합니다), ProtonPass도 비밀번호와 같은 위치에 패스키를 생성하고 종단간 암호화하여 저장할 수 있습니다.

결론

질문답변
무엇을 기반으로 하는가?비대칭 암호화 (개인/공개 키 페어)
비밀번호가 네트워크를 통해 전송되는가?아니요, 절대 아닙니다
피싱에 강한가?네, 설계상 강합니다 (도메인에 연결)
기술 표준WebAuthn / FIDO2
기기 분실 시 대처iCloud/Google 동기화, 또는 물리 백업 키로 복구 가능

패스키는 단순히 "지문 뒤에 숨겨진 비밀번호"가 아닙니다. 이는 모델의 완전한 변화를 의미합니다. 기억할 것도 없고, 훔칠 것도 없습니다. 만약 어떤 서비스가 패스키 생성 옵션을 제공한다면, 망설이지 말고 사용해 보세요. 현재의 비밀번호보다 훨씬 더 안전하고 빠르니까요.


이 글의 ProtonPass 링크는 제휴 링크입니다. 이 링크를 통해 가입하시면 추가 비용 없이 제가 소정의 수수료를 받을 수 있습니다. 이는 제 블로그 운영에 필요한 호스팅 및 도메인 비용을 충당하는 데 도움이 됩니다. 지원해 주셔서 감사합니다!


원문: https://dev.to/thomasbnt/passkeys-explained-simply-52jk 수집일: 2026-07-31 01:26:14