패스키 시스템, 완벽 해부!
패스키(Passkey) 생성 및 로그인의 전반적인 과정을 시연하며, 웹사이트에서 패스키를 활용하는 방법을 소개함
브라우저와 운영체제 간의 상호 작용을 통해 패스키가 생성되는 과정을 설명하고, TPM(Trusted Platform Module)의 역할을 언급함
패스키를 이용한 로그인 시, 서버와 클라이언트 간의 데이터 교환 과정을 상세히 분석함
공개 키(Public Key)와 개인 키(Private Key)를 활용한 인증 방식의 보안성을 강조하며, 데이터베이스(Database)에 저장되는 정보들을 시각적으로 보여줌
패스키 생성 과정: 브라우저와 서버의 역할
발표자는 패스키 생성 과정을 설명하며, 브라우저(Browser)가 서버에 패스키 생성을 위한 인자를 요청하는 과정을 보여준다. 서버는 JSON(JavaScript Object Notation) 형식으로 필요한 정보를 브라우저에 반환하며, 여기에는 의존 당사자 ID(Relying Party ID), 사용자 이름, 그리고 챌린지(Challenge)가 포함된다. 이 챌린지는 재생 공격(Replay Attack)을 방지하는 데 중요한 역할을 한다.
패스키 생성: 운영체제 및 TPM의 역할
영상에서는 브라우저가 navigator.credentials.create 함수를 호출하여 패스키 생성을 시작한다고 설명한다. 이 과정에서 브라우저는 운영체제(Operating System) 또는 비밀번호 관리자(Password Manager)와 상호 작용하며, TPM(Trusted Platform Module)을 사용하여 패스키를 생성한다. TPM은 공개 키(Public Key)와 개인 키(Private Key) 쌍을 생성하고, 개인 키는 TPM 내부에 안전하게 저장된다.
패스키 인증 과정: 서버와 클라이언트의 상호 작용
발표자는 패스키를 사용한 로그인 과정을 설명하며, 클라이언트가 서버에 getArguments 요청을 보내는 것으로 시작한다고 설명한다. 서버는 챌린지(Challenge)와 함께 사용 가능한 패스키 목록을 반환하며, 클라이언트는 navigator.credentials.get 함수를 호출하여 운영체제에 서명을 요청한다. 이 서명된 데이터는 서버로 전송되어 검증되며, 서명(Signature)은 패스키의 유효성을 확인하는 데 사용된다.
패스키의 보안성: 공개 키와 개인 키
영상에서는 패스키 시스템의 보안성을 강조하며, 공개 키(Public Key)는 서버에 저장되고, 개인 키(Private Key)는 사용자의 장치에 안전하게 보관된다고 설명한다. 개인 키는 TPM과 같은 보안 요소에 의해 보호되므로, 무단 접근(Unauthorized Access)이 어렵다. 또한, 패스키는 사용자 인증(User Verification)을 요구하여 보안을 강화하며, 데이터베이스(Database)에 저장된 정보는 패스키의 고유 식별자(Credential ID)를 포함한다.