Presentamos la prueba de origen de la API de credenciales digitales

Una prueba de origen para la API de credenciales digitales comienza a partir de la versión 128 de Chrome. La API de Digital Credentials es una nueva API de plataforma web que permite a los sitios web solicitar información verificable de forma selectiva sobre el usuario mediante credenciales digitales, como una licencia de conducir o una tarjeta de identificación nacional almacenada en una billetera digital.

Segundo plano

La identidad digital del mundo real se está convirtiendo en una realidad, y muchas entidades públicas y privadas están comenzando a emitir credenciales digitales vinculadas al dispositivo. Por ejemplo, las licencias de conducir y los documentos de identidad para dispositivos móviles en determinados estados de EE.UU. (como Arizona, California, Colorado, Georgia y Maryland) ahora se pueden aprovisionar en aplicaciones de billetera digital, como la Billetera de Google, en dispositivos móviles. También están surgiendo las reglamentaciones sobre la aceptación de credenciales digitales para ciertas verificaciones en línea, por lo que eIDAS 2.0 es un ejemplo.

Licencia de conducir para dispositivos móviles en la Billetera de Google
Licencia de conducir del dispositivo móvil en la Billetera de Google.

Las características de una credencial digital dependen de su formato, aunque suelen incluir lo siguiente:

  • Privacidad y seguridad mejoradas: El uso de encriptación avanzada y métodos de autenticación sólidos ayuda a proteger los datos sensibles y garantizar el acceso seguro. Por ejemplo, la presentación de una credencial generalmente se protege con la autenticación del usuario a través de la app de la billetera.
  • Divulgación selectiva: Las partes confiables (RP) pueden solicitar información específica de la credencial, lo que permite a los usuarios limitar los datos compartidos a lo que se necesita para el caso de uso. Por ejemplo, se puede compartir si un usuario es mayor de 18 años sin revelar su fecha de nacimiento.
  • Interoperabilidad: La credencial debe cumplir con estándares internacionales, lo que permite la compatibilidad entre diferentes sistemas y países, y facilita la aceptación internacional.
  • Verificabilidad: La entidad emisora firma digitalmente los datos de las credenciales que se comparten. El RP puede verificar esta firma para comprobar la autenticidad de los datos.

Debido a las credenciales digitales y verificable, podrían habilitar casos de uso como los siguientes:

  • Verificación de edad: Solicita la edad para verificar la edad de una persona antes de publicar contenido con restricción de edad o comprar artículos con restricción de edad.
  • Verificación de identidad: solicite el nombre y la dirección para verificar la identidad de una persona a fin de garantizar el cumplimiento legal o la prevención de fraudes.
  • Verificación de privilegios de conducción: Verifica si una persona es apta para conducir (por ejemplo, si alquila un auto).

A medida que los sitios web comenzaron a comunicarse directamente con las aplicaciones de billetera para dispositivos móviles (por ejemplo, a través del uso de esquemas de URL personalizadas) para solicitar credenciales digitales para varios casos de uso, los navegadores ven una oportunidad para hacer que esta interacción sea más segura y resistente al abuso, y más fácil de usar a través de una API específica.

Presentamos la API de credenciales digitales

La API de credenciales digitales es una nueva API de plataforma web que permite a los sitios web de RP solicitar la presentación de credenciales digitales de apps de billetera. La API está disponible en Chrome como una prueba de origen a partir de Chrome 128.

La API es independiente del protocolo, lo que permite que la parte restringida especifique un protocolo según sus requisitos. Cuando un RP realiza una solicitud, el navegador la envía al sistema operativo móvil, que busca una credencial coincidente en las aplicaciones de billetera instaladas. Si se encuentra alguna, el sistema operativo para dispositivos móviles le solicita al usuario que seleccione una y envía la solicitud a la billetera que seleccionó. Después de una autenticación local, la billetera muestra una respuesta que contiene los datos de credenciales solicitados.

Diagrama de comunicación entre el navegador, la billetera y el usuario de confianza.

Chrome primero admitirá la API en Chrome en Android para solicitar credenciales a apps de billetera en el mismo dispositivo. En el futuro, planeamos admitir la versión de escritorio de Chrome para solicitar credenciales multidispositivo desde otro dispositivo móvil.

Cuando se lance la Billetera de Google, se integrará con la API de Credenciales Digitales, lo que permitirá a empresas y organizaciones iniciar una solicitud para que los usuarios presenten su ID en línea, a través de Chrome en Android, y verificar la autenticidad de los datos transmitidos examinando la firma criptográfica. Si quieres participar, completa este formulario para expresar tu interés en aceptar IDs digitales de la Billetera de Google.

