Descripción general de las credenciales digitales

Las credenciales digitales son documentos verificables de forma criptográfica que se pueden usar para autenticar, autorizar o proporcionar información sobre un usuario. Por lo general, se trata de elementos como licencias de conducir para dispositivos móviles, pasaportes digitales, tarjetas de embarque, etcétera. Se encuentran en contenedores virtuales llamados billeteras digitales y forman parte de un estándar de W3C que especifica cómo acceder a ellos y recuperarlos. Este estándar se implementa para casos de uso web con la API de Credential Management de W3C y en Android, con la API de DigitalCredential de Credential Manager.

Información sobre las credenciales digitales

En el mundo físico, una persona puede guardar su identidad en su billetera y presentársela a la parte solicitante cuando se le pida:

Imagen que muestra el flujo de una interacción normal con la billetera
Figura 1. Proceso para completar una solicitud de credenciales del mundo físico El solicitante le pide al usuario una credencial específica. Luego, el usuario la selecciona y la recupera de su billetera física. Por último, el usuario le proporciona la credencial al solicitante.

En este caso, un usuario suele tener una sola billetera y recupera las credenciales solicitadas de la billetera para presentárselas al solicitante. Las billeteras son, en su mayoría, intercambiables y, por lo general, pueden almacenar los mismos elementos.

Las credenciales digitales tienen las siguientes diferencias con las credenciales del mundo físico:

  1. Se espera que los usuarios tengan varias billeteras, también conocidas como titulares - que pueden contener varias credenciales diferentes. Las billeteras determinan qué credenciales se pueden almacenar en ellas.
  2. La app o el servicio que solicita la credencial para otorgar acceso o verificar una identidad se denomina verificador.
  3. La entidad que crea la credencial y afirma las reclamaciones sobre el sujeto (por ejemplo, una universidad, un gobierno o una empresa de tecnología) se conoce como el emisor.
  4. La presentación de credenciales se realiza en el software, lo que significa que una superficie de API recupera y presenta las credenciales. En Android, se trata de Credential Manager.

Por lo tanto, Credential Manager asume varios roles que antes manejaba el usuario:

  1. En Android, las billeteras deben registrar sus metadatos de credenciales con Credential Manager para que aparezcan en la IU de Credential Manager.
  2. Credential Manager compara las credenciales en las billeteras según la solicitud y presenta una lista para que el usuario seleccione.
  3. Cuando el usuario selecciona una credencial en la lista, Credential Manager invoca la billetera, que manejará el resto de la transacción (mostrará las IUs, etcétera) y devolverá la credencial a la aplicación.

Este flujo se muestra aquí:

Imagen que muestra el flujo de una interacción con credenciales digitales
Figura 2. Modelo de interacción para la verificación de credenciales digitales Credential Manager usa metadatos de credenciales preregistrados en las billeteras del usuario para comparar la solicitud de un verificador y le solicita al usuario que seleccione una credencial. Luego, Credential Manager dirige el flujo de actividad a la billetera correspondiente, que maneja el resto de la transacción y devuelve la credencial al verificador. Nota: El verificador debe manejar y verificar la respuesta de la credencial una vez que se devuelva.

Credenciales verificables

Las credenciales verificables son un subconjunto de credenciales digitales que se rigen por estándares estrictos (como el modelo de datos de credenciales verificables de W3C). Estas credenciales contienen reclamaciones protegidas de forma criptográfica, lo que las hace evidentes y demuestra exactamente quién las emitió.

No todas las credenciales digitales son credenciales verificables, pero todas las credenciales verificables son credenciales digitales.

Qué significa que se verifique una reclamación

Cuando llega una credencial a través de la API de Credential Manager de Android y una declaración dentro de ella se marca como "verificada", implica que el emisor afirma que realizó una verificación en ese dato específico. Sin embargo, no significa que los datos sean una verdad absoluta y universal. "Verificado" es una afirmación del proceso, no una garantía automática de confianza.

La filosofía principal de este ecosistema es que la confianza siempre se resuelve en el verificador. Cuando el verificador (tu app) recibe los datos protegidos de forma criptográfica y ve que el emisor los marcó como "verificados", debe determinar si confía en que el emisor haya verificado la declaración según sus estándares.

Experiencia del usuario

Como se muestra en el flujo de Android, el usuario solo necesita interactuar una vez con la IU de Credential Manager para seleccionar la credencial adecuada. Este es un ejemplo de cómo se ve el selector:

Imagen que muestra la IU de credenciales digitales en el Administrador de credenciales
Figura 3. La IU de credenciales digitales

Estándares

Las solicitudes de credenciales digitales se crean con el estándar OpenID4VP. Puedes ver solicitudes de ejemplo en el sitio de demostración de credenciales digitales Digital Credentials Demo site.

Por lo general, las respuestas de credenciales digitales se muestran en un formato de credenciales estandarizado. Estos se mantienen en diferentes organismos de estándares e incluyen W3C credenciales verificables, sd-jwt y mdoc.

También se pueden usar protocolos personalizados, aunque te recomendamos que uses uno de los protocolos estándar en tu aplicación.

Probar

Puedes probar el flujo de credenciales digitales en todas las plataformas con una billetera de Android y un verificador basado en la Web:

  1. Instala la muestra pública de CMWallet en tu teléfono Android. Para ello, extrae del repositorio y realiza la instalación directamente desde Android Studio o navega a https://github.com/digitalcredentialsdev/CMWallet/actions y selecciona la compilación más reciente para acceder al archivo app-debug.apk más reciente.
  2. Abre CMWallet para registrar los metadatos con Credential Manager. Asegúrate de que el Bluetooth esté habilitado para permitir que tus dispositivos se conecten entre sí.
  3. Navega a https://digital-credentials.dev/ y selecciona Request Credentials (OpenID4VP).
  4. Acepta los mensajes de advertencia y escanea el código QR con tu teléfono. Luego, selecciona "Usar llave de acceso" y presiona la confirmación para mostrar las credenciales disponibles.
  5. Selecciona la credencial de CMWallet para volver al navegador. El navegador debería mostrar la credencial devuelta.

Consulta también