Saltar al contenido principal

Seguridad y privacidad

Modelo de seguridad

La wallet está diseñada con el principio de custodia local: las claves privadas y las credenciales nunca abandonan el dispositivo del holder, salvo cuando el holder decide presentar una credencial a un verificador.

Almacenamiento de claves privadas

Las claves privadas del holder se almacenan en el almacén seguro del sistema operativo:

PlataformaAlmacén
iOSiOS Keychain
AndroidAndroid KeyStore

Estos almacenes están protegidos por el hardware del dispositivo (Secure Enclave en iOS, StrongBox o TEE en Android cuando está disponible). Las claves privadas nunca se escriben en el sistema de ficheros del dispositivo ni se transmiten a ningún servidor.

Cifrado de credenciales en reposo

Las credenciales almacenadas en la wallet se cifran con AES-256 antes de guardarse en el almacenamiento local del dispositivo. La clave de cifrado deriva del material de clave almacenado en el Keychain / KeyStore.

Autenticación de acceso

Para acceder a la wallet el holder debe autenticarse con:

  • PIN de 6 dígitos (obligatorio).
  • Biometría (Face ID, Touch ID, Fingerprint) — opcional, habilitada por el holder.

La wallet se bloquea automáticamente al pasar a segundo plano.

Prueba de posesión

Cuando la wallet solicita una credencial a un emisor (OID4VCI), adjunta una prueba de posesión (proof of possession): un JWT firmado con la clave privada del holder que demuestra que el holder controla el DID al que se emitirá la credencial. Esto impide que un tercero solicite credenciales en nombre del holder.

Cuando la wallet presenta credenciales a un verificador (OID4VP), firma la VP con la clave privada del holder. El verificador puede comprobar que la presentación fue creada por el holder legítimo y que no ha sido manipulada.

Modelo de privacidad

Minimización de datos

La wallet solo transmite datos al exterior en dos momentos:

  1. Recepción de credencial: la wallet se comunica con el endpoint del emisor (OID4VCI) para obtener la credencial.
  2. Presentación de credencial: la wallet envía la VP al endpoint del verificador (response_uri) después de que el holder confirme el consentimiento.

En ningún caso la wallet comunica el contenido de las credenciales a terceros, ni siquiera al equipo ISBE.

No hay servidor central

La wallet no envía telemetría, no sincroniza credenciales en la nube y no comparte el DID del holder con ningún servicio de directorio. Todo el almacenamiento es local.

Consentimiento explícito

Antes de enviar cualquier presentación, la wallet muestra al holder exactamente qué credencial o atributos se van a compartir y con qué verificador. El holder debe confirmar activamente el envío. No existe ningún mecanismo de presentación automática sin confirmación.

Divulgación selectiva

La divulgación selectiva (compartir solo un subconjunto de atributos de una credencial) no está disponible en la implementación actual. La wallet presenta siempre la credencial completa. Los formatos vc+sd-jwt y ldp_vc que habilitarían esta funcionalidad no están implementados.

Correlación de presentaciones

Cada VP incluye el DID del holder como campo iss. Esto significa que si el mismo holder presenta credenciales a múltiples verificadores que colaboran entre sí, pueden correlacionar las presentaciones mediante el DID.

Para casos de uso que requieran mayor privacidad, se recomienda consultar con el equipo ISBE las opciones disponibles.

Verificación de revocación

La wallet verifica la firma del emisor y la fecha de expiración de la credencial en el momento de la recepción. La wallet no verifica el estado de revocación de las credenciales almacenadas (el campo credentialStatus no se comprueba). Si una credencial ha sido revocada por el emisor después de ser emitida, la wallet no lo detectará automáticamente.

Canal de comunicación

Todas las comunicaciones de la wallet con emisores y verificadores se realizan exclusivamente sobre HTTPS. La wallet rechaza cualquier endpoint que no use TLS.

Actualizaciones de seguridad

Las actualizaciones de seguridad se distribuyen a través de la App Store y Google Play. Se recomienda mantener la wallet actualizada.