Las Cuentas de Google también usarán la API pronto para verificar las contraseñas de y su fecha de nacimiento. Los usuarios que residan en un estado de EE.UU. admitido podrán usar su ID estatal o licencia de conducir aprovisionadas en las apps de billetera disponibles (incluida la Billetera de Google) para compartir sin problemas su fecha de nacimiento con Google sin compartir otros detalles sobre su identidad. Esto permite que los usuarios demuestren a Google, de una manera que preserva la privacidad, que cumplen con los requisitos de edad relacionados con su cuenta.

Probar

Para probar la API de credenciales digitales, sigue las instrucciones:

  1. Instala la aplicación Billetera de demostración según las instrucciones que se describen en esta página.
  2. Inicia la app IC Wallet y aprovisiona una licencia de conducir móvil (mDL) de demostración.
    • Presiona el botón de menú y selecciona Agregar documento autofirmado.
  3. Navega a https://digital-credentials.dev con Chrome 128 o una versión posterior.
  4. Presiona Solicitar credenciales (OpenID4VP).

Mira la demostración que usa https://digital-credentials.dev, un sitio web de prueba que permite que los desarrolladores generen solicitudes de credenciales para diferentes atributos:

Aquí te mostramos cómo funciona la demostración paso a paso:

1) El usuario llega al sitio web del usuario de confianza y se le solicita que presente su apellido verificado, su nombre y una garantía de edad de más de 21 años.
. 2) El navegador confirma si el usuario tiene la intención de compartir alguna credencial digital con este sitio web.
3) El sistema operativo muestra la información que se solicita y las credenciales aptas que pueden coincidir con la solicitud para que el usuario seleccione y complete la solicitud.
. 4) La billetera autentica al usuario de forma local con el desbloqueo de pantalla.

5) La credencial digital solicitada ahora pasa al sitio web del usuario de confianza.

Cómo funciona la API

La API de Digital Credentials se basa en los cimientos de la API de Credential Management, pero en una plataforma de API independiente: navigator.identity. Si llamas a navigator.identity.get(), el sitio web puede solicitar una credencial digital almacenada en una app de billetera digital. de Google Cloud.

// 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: {...}
      }
    }],
  }
});

La plataforma básica de la API es similar a navigator.credentials.get(), con la excepción de que solo acepta el tipo de credencial "digital". Dentro del tipo de credencial digital, agrega el array providers que contenga IdentityRequestProvider con los siguientes parámetros básicos:

Ejemplo de carga útil para el tipo de credencial digital con 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
            }
          ]
        }
      }],
    }
  }
}

Con esta solicitud, las billeteras que tengan Licencias de Conducir Digital en el dispositivo proporcionarán un conjunto verificable de credenciales que contengan lo siguiente:

  • Apellido del usuario.
  • Es el nombre del usuario.
  • Es un valor booleano que indica si el usuario es mayor de 21 años o no.

Este es un ejemplo de carga útil de respuesta:

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

En este ejemplo, la credencial se solicitó con el protocolo "openid4vp" y la respuesta contiene "vp_token" en la propiedad data. Consulta la especificación de OpenID for Verifiable Presentation (OID4VP) para la API de W3C Digital Credentials para obtener información sobre cómo analizar la respuesta y verificar la credencial.

La API de Digital Credentials se admite en Chrome en Android como prueba de origen. Por el momento, Chrome para computadoras de escritorio y para iOS no lo admite. En el caso de otros motores de navegador, las conversaciones activas se facilitan a través del W3C Web Incubator Community Group.

Participar en la prueba de origen

Para el desarrollo, puedes habilitar la API de credenciales digitales de forma local activando la marca chrome://flags#web-identity-digital-credentials en Chrome 128 o versiones posteriores.

Esta función también está disponible como prueba de origen. Las pruebas de origen te permiten probar funciones nuevas y brindar comentarios sobre su usabilidad, practicidad y eficacia a la comunidad de estándares web. Para obtener más información, consulta Comienza a usar las pruebas de origen. Si quieres registrarte en esta o en otra prueba de origen, visita la página de registro.

  1. Solicita un token para tu origen.
  2. Agrega el token a tus páginas. Existen dos maneras de hacerlo:
    • Agrega una etiqueta origin-trial <meta> al encabezado de cada página. Por ejemplo, es posible que se vea de la siguiente manera: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Si puedes configurar tu servidor, también puedes agregar el token mediante un encabezado HTTP Origin-Trial. El encabezado de respuesta resultante debería ser similar al siguiente:Origin-Trial: TOKEN_GOES_HERE.

Compartir comentarios

Si tienes comentarios sobre la API de credenciales digitales, envíalos a la herramienta de seguimiento de errores de Chromium específica.