디지털 사용자 인증 정보 개요

디지털 사용자 인증 정보는 암호화 방식으로 확인할 수 있는 문서로, 사용자를 인증하거나, 승인하거나, 사용자에 관한 정보를 제공하는 데 사용할 수 있습니다. 이러한 항목은 일반적으로 모바일 운전면허증, 디지털 여권, 탑승권 등입니다. 이러한 항목은 디지털 지갑이라는 가상 컨테이너에 있으며 액세스하고 검색하는 방법을 지정하는 W3C 표준의 일부입니다. 이 표준은 W3C 사용자 인증 정보 관리 API를 사용하는 웹 사용 사례와 Android에서 Credential Manager의 DigitalCredential API를 사용하여 구현됩니다.

디지털 사용자 인증 정보 이해하기

실제 세계에서 사람은 지갑에 신원을 보관하고 요청하는 당사자에게 요청이 있을 때 이를 제시할 수 있습니다.

일반적인 월렛 상호작용 흐름을 보여주는 이미지
그림 1. 실제 사용자 인증 정보 요청을 처리하는 프로세스입니다. 요청자가 사용자에게 특정 사용자 인증 정보를 요청합니다. 그런 다음 사용자는 실제 지갑에서 카드를 선택하여 꺼냅니다. 마지막으로 사용자가 요청자에게 사용자 인증 정보를 제공합니다.

이 경우 사용자는 일반적으로 지갑을 하나 보유하며 지갑에서 요청된 사용자 인증 정보를 가져와 요청자에게 제공합니다. 지갑은 대부분 상호 교환이 가능하며 일반적으로 동일한 항목을 저장할 수 있습니다.

디지털 사용자 인증 정보는 실제 세계의 사용자 인증 정보와 다음과 같은 차이가 있습니다.

  1. 사용자는 다양한 사용자 인증 정보를 포함할 수 있는 여러 지갑(보유자라고도 함)을 보유할 것으로 예상됩니다. 지갑은 내부에 저장할 수 있는 사용자 인증 정보를 결정합니다.
  2. 액세스 권한을 부여하거나 ID를 인증하기 위해 사용자 인증 정보를 요청하는 앱 또는 서비스를 인증자라고 합니다.
  3. 사용자 인증 정보를 생성하고 주체에 관한 클레임을 어설션하는 기관(예: 대학, 정부, 기술 회사)을 발급자라고 합니다.
  4. 사용자 인증 정보 제공은 소프트웨어에서 이루어지므로 API 노출 영역이 사용자 인증 정보를 검색하고 제공합니다. Android에서는 사용자 인증 정보 관리자가 이에 해당합니다.

따라서 인증 관리자는 이전에 사용자가 처리했던 여러 역할을 맡습니다.

  1. Android에서 지갑은 인증 관리자 UI에 표시되려면 인증 관리자에 사용자 인증 정보 메타데이터를 등록해야 합니다.
  2. 인증 관리자는 요청에 따라 지갑 간에 인증 정보를 일치시키고 사용자가 선택할 수 있는 목록을 표시합니다.
  3. 사용자가 목록에서 사용자 인증 정보를 선택하면 인증 관리자가 지갑을 호출합니다. 지갑은 트랜잭션의 나머지 부분을 처리하고(UI 표시 등) 사용자 인증 정보를 애플리케이션에 반환합니다.

이 흐름은 다음과 같습니다.

디지털 사용자 인증 정보 상호작용 흐름을 보여주는 이미지
그림 2. 디지털 사용자 인증 정보 확인을 위한 상호작용 모델입니다. 인증 관리자는 사용자 지갑에서 사전 등록된 사용자 인증 정보 메타데이터를 사용하여 인증 기관의 요청을 일치시키고 사용자에게 사용자 인증 정보를 선택하라는 메시지를 표시합니다. 그러면 인증 관리자가 활동 흐름을 거래의 나머지 부분을 처리하고 인증 기관에 사용자 인증 정보를 반환하는 해당 지갑으로 안내합니다. 참고: 인증 기관은 사용자 인증 정보 응답이 반환되면 이를 처리하고 확인해야 합니다.

검증 가능한 사용자 인증 정보

인증 가능한 사용자 인증 정보는 엄격한 표준 (예: W3C 인증 가능한 사용자 인증 정보 데이터 모델)에 의거하여 관리되는 디지털 사용자 인증 정보의 하위 집합입니다. 이러한 사용자 인증 정보에는 암호화 방식으로 보호되는 클레임이 포함되어 있어 조작이 불가능하며 누가 발급했는지 정확하게 증명할 수 있습니다.

모든 디지털 사용자 인증 정보가 검증 가능한 사용자 인증 정보는 아니지만 모든 검증 가능한 사용자 인증 정보는 디지털 사용자 인증 정보입니다.

인증된 주장

사용자 인증 정보가 Android Credential Manager API를 통해 도착하고 그 안의 클레임이 'verified'(확인됨)로 표시되면 발급자가 해당 특정 데이터에 대한 확인을 수행했음을 주장하는 것입니다. 하지만 데이터가 절대적이고 보편적인 진실이라는 의미는 아닙니다. '인증됨'은 프로세스에 대한 주장이지 신뢰를 자동으로 보장하는 것은 아닙니다.

이 생태계의 핵심 철학은 신뢰가 항상 검증자에서 해결된다는 것입니다. 확인자 (앱)가 암호화 방식으로 보안이 유지되는 데이터를 수신하고 발급자가 '인증됨'으로 표시한 것을 확인하면 발급자가 자체 표준에 따라 클레임을 인증했는지 신뢰할 수 있는지 확인해야 합니다.

사용자 환경

Android 흐름에 표시된 것처럼 사용자는 인증 관리자 UI와 한 번만 상호작용하여 적절한 사용자 인증 정보를 선택하면 됩니다. 다음은 선택기가 표시되는 방식의 예입니다.

인증 관리자의 디지털 사용자 인증 정보 UI를 보여주는 이미지
그림 3. 디지털 인증 UI

기준

디지털 사용자 인증 정보 요청은 OpenID4VP 표준을 사용하여 생성됩니다. 디지털 사용자 인증 정보 데모 사이트에서 요청 예를 확인할 수 있습니다.

디지털 사용자 인증 정보 응답은 일반적으로 표준화된 사용자 인증 정보 형식으로 반환됩니다. 이러한 표준은 서로 다른 표준 기관에서 유지관리하며 W3C 검증 가능한 사용자 인증 정보, sd-jwt, mdoc이 포함됩니다.

맞춤 프로토콜도 가능하지만 애플리케이션에서 표준 프로토콜 중 하나를 사용하는 것이 좋습니다.

사용해 보기

Android 월렛과 웹 기반 검증 도구를 사용하여 플랫폼 간 디지털 사용자 인증 정보 흐름을 테스트할 수 있습니다.

  1. Android 휴대전화에 CMWallet 공개 샘플을 설치합니다. 저장소에서 가져와 Android 스튜디오에서 직접 설치하거나 https://github.com/digitalcredentialsdev/CMWallet/actions로 이동하여 최신 빌드를 선택하여 최신 app-debug.apk 파일에 액세스하면 됩니다.
  2. CMWallet을 열어 인증 관리자에 메타데이터를 등록합니다. 기기가 서로 연결될 수 있도록 블루투스가 사용 설정되어 있는지 확인합니다.
  3. https://digital-credentials.dev/로 이동하여 Request Credentials (OpenID4VP)를 선택합니다.
  4. 경고 메시지를 수락하고 휴대전화로 QR 코드를 스캔한 다음 '패스키 사용'을 선택하고 확인을 탭하여 사용 가능한 사용자 인증 정보를 표시합니다.
  5. CMWallet에서 사용자 인증 정보를 선택하여 브라우저로 돌아갑니다. 브라우저에 반환된 사용자 인증 정보가 표시되어야 합니다.

참고 항목

  • 인증 관리자를 사용하여 앱에서 디지털 사용자 인증 정보를 요청하는 방법을 자세히 알아보려면 인증 관리자 - 인증 기관 API 페이지를 참고하세요.
  • 인증 관리자를 사용하여 디지털 지갑을 빌드하는 방법을 자세히 알아보려면 인증 관리자 - 보유자 API 페이지를 참고하세요.