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:
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:
- 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.
- La app o el servicio que solicita la credencial para otorgar acceso o verificar una identidad se denomina verificador.
- 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.
- 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:
- En Android, las billeteras deben registrar sus metadatos de credenciales con Credential Manager para que aparezcan en la IU de Credential Manager.
- Credential Manager compara las credenciales en las billeteras según la solicitud y presenta una lista para que el usuario seleccione.
- 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í:
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:
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:
- 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.apkmás reciente. - 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í.
- Navega a https://digital-credentials.dev/ y selecciona
Request Credentials (OpenID4VP). - 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.
- Selecciona la credencial de CMWallet para volver al navegador. El navegador debería mostrar la credencial devuelta.
Consulta también
- Para obtener más información sobre el uso de Credential Manager para solicitar credenciales digitales en tu app, consulta la página de la API de Credential Manager - Verifier.
- Para obtener más información sobre cómo compilar una billetera digital con Credential Manager, lee la página de la API de Credential Manager - Holder.