DCP-01 — Identidad y vinculación al principal¶
Traducción informativa de la especificación en inglés, actualizada el 25/10/2026. La versión normativa es la inglesa: esta traducción no tiene valor normativo y, si difieren, prevalece el inglés. Los identificadores y bloques de código se conservan sin traducir.
Las personas preceden a los agentes. Ningún agente existe sin una vinculación explícita a una persona o entidad jurídica que asume la responsabilidad. DCP-01 define los artefactos que vinculan la identidad del agente con la identidad humana.
Artefactos normativos¶
| Artefacto | Descripción | Esquema |
|---|---|---|
| Responsible Principal Record (RPR) | Registro que declara quién es la persona u organización, la jurisdicción, el modo de responsabilidad y la validez. | schemas/v1/responsible_principal_record.schema.json |
| Agent Passport (AP) | Pasaporte del agente: identidad, clave pública, referencia al RPR, estado (active/revoked/suspended). | schemas/v1/agent_passport.schema.json |
| Revocation Record | Registro de la revocación de un agente: quién revoca, cuándo y por qué. | schemas/v1/revocation_record.schema.json |
$id de los esquemas: https://dcp-ai.org/schemas/v1/<name>.schema.json
Validación¶
Valida un objeto contra su esquema:
dcp validate schemas/v1/responsible_principal_record.schema.json <hbr.json>
dcp validate schemas/v1/agent_passport.schema.json <ap.json>
dcp validate schemas/v1/revocation_record.schema.json <revocation.json>
Un Citizenship Bundle (que incluye el RPR y el AP) se valida con:
Ejemplos¶
- tests/conformance/examples/responsible_principal_record.json
- tests/conformance/examples/agent_passport.json
La fuente de verdad para los campos y los enums es el JSON Schema; este documento es la especificación normativa que los referencia.
Atestación de jurisdicción (opcional)¶
Una atestación de jurisdicción es un objeto opcional que certifica que el Responsible Principal Record de un agente es válido en una jurisdicción concreta. La produce una autoridad de la jurisdicción (gobierno, organismo regulador o emisor acreditado) y puede incluirse en el Signed Bundle o presentarse junto a él.
Formato del objeto¶
{
"type": "jurisdiction_attestation",
"issuer": "authority-us-ai-registry",
"jurisdiction": "US",
"rpr_hash": "sha256:<hex>",
"agent_id": "agent-uuid-here",
"attested_at": "2026-02-07T00:00:00Z",
"expires_at": "2027-02-07T00:00:00Z",
"signature": {
"alg": "ed25519",
"public_key_b64": "...",
"sig_b64": "..."
}
}
Campos¶
| Campo | Tipo | Descripción |
|---|---|---|
type |
string | Siempre "jurisdiction_attestation". |
issuer |
string | Identificador de la autoridad emisora. |
jurisdiction |
string | Código de país ISO 3166-1 alfa-2 (p. ej., "US", "EU", "JP"). |
rpr_hash |
string | sha256:<hex> — SHA-256 del JSON canónico del Responsible Principal Record que se atesta. |
agent_id |
string | El agent_id del Agent Passport. |
attested_at |
string | Fecha y hora ISO 8601 en que se emitió la atestación. |
expires_at |
string o null | Fecha y hora ISO 8601 en que caduca la atestación; null si no caduca. |
signature |
object | Firma Ed25519 sobre el JSON canónico de todos los campos salvo el propio signature. alg, public_key_b64, sig_b64. |
Cómo funciona¶
- El creador del agente (o quien lo tiene) calcula
rpr_hash= SHA-256(canonical(responsible_principal_record)). - El creador envía
rpr_hash+agent_idal servicio de atestación de la jurisdicción (o a un proceso presencial o fuera de línea). - La autoridad verifica el RPR (identidad, jurisdicción, validez) y firma la atestación.
- La atestación se devuelve a quien tiene el agente y se guarda junto al Signed Bundle o dentro de él.
Verificación¶
Un verificador comprueba la atestación:
- Calculando
rpr_hasha partir delresponsible_principal_recorddel bundle y comparándolo con elrpr_hashde la atestación. - Verificando la firma Ed25519 con la clave pública del emisor (obtenida de la URL well-known de la jurisdicción o de un conjunto de confianza de claves de emisores).
- Comprobando que
attested_atestá en el pasado y queexpires_atesnullo está en el futuro.
Véase el paso 10 de VERIFICATION.md.
Claves públicas de los emisores¶
El protocolo sugiere (pero no impone) que las jurisdicciones publiquen sus claves públicas de atestación en una URL well-known:
https://<authority>/.well-known/dcp-attestation-keys.json
Formato:
{
"issuer": "authority-us-ai-registry",
"jurisdiction": "US",
"keys": [
{ "key_id": "key-2026-01", "public_key_b64": "...", "valid_from": "2026-01-01T...", "valid_until": "2027-01-01T..." }
]
}
Es una convención; cualquier método de distribución de las claves de los emisores es aceptable (entre pares, registro, URL well-known, etc.).
Lista de revocación jurisdiccional¶
Una jurisdicción puede publicar una lista de revocación firmada: un archivo JSON que enumera los agentes revocados en esa jurisdicción. Véase docs/STORAGE_AND_ANCHORING.md para el formato, la convención de publicación y cómo la usan los verificadores.
Referencia¶
- Lista de verificación: VERIFICATION.md
- Almacenamiento y anclaje (listas de revocación, registro de transparencia): docs/STORAGE_AND_ANCHORING.md
Notas de implementación (informativas)¶
Añadidas el 25/10/2026. No normativas. Estas notas no añaden ningún requisito ni cambian nada de lo anterior: describen cómo se relaciona el código de referencia de
maincon este texto. Donde difieren, prevalece el texto normativo anterior.
- Los artefactos y los comandos anteriores son los V1 (
schemas/v1/). El RPR y el pasaporte V2 (schemas/v2/, especificados en DCP-AI v2.0) llevan listas de claves (binding_keys,keys), unsession_noncey firmas compuestas en sobresSignedPayload; el pasaporte V2 añade los estados de ciclo de vida de DCP-05 y unemergency_revocation_tokenopcional. <hbr.json>,<ap.json>y los demás nombres entre ángulos son marcadores de posición para tus propios archivos.- El objeto de atestación de jurisdicción mostrado arriba no tiene JSON Schema V1.
schemas/v2/jurisdiction_attestation.schema.jsondefine una forma V2 que exigedcp_versiony uncomposite_sigy, conadditionalProperties: false, no permite el miembrosignaturemostrado arriba. Los verificadores de referencia (lib/verify.js, los verificadores de los SDK,dcp verify-bundle) no comprueban atestaciones; un verificador que las usa realiza él mismo las comprobaciones de esta sección. - Tanto
schemas/v1/signed_bundle.schema.jsoncomoschemas/v2/signed_bundle.schema.jsonsolo permitenbundleysignature(additionalProperties: false). Con las formas actuales, una atestación viaja junto al Signed Bundle, presentada por separado; añadirla como miembro adicional hace que el Signed Bundle no supere la validación contra el esquema.