Google Pay와 Mastercard는 소비자 기기 카드 소지자 인증 방식(CDCVM)을 사용하여 인도에서 생체 인식 기반 결제를 출시하기 시작했습니다. 쇼핑객은 지문이나 얼굴 스캔으로 구매를 확인하며, 생체 데이터는 휴대폰 내부에 안전하게 보관됩니다.

CDCVM이 지금 중요한 이유

CDCVM은 "본인 확인" 절차를 기기 내부로 옮깁니다. 암호화 서명이 된 일회용 결제 토큰만이 휴대폰을 떠나므로, 생체 데이터가 인터넷을 통해 전송되는 일은 절대 없습니다.

내부 동작 원리

  1. 특징 추출(Feature extraction) – 센서(지문 인식기 또는 카메라)가 원시 데이터를 Secure Enclave 또는 신뢰 실행 환경(TEE)으로 전달합니다. 이러한 격리된 영역은 운영 체제에 데이터를 노출하지 않고 입력을 처리합니다.
  2. 로컬 비교(Local comparison) – 기기는 사용자의 생체 정보를 암호화된 템플릿 형태로 저장합니다. Secure Enclave는 실시간 캡처 데이터와 이 템플릿을 비교하며, 원시 이미지나 특징 벡터를 외부로 절대 전송하지 않습니다.
  3. 하드웨어 어테스테이션(Hardware attestation) – 일치 확인이 성공하면, 엔클레이브는 하드웨어를 벗어나지 않는 개인 키로 트랜잭션에 서명합니다. 이 어테스테이션은 생체 정보 자체를 노출하지 않으면서, 검증된 생체 인식이 사용되었음을 증명합니다.
  4. 토큰 생성(Token generation) – 서명된 어테스테이션은 토큰 서비스와 결합하여 일회용 토큰을 생성합니다. 생체 정보가 아닌 토큰이 가맹점으로 전달된 후, 정산을 위해 발급 은행으로 전송됩니다.

가맹점과 은행은 서명된 토큰만 볼 수 있습니다. 모든 생체 데이터는 기기의 보호된 메모리에 남아 있습니다.

개발자가 피해야 할 함정

  • 생체 인식 벡터 전송(Sending biometric vectors) – 원시 지문이나 얼굴 데이터를 전송하는 것은 영구적인 노출 위험을 초래합니다. 데이터베이스가 침해될 경우 지문은 변경할 수 없습니다.
  • 재전송 공격(Replay attacks) – 생체 인식의 수치적 표현이 네트워크를 통해 전송될 경우, 이를 캡처하여 재전송함으로써 센서를 속일 수 있습니다.
  • 규제 문제(Regulatory headaches) – 많은 관할 구역에서 생체 데이터를 매우 민감한 개인 정보로 취급하며, 엄격한 저장, 동의 및 침해 통지 규칙을 적용합니다.

생체 정보를 암호화 작업을 수행하는 로컬 키로 취급하십시오. 절대 페이로드(payload)로 전송해서는 안 됩니다.

구체적인 구현 체크리스트

  • 캡처 및 처리를 기기의 TEE 내부에서 유지하는 플랫폼 제공 생체 인식 API를 사용하십시오.
  • 생체 템플릿을 Secure Enclave에서 관리하는 키로 암호화하여 저장하십시오. 파일 시스템에 절대 기록하지 마십시오.
  • 일치 확인 성공 후 하드웨어 어테스테이션을 요청하십시오.
  • 어테스테이션을 소비하고 일회용 토큰을 발행하는 토큰화 서비스와 통합하십시오. 토큰 요청 시 서명된 어테스테이션은 포함하되, 생체 데이터는 포함하지 마십시오.
  • 발급자의 공개 키를 사용하여 서버 측에서 토큰을 검증하십시오. 유효한 어테스테이션 서명이 없는 토큰은 거부하십시오.
  • 센서 오류, 오인식(false rejects), 기기 교체와 같은 예외 상황(edge cases)을 테스트하십시오. 생체 데이터를 노출하지 않고 PIN이나 비밀번호로 전환되는 폴백(fallback) 기능이 있어야 합니다.

요약

생체 인증이 휴대폰의 보안 하드웨어 내에 머물며 일회용 토큰에 서명만 하는 방식이라면, 사용자는 지문이나 얼굴 데이터의 프라이버시를 유지할 수 있고 가맹점은 민감한 개인 정보 노출 위험을 줄일 수 있습니다. 개발자에게 규칙은 간단합니다. 생체 정보가 암호화 키를 해제하도록 하되, 절대 기기 밖으로 나가지 않게 하십시오.