Saltar al contenido principal

Cadena de confianza

Para que una credencial emitida en ISBE sea considerada de confianza, su emisor debe estar registrado en el Trusted Issuers Registry (TIR) de la red con una acreditación vigente del tipo correcto. La cadena de confianza define quién puede acreditar a quién y para qué tipos de VC.

Roles en la cadena

ISBE adopta el modelo de confianza de EBSI con tres niveles:

RolSiglaDescripción
Root Trusted Accreditation OrganisationRTAORaíz de confianza de la red. En ISBE es la propia red (Alastria/Comunidad de Madrid).
Trusted Accreditation OrganisationTAOEntidad autorizada por la RTAO para acreditar a emisores de confianza (TI).
Trusted IssuerTIEmisor final autorizado para emitir credenciales de un tipo concreto a usuarios.

En la fase actual de ISBE, la RTAO y la TAO son el mismo DID (did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV). No existe ninguna organización externa actuando como TAO independiente.

El Trusted Issuers Registry (TIR)

El TIR es el componente on-chain de ISBE donde se registran las acreditaciones de los emisores. Expone una API REST que permite consultar si un DID está acreditado para un tipo de VC concreto.

EntornoURL del TIR
Producciónhttps://tir.portal.redisbe.com/trusted-issuers-registry
Pre-producciónhttps://did-registry.pre.portal.redisbe.com/trusted-issuers-registry (misma base que el portal pre)

Estructura de una acreditación en el TIR

Cada acreditación registrada en el TIR es en sí misma una VC de tipo IsbeAccreditation. Se almacena como JWT firmado con la clave del TAO/RTAO. El hash del JWT es el identificador del atributo en el TIR.

El repositorio isbe-identity-accreditations-chains contiene los archivos de acreditación de cada entorno, organizados por DID del emisor acreditado:

isbe-identity-accreditations-chains/
├── pro/
│ └── did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV/
│ ├── 53a6ba68d836... ← acreditación JWT (hash como nombre de archivo)
│ ├── abfc5a265e1b...
│ └── fad7068b8f89...
├── pre/
│ └── did:isbe:uc-pre:z1N1q5h8vcuHaic1fZjpZiQaSDHt/

El contenido de cada archivo es un objeto JSON con la siguiente estructura:

{
"attribute": {
"body": "<JWT de la VC IsbeAccreditation>",
"hash": "<SHA-256 del body>",
"issuerType": "TI",
"rootTao": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"tao": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV"
},
"did": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV"
}

El campo issuerType indica el nivel en la cadena de confianza. En el estado actual de ISBE el único valor observado en producción es TI (Trusted Issuer), dado que RTAO y TAO son el mismo DID.

Decodificando la acreditación

El campo attribute.body es un JWT firmado por la RTAO. Al decodificarlo (sin verificar la firma, para lectura), el payload tiene la estructura de una IsbeAccreditation:

{
"iss": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"sub": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"vc": {
"id": "urn:uuid:8d475485-1617-42f3-b402-9c95117ad72b",
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": [
"IsbeAccreditation",
"IsbeAttestation",
"VerifiableAccreditationToAttest",
"VerifiableCredential"
],
"issuer": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"credentialSchema": {
"type": "FullJsonSchemaValidator2021",
"id": "https://raw.githubusercontent.com/alastria/isbe-identity-schemas-repository/main/commons/isbe-accreditation-schema.json"
},
"validFrom": "2026-03-27T10:12:31.000Z",
"validUntil": "2036-03-27T09:20:42.000Z",
"credentialSubject": {
"id": "did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV",
"domain": "ISBE",
"accreditedFor": [
{
"types": [
"VerifiableCredential",
"IsbeAttestation",
"IsbeDomainCredential",
"ISBE",
"IsbePortalLearCredential"
],
"schemaId": "https://raw.githubusercontent.com/alastria/isbe-identity-schemas-repository/main/use-cases/isbe/portal/lear/portalLear-schema.json"
}
],
"reservedAttributeId": "53a6ba68d8361d97e234d761fe91e6d71c811a1b9c79912caa358595a6632d2c"
},
"termsOfUse": {
"type": "IsbeIssuanceCertificate",
"id": "https://tir.portal.redisbe.com/trusted-issuers-registry/v1/issuers/did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV/attributes/abfc5a265e1b3aa60718619c0041e3c051686fd05d0f0954679eaa756136b343"
},
"credentialStatus": {
"type": "IsbeAccreditationEntry",
"id": "https://tir.portal.redisbe.com/trusted-issuers-registry/v1/issuers/did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV/attributes/53a6ba68d8361d97e234d761fe91e6d71c811a1b9c79912caa358595a6632d2c"
}
}
}

Observaciones:

  • iss y sub son el mismo DID porque en ISBE el RTAO se autocontrola.
  • accreditedFor[0].schemaId apunta al JSON Schema de IsbePortalLearCredential.
  • credentialStatus.type es IsbeAccreditationEntry, que es el tipo de revocación on-chain para acreditaciones.
  • reservedAttributeId es el hash del atributo registrado en el TIR para esta acreditación concreta.

Proceso para registrar un nuevo emisor

Para que una organización pueda emitir VCs en ISBE, debe pasar por el proceso de acreditación de la red:

  1. La organización registra su DID en el DID Registry ISBE (ver apartado DID) y añade al menos un assertionMethod con su clave de firma de credenciales.
  2. La organización solicita a ISBE ser acreditada como TI para los tipos de VC que necesita emitir.
  3. La RTAO/TAO de ISBE crea una VC IsbeAccreditation firmada con su clave y la registra en el TIR.
  4. A partir de ese momento la organización puede emitir VCs del tipo acreditado, referenciando en el campo termsOfUse la URL del TIR donde está su acreditación.
No hay proceso de autoservicio de acreditación actualmente

El registro de nuevos emisores en el TIR requiere intervención del equipo ISBE. No existe un flujo de autoservicio para solicitar acreditación directamente desde el portal.

Consultar el TIR

Para verificar si un DID está acreditado para un tipo de VC:

# Listar los atributos (acreditaciones) de un DID en el TIR de producción
GET https://tir.portal.redisbe.com/trusted-issuers-registry/v1/issuers/<DID>/attributes

La respuesta incluye el array de atributos registrados para ese emisor. Cada atributo es una acreditación cuyo body es el JWT firmado que contiene la IsbeAccreditation.