Digital Credentials API 오리진 트라이얼 소개

Digital Credentials API의 오리진 트라이얼은 Chrome 128부터 시작됩니다. Digital Credentials API는 웹사이트에서 운전면허증 또는 디지털 지갑에 저장된 주민등록증과 같은 디지털 사용자 인증 정보를 통해 사용자에 관한 확인 가능한 정보를 선택적으로 요청할 수 있는 새로운 웹 플랫폼 API입니다.

배경

많은 공공 기관과 민간 법인이 기기에 결합된 디지털 사용자 인증 정보를 발급하기 시작하면서 현실 세계의 디지털 ID가 현실화되고 있습니다. 예를 들어 미국의 일부 주 (예: 애리조나, 캘리포니아, 콜로라도, 조지아, 메릴랜드)의 모바일 운전면허증 및 신분증을 휴대기기의 Google 월렛과 같은 디지털 지갑 앱에 프로비저닝할 수 있습니다. 특정 온라인 인증의 디지털 사용자 인증 정보 수락에 관한 규정도 새롭게 등장하고 eIDAS 2.0이 그 한 가지 예입니다.

<ph type="x-smartling-placeholder">
</ph> Google 월렛의 모바일 운전면허증
Google 월렛의 모바일 운전면허증

디지털 사용자 인증 정보의 기능은 형식에 따라 다르지만 일반적으로 다음과 같은 기능을 포함합니다.

  • 보안 및 개인 정보 보호 강화: 고급 암호화 및 강력한 인증 방법을 사용하여 민감한 정보를 보호하고 액세스를 보장합니다. 예를 들어 사용자 인증 정보 제공은 일반적으로 월렛 앱을 통한 사용자 인증으로 보호됩니다.
  • 선택적 공개: 신뢰 당사자 (RP)는 사용자 인증 정보에서 일부 정보를 요청할 수 있으므로 사용자는 공유 데이터를 사용 사례에 필요한 항목으로 제한할 수 있습니다. 예를 들어 사용자의 생년월일은 공개하지 않고 사용자가 만 18세 이상인지 여부를 공유할 수 있습니다.
  • 상호 운용성: 사용자 인증 정보는 국제 표준을 준수해야 하며, 다양한 시스템과 국가에서 호환될 수 있고 해외에서 쉽게 사용할 수 있어야 합니다.
  • 확인 가능성: 공유된 사용자 인증 정보 데이터는 발급기관에서 디지털 방식으로 서명했습니다. RP는 이 서명을 확인하여 데이터의 진위성을 확인할 수 있습니다.

디지털 사용자 인증 정보 다음과 같은 사용 사례를 지원할 수 있습니다.

  • 연령 인증: 연령 제한 콘텐츠를 게재하거나 연령 제한 항목을 구매하기 전에 연령 확인을 위해 연령을 요청합니다.
  • 신원 확인: 법률 준수 또는 사기 방지를 위해 개인의 신원을 확인하기 위해 이름과 주소를 요청합니다.
  • 운전 권한 확인: 사용자의 운전 자격을 확인합니다 (예: 자동차 렌트 시).

웹사이트가 다양한 사용 사례에 대한 디지털 크리덴셜을 요청하기 위해 모바일 지갑 애플리케이션과 직접 통신 (예: 맞춤 URL 구성표 사용)하기 시작함에 따라, 브라우저는 특별히 제작된 API를 통해 이러한 상호작용의 보안을 강화하고, 악용을 방지하며, 사용하기 쉽게 만들 수 있는 기회를 포착하고 있습니다.

Digital Credentials API 소개

Digital Credentials API는 RP 웹사이트에서 월렛 앱의 디지털 사용자 인증 정보 표시를 요청할 수 있는 새로운 웹 플랫폼 API입니다. 이 API는 Chrome 128부터 Chrome에서 오리진 트라이얼로 제공됩니다.

API는 프로토콜에 구속되지 않으므로 RP가 요구사항에 따라 프로토콜을 지정할 수 있습니다. RP가 요청하면 브라우저가 모바일 운영체제로 요청을 전송하고, 모바일 운영체제는 설치된 월렛 애플리케이션에서 일치하는 크리덴셜을 검색합니다. 이러한 항목이 있으면 모바일 운영체제에서 사용자에게 하나를 선택하라는 메시지를 표시하고 사용자가 선택한 월렛으로 요청을 보냅니다. 로컬 인증 후 월렛은 요청된 사용자 인증 정보 데이터가 포함된 응답을 반환합니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 브라우저, 월렛, 신뢰 당사자 간의 통신 다이어그램

Chrome은 동일한 기기의 월렛 앱에서 사용자 인증 정보를 요청하기 위해 먼저 Android의 Chrome에서 API를 지원합니다. 향후 다른 휴대기기에서 교차 기기 사용자 인증 정보를 요청할 수 있도록 Chrome 데스크톱을 지원할 계획입니다.

출시 시점에 Google 월렛이 Digital Credentials API와 통합되므로 일부 기업과 조직에서는 Android용 Chrome을 통해 사용자에게 온라인으로 신분증을 제시하도록 요청할 수 있으며, 암호화 서명을 검사하여 전송된 데이터의 진위 여부를 확인할 수 있습니다. 참여하려면 이 양식을 작성하여 Google 월렛에서 디지털 신분증을 받는 데 관심을 표현하세요.

곧 Google 계정에서도 이 API를 사용하여 특정 사용자의 생년월일을 입력합니다. 지원되는 미국 주에 거주하는 사용자는 주 신분증 또는 사용 가능한 월렛 앱 (Google 월렛 포함)에 프로비저닝된 운전면허증을 사용하여 신원에 관한 다른 세부정보를 공유하지 않고도 생년월일만 Google과 원활하게 공유할 수 있습니다. 이를 통해 사용자는 개인 정보를 보호하는 방식으로 계정 관련 연령 요건을 충족함을 Google에 입증할 수 있습니다.

사용해 보기

Digital Credentials API를 사용해 보려면 다음 안내를 따르세요.

  1. 이 페이지에 설명된 안내에 따라 데모 월렛 애플리케이션을 설치합니다.
  2. IC Wallet 앱을 실행하고 데모 모바일 운전면허증 (mDL)을 프로비저닝합니다.
    • 메뉴 버튼을 탭하고 자체 서명 문서 추가를 선택합니다.
  3. Chrome 128 이상을 사용하여 https://digital-credentials.dev로 이동합니다.
  4. Request Credentials (OpenID4VP)를 누릅니다.

개발자가 다양한 속성에 대한 사용자 인증 정보 요청을 생성하기 위한 테스트 웹사이트인 https://digital-credentials.dev를 사용하는 데모를 확인하세요.

데모의 단계별 작동 방식은 다음과 같습니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 1. 사용자가 신뢰 당사자의 웹사이트를 방문하여 확인된 성, 이름, 만 21세 이상의 연령 보증서를 제시해야 합니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 2. 브라우저에서 사용자가 이 웹사이트와 디지털 사용자 인증 정보를 공유할 것인지 확인합니다.
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 3. 운영체제에는 요청된 정보와 사용자가 요청을 선택하여 완료할 수 있는 요청과 일치할 수 있는 자격 증명이 표시됩니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 4. 월렛은 화면 잠금 해제를 통해 사용자를 로컬에서 인증합니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph> 5. 요청된 디지털 사용자 인증 정보가 이제 신뢰 당사자의 웹사이트로 전달됩니다.

API의 작동 방식

Digital Credentials API는 Credential Management API를 기반으로 빌드되지만 독립적인 API 노출 영역인 navigator.identity에서 빌드됩니다. navigator.identity.get()를 호출하면 웹사이트에서 모바일 월렛 앱에 저장된 디지털 사용자 인증 정보를 요청할 수 있습니다. 에서 자세한 내용을 확인하실 수 있습니다.

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

기본 API 노출 영역은 "digital" 사용자 인증 정보 유형만 허용한다는 점을 제외하면 navigator.credentials.get()와 유사합니다. 디지털 사용자 인증 정보 유형 내에서 다음 기본 매개변수와 함께 IdentityRequestProvider가 포함된 providers 배열을 추가합니다.

OID4VP를 사용하는 디지털 사용자 인증 정보 유형에 대한 페이로드의 예는 다음과 같습니다.

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {     
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

이 요청을 통해 기기에 'mDL'이 있는 월렛은 다음을 포함하는 검증 가능한 사용자 인증 정보 세트를 제공합니다.

  • 사용자의 성입니다.
  • 사용자의 이름
  • 사용자가 21세 이상인지 여부를 나타내는 불리언 값입니다.

다음은 응답 페이로드의 예입니다.

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

이 예시에서는 "openid4vp" 프로토콜을 사용하여 사용자 인증 정보를 요청했으며 응답의 data 속성에 "vp_token"가 포함되어 있습니다. 응답을 파싱하고 사용자 인증 정보를 확인하는 방법을 알아보려면 W3C Digital Credentials API 사양의 OpenID for Verifiable Presentation (OID4VP)을 참조하세요.

Digital Credentials API는 Android용 Chrome에서 오리진 트라이얼으로 지원됩니다. 데스크톱 및 iOS용 Chrome에서는 현재 이 기능이 지원되지 않습니다. 기타 브라우저 엔진의 경우 W3C Web Incubator Community Group을 통해 활발한 대화가 이루어집니다.

오리진 트라이얼 참여

개발의 경우 Chrome 128 이상에서 Chrome 플래그 chrome://flags#web-identity-digital-credentials를 사용 설정하여 Digital Credentials API를 로컬에서 사용 설정할 수 있습니다.

이 기능은 오리진 트라이얼로도 제공됩니다. 오리진 트라이얼을 통해 새로운 기능을 사용해 보고 사용성, 실용성, 효과에 관한 의견을 웹 표준 커뮤니티에 제공할 수 있습니다. 자세한 내용은 오리진 트라이얼 시작하기를 참고하세요. 이 오리진 트라이얼 또는 다른 오리진 트라이얼에 가입하려면 등록 페이지를 방문하세요.

  1. 원본에 대한 토큰을 요청합니다.
  2. 페이지에 토큰을 추가합니다. 다음 두 가지 방법이 있습니다. <ph type="x-smartling-placeholder">
      </ph>
    • 각 페이지의 헤드에 origin-trial <meta> 태그를 추가합니다. 예를 들어 <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.와 같이 표시될 수 있습니다.
    • 서버를 구성할 수 있는 경우 Origin-Trial HTTP 헤더를 사용하여 토큰을 추가할 수도 있습니다. 결과 응답 헤더는 다음과 같습니다.Origin-Trial: TOKEN_GOES_HERE.
를 통해 개인정보처리방침을 정의할 수 있습니다.

의견 공유

Digital Credentials API에 관한 의견이 있으면 전용 Chromium Issue Tracker에 제출하세요.