PassKey는 기존의 비밀번호를 대신하는 더 안전하고 간편한 인증방식을 제공하는 기술이다. 따라서 사용자는 비밀번호를 기억하지 않아도 되고 지문, 얼굴인식과 같은 생체 인식이나 기기 인증을 통해 안전하게 로그인을 할 수 있게 해준다. Apple, Google, Microsoft 와 같은 주요 기업들이 지원하며 구글로그인이나 애플로그인을 할 때 비밀번호 입력 화면 대신에 PassKey로 대신하는 경험을 이미 해봤을 것이다. 이 PassKey는 비밀번호의 복잡성과 노출 위험 보안 위험을 줄이기 위해 등장했다.
PassKey란 무엇인가?
간결하게 정의하면 PassKey는 사용자가 비밀번호를 입력하는 대신 지문, 얼굴인식과 같은 생체인식이나 기기의 PIN을 사용한다.
FIDO 표준을 기반으로 하며 이 표준은 공공 키 암호화 방식을 사용해 기기에서 키 한 쌍을 생성하고 서버에 암호화된 형태로 저장하기 때문에 보안에 좋다. 따라서 사용자가 직접 비밀번호를 기억해도 되지 않기 때문에 비밀번호를 입어버릴 걱정이 없고 해킹과 같은 보안 위험을 줄일 수 있다.
FIDO표준이란?
FIDO(Fast Identity Online)는 비밀번호 없는 안전한 인증을 목표로 하는 글로벌 인증 표준이다. FIDO는 비대칭 암호화 기술을 기반으로 사용자 인증을 제공하고 데이터 유출과 같은 보안 문제를 줄여주며 비밀번호를 입력하지 않아도 되기 때문에 사용이 편리하다. 주로 지문, 얼굴 인식과 같은 생체 인식 또는 기기보안(PIN, 패턴)을 통해 비밀번호를 대체하여 사용된다.
이를 가능하게 할 수 있는 핵심은 공개키-개인키 비대칭 암호화 방식을 사용하기 때문에 가능하다
비대칭 암호화란?
그렇다면 비대칭 암호화는 또 무엇일까?
비대칭 암호화(Asymmetric Encryption)는 서로 다른 두 개의 키를 한쌍으로 사용하는 암호화 방식이다. 이 두개의 키는 공개키 (Public Key)와 개인키(Private Key)로 구성되머 각각의 키는 PassKey에서 다음과 같은 역할을 가진다
- 공개키 : 누구나 볼 수 있고 서버에 저장된다. 데이터의 서명을 검증할 떄 사용된다.
- 개인키 : 사용자 기기에만 안전하게 저장된다. 데이터를 서명할때 사용된다.
비대칭 암호화에서 공개키와 개인키는 수학적 알고리즘을 통해 생성되는데 공개키는 개인키로부터 만들어져 두 키는 상호 작용하는 방식으로 암호화와 복호화를 처리할 수 있다. 이때 사용되는 알고리즘은 RSA와 ECC(타원 곡선 암호화)가 사용된다.
RSA는 두 개의 큰 소수를 사용해 수학적으로 연결된 공개키와 개인키를 생성하고, ECC는 타원 곡선의 수학적 성질을 이용해 개인키와 공개키를 생성해 더 작은 키 크기로도 강력한 보안을 제공한다.
PassKey에서 비대칭 암호화 동작 원리
PassKey에서 비대칭 암호화가 사용되는데 사용자가 PassKey를 등록하면 디바이스에서 공개키-개인키 한쌍을 생성한다. 개인키는 사용자의 디바이스 내에 안전하게 저장되며 공개키는 서버에 등록된다.
사용자가 로그인을 할 때 지문이나 얼굴인식을 통해 본인임을 증명하는데 이 확인이 이루어지면 디바이스는 개인키를 사용해 로그인 요청에 대한 암호화된 서명을 생성한다. 이 서명은 서버로 전송된다.
서버는 서버가 가지고 있는 공개키를 사용해 서명을 검증하는데 이 서명이 맞다면 사용자가 맞다고 판단하고 로그인을 승인하게 된다. 여기서 중요한 부분은 개인키가 서버로 전송되지 않기 때문에 항상 디바이스에만 존재하므로 외부에 노출되지 않아 보안이 굉장히 좋다는 것이다.
PassKey 동작 흐름
계정 생성 및 등록
- 사용자가 웹사이트에 새로운 계정을 생성시 PassKey를 사용해 등록한다.
- 사용자는 지문인식, 얼굴인식과 같은 생체인식방식이나 PIN, 패턴과 같은 디바이스 인증을 사용해 PassKey 등록을 완료하낟.
- 디바이스 사용자에 대한 공개키-개인키 한쌍을 생성한 후 공개키는 서버에 저장하고 개인키는 디바이스에 저장된다
로그인
- 사용자가 웹사이트에 로그인할 때 비밀번호 입력단계에서 대신 PassKey 인증으로 사용자 인증을 진행한다.
- 이 때 사용자 인증에는 지문, 얼굴인식, PIN 등 방식이 사용된다.
- 디바이스는 개인키를 사용해 로그인 요청에 대한 암호화된 서명을 생성하여 서버로 전송한다.
- 서버는 저장된 공개키로 서명을 검증하고 검증이 통과되면 로그인을 승인한다.
PassKey와 iCloud Keychain
PassKey에서 생성한 개인키가 사용자 디바이스에 저장된다면 Apple 기기인 맥북에서 생성하고 등록한 PassKey로 iPhone 에서 사용하려고 하면 다른기기에서 로그인과 같은 안내가 떠야하는데 맥북과 아이폰을 사용해본 사용자는 이 경험이 많이 없을 수도 있다. 분명 생성한 디바이스의 기기에 개인키가 저장된다고 하면 아이폰에서는 PassKey를 사용할때 다른 기기에서 로그인을 해야 할 것 같은데 말이다.
이 것은 iCloud Keychain 덕분에 가능한 기술이다. 즉 맥과 아이폰 유저는 PassKey가 기기간에 동기화가 되고 있다.
Apple 기기간에 PassKey 데이터를 안전하게 동기화할 수 있는 이유는 iCloud Keychain이 엔드투엔드 암호화를 지원하기 때문이다.
Apple 기기들은 PassKey를 생성한 후 이 정보를 iCloud Keychain에 저장한다. 즉 Apple 기기에서는 iCloud 가 On 되어 있어야 PassKey 생성이 가능하며 그중에서도 iCloud > Keychain이 활성화되어있어야만 한다.
iCloud Keychain은 Apple의 클라우드 기반 암호관리 시스템이다. 사용자가 저장한 암호나 신용카드 정보, 와이파이 네트워크 정보 그리고 PassKey 정보까지 안전하게 동기화가 되고 있다. 이때 엔드투엔드 암호화로 보호가 되고 있다. 즉 암호화된 상태로 iCloud에 저장된다.