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:
| Rol | Sigla | Descripción |
|---|---|---|
| Root Trusted Accreditation Organisation | RTAO | Raíz de confianza de la red. En ISBE es la propia red (Alastria/Comunidad de Madrid). |
| Trusted Accreditation Organisation | TAO | Entidad autorizada por la RTAO para acreditar a emisores de confianza (TI). |
| Trusted Issuer | TI | Emisor 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.
| Entorno | URL del TIR |
|---|---|
| Producción | https://tir.portal.redisbe.com/trusted-issuers-registry |
| Pre-producción | https://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:
issysubson el mismo DID porque en ISBE el RTAO se autocontrola.accreditedFor[0].schemaIdapunta al JSON Schema deIsbePortalLearCredential.credentialStatus.typeesIsbeAccreditationEntry, que es el tipo de revocación on-chain para acreditaciones.reservedAttributeIdes 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:
- La organización registra su DID en el DID Registry ISBE (ver apartado DID) y añade al menos un
assertionMethodcon su clave de firma de credenciales. - La organización solicita a ISBE ser acreditada como TI para los tipos de VC que necesita emitir.
- La RTAO/TAO de ISBE crea una VC
IsbeAccreditationfirmada con su clave y la registra en el TIR. - A partir de ese momento la organización puede emitir VCs del tipo acreditado, referenciando en el campo
termsOfUsela URL del TIR donde está su acreditación.
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.