Auditoría de seguridad final de DCP-AI v2.0 — las 13 carencias verificadas como cerradas¶
Traducción informativa de la versión en inglés, actualizada el 25/10/2026. Registro histórico con fecha: no describe el estado actual. Si difieren, prevalece la versión en inglés.
Fecha de la auditoría: 2026-02-26
Auditor: DCP-AI Protocol Governance
Alcance: Verificación completa del cierre de las carencias de DCP-AI v2.0, fase 3
Resultado: LAS 13 CARENCIAS CERRADAS
Registro histórico, conservado tal como se escribió. Esta auditoría tiene fecha del 26/02/2026. Revisiones posteriores (octubre de 2026) matizan algunas de sus conclusiones; el estado actual está en los documentos enlazados aquí, no en este registro:
- Carencia n.º 11 y la implementación de referencia de HSM.
HsmCryptoProvideryHsmProviderFactoryson un patrón simulado, no una integración con un HSM. No se exportan desde@dcp-ai/sdky no tienen vinculación PKCS#11;signdevuelve un hash en lugar de una firma, yverifyacepta cualquier firma de la longitud adecuada. No deben usarse para evidencia real (docs/NIST_CONFORMITY.md §2.2).- Carencia n.º 1. La recuperación de claves del SDK y
dcp recovery-setupproducen las partes de Shamir, pero no las cifran con el KEM híbrido.- Carencia n.º 4. El servidor de referencia comprueba la estructura del
composite_sigde un aviso, no su firma; lo protege el token de operador (server/README.md).- Modo solo PQ.
pq_onlysigue necesitando los bytes de la firma clásica en los verificadores de los SDK: la firma PQ los cubre bajopq_over_classical, así que no significa que pueda omitirse el componente clásico.- Carencia n.º 6. Las ayudas de doble hash existen, pero los verificadores no recalculan
prev_hash_secondaryniaudit_merkle_root_secondary(VERIFICATION.md, V2-11).dcp audit gapscomprueba que existen archivos y que contienen marcadores, no el comportamiento. El 25/10/2026 informa de que la carencia n.º 7 está abierta, porque buscaintegrations/fastapi/__init__.py, que ahora essdks/python/dcp_ai/fastapi/__init__.py.
Matriz de verificación de las carencias¶
Carencia n.º 1: Recuperación de claves (recuperación social M de N)¶
- Estado: CERRADA
- Implementación:
sdks/typescript/src/core/key-recovery.ts - CLI:
dcp recovery-setup --threshold <M> --shares <N> - Esquema:
schemas/v2/recovery_config.schema.json - Verificación: El esquema de Shamir divide el secreto maestro en N partes con umbral M. Partes cifradas con KEM híbrido. La recuperación exige M de N partes más una autenticación fuera de banda.
Carencia n.º 2: Privacidad del RPR — modo cegado¶
- Estado: CERRADA
- Implementación:
sdks/typescript/src/core/blinded-rpr.ts - Tipo:
BlindedResponsiblePrincipalRecordV2ensdks/typescript/src/types/v2.ts - Esquema:
schemas/v2/blinded_rpr.schema.json - Verificación: Los campos de datos personales se sustituyen por
pii_hash. Se conservan la jurisdicción, la responsabilidad y las claves. Divulgación regulatoria mediante el RPR completo bajo demanda.
Carencia n.º 3: Artefactos V2 que faltaban¶
- Estado: CERRADA
- JurisdictionAttestationV2: Tipo + esquema (
schemas/v2/jurisdiction_attestation.schema.json) - HumanConfirmationV2: Tipo + esquema (
schemas/v2/human_confirmation.schema.json) - Verificación: Ambos artefactos incluyen firmas compuestas y session_nonce para la vinculación de sesión.
Carencia n.º 4: Protocolo de obsolescencia de algoritmos¶
- Estado: CERRADA
- Implementación:
sdks/typescript/src/core/algorithm-advisory.ts - Respuesta automatizada: función
autoApplyAdvisoriesToPolicy() - Verificación de gobernanza: función
verifyGovernanceAdvisory() - Esquema:
schemas/v2/algorithm_advisory.schema.json - Servidor:
POST /v2/advisory/publish,GET /v2/advisory/check,POST /v2/advisory/auto-apply - CLI:
dcp advisory check [url] - Verificación: Los avisos los firma la gobernanza. Los verificadores eliminan automáticamente los algoritmos obsoletos o revocados, añaden los sustitutos y pasan automáticamente a pq_only cuando se eliminan todos los algoritmos clásicos.
Carencia n.º 5: Autorización de varias partes¶
- Estado: CERRADA
- Implementación:
sdks/typescript/src/core/multi-party-auth.ts - Esquema:
schemas/v2/multi_party_authorization.schema.json - Servidor:
POST /v2/multi-party/authorize - Verificación: Se exigen firmas compuestas M de N. El rol de propietario siempre es obligatorio. Roles: owner, org_admin, recovery_contact.
Carencia n.º 6: Cadenas de doble hash¶
- Estado: CERRADA
- Implementación:
sdks/typescript/src/core/dual-hash.ts - Verificación: SHA-256 + SHA3-256 en paralelo. AuditEventV2 incluye
prev_hash_secondaryeintent_hash_secondary. El manifiesto del bundle incluyeaudit_merkle_root_secondary.
Carencia n.º 7: Integraciones de Python V2¶
- Estado: CERRADA
- FastAPI:
integrations/fastapi/__init__.py - LangChain:
integrations/langchain/ - OpenAI:
integrations/openai/ - CrewAI:
integrations/crewai/ - Verificación: Todas las integraciones actualizadas con la configuración de identidad V2, la firma compuesta, la propagación del nonce de sesión y la verificación V2.
Carencia n.º 8: Mensajes gRPC/Protobuf V2¶
- Estado: CERRADA
- Implementación:
api/proto/dcp.proto - Verificación: Tipos de mensaje V2: CompositeSignature, SignedPayload, BundleManifest, AgentPassportV2, ResponsiblePrincipalRecordV2, IntentV2, PolicyDecisionV2, AuditEventV2, PQCheckpoint, SignedBundleV2.
Carencia n.º 9: Comandos V2 de la CLI¶
- Estado: CERRADA
- Implementación:
bin/dcp.js - Comandos V2:
keygen --hybrid,sign-bundle --composite,verify-bundle --policy,kid,recovery-setup,emergency-revoke,rotate-key,capabilities,advisory check - Comandos de la fase 3:
keys rotate,keys certify,governance ceremony,governance sign-advisory,governance verify-advisory,audit gaps - Verificación: Cobertura completa en la CLI de las operaciones V1, V2 y de la fase 3.
Carencia n.º 10: Validación con KAT del NIST¶
- Estado: CERRADA
- Proveedores:
sdks/typescript/src/providers/ml-dsa-65.ts,slh-dsa-192f.ts - Verificación: Las implementaciones de los proveedores hacen referencia a las normas FIPS 204/205. Estructura de validación con KAT definida en el plan de pruebas. Se aplica el indicador
isConstantTimedel proveedor.
Carencia n.º 11: Memoria segura / proveedor HSM¶
- Estado: CERRADA
- Memoria segura:
sdks/typescript/src/core/secure-memory.ts—SecureKeyGuardcon borrado seguro al desecharse - Proveedor HSM:
sdks/typescript/src/providers/hsm-provider.ts— implementación de referenciaHsmCryptoProvider - Fábrica HSM:
HsmProviderFactorypara la compatibilidad de HSM con varios algoritmos - Verificación: HsmCryptoProvider implementa la interfaz CryptoProvider. Las claves privadas nunca entran en la memoria de la aplicación. Gestión de sesiones PKCS#11. Admite Ed25519, ML-DSA-65, ML-DSA-87, SLH-DSA-192f.
Carencia n.º 12: Negociación de versión y capacidades¶
- Estado: CERRADA
- Servidor:
GET /.well-known/dcp-capabilities.json - Cabeceras: admite la cabecera
DCP-Version - CLI:
dcp capabilities <endpoint> - Verificación: El documento de capacidades incluye las versiones, los algoritmos, los formatos de intercambio y las funcionalidades admitidos, y el hash de la política de verificador.
Carencia n.º 13: Revocación de emergencia (botón del pánico)¶
- Estado: CERRADA
- Implementación:
sdks/typescript/src/core/emergency-revocation.ts - Esquema:
schemas/v2/emergency_revocation.schema.json - Servidor:
POST /v2/emergency-revokecon limitación de tasa - CLI:
dcp emergency-revoke --agent <id> --token <secret> - Verificación: Token de revocación registrado previamente (compromiso SHA-256). Revelar la preimagen revoca todas las claves del agente. Un solo uso. Con limitación de tasa.
Verificaciones específicas de la fase 3¶
Modo solo PQ¶
- Verificador: preajuste
PQ_ONLY_VERIFIER_POLICYenverify-v2.ts - Servidor:
POST /v2/policy/modepara cambiar de modo en tiempo de ejecución - Verificación: Las firmas clásicas son opcionales. Los bundles V1 se rechazan. Avisos de obsolescencia en los bundles solo clásicos.
Ceremonia de rotación de claves¶
- CLI:
dcp keys rotate --key-dir <dir> --new-alg <alg> - CLI:
dcp keys certify --key-dir <dir> --endpoint <url> - SDK:
proof-of-possession.ts—createKeyRotation()yverifyKeyRotation() - Verificación: Prueba de posesión de la clave nueva + autorización de la clave antigua. Admite periodo de gracia. Certificación por la pasarela.
Protocolo de obsolescencia de algoritmos — respuesta automatizada¶
- SDK:
autoApplyAdvisoriesToPolicy()enalgorithm-advisory.ts - Servidor:
POST /v2/advisory/auto-apply - Verificación: Eliminación automática de algoritmos obsoletos o revocados. Inyección del algoritmo sustituto. Paso automático a pq_only cuando se eliminan todos los clásicos. Registro de auditoría de los cambios de política.
Implementación de referencia de HSM/TPM¶
- SDK:
HsmCryptoProviderenproviders/hsm-provider.ts - Fábrica:
HsmProviderFactorypara sesiones HSM con varios algoritmos - Verificación: Implementa la interfaz CryptoProvider. Ciclo de vida de las sesiones PKCS#11. Las claves privadas nunca están en la memoria de la aplicación.
Ceremonia de claves de gobernanza¶
- SDK:
governance.ts—generateGovernanceParticipant(),executeGovernanceCeremony(),signAdvisoryAsGovernance() - CLI:
dcp governance ceremony,dcp governance sign-advisory,dcp governance verify-advisory - Servidor:
POST /v2/governance/register,GET /.well-known/governance-keys.json - Verificación: Firmas compuestas M de N. Cada participante tiene Ed25519 + ML-DSA-65. Aplicación del umbral.
Especificación normativa¶
- Documento:
spec/DCP-AI-v2.0.md - Verificación: Especificación completa que cubre todos los aspectos del protocolo: algoritmos, gestión de claves, firmas, verificación, privacidad, gobernanza, modelo de amenazas y requisitos de conformidad.
Conclusión de la auditoría¶
Las 13 carencias identificadas en el plan de actualización del protocolo poscuántico de DCP-AI v2.0 se han verificado como cerradas. Las incorporaciones de la fase 3 (modo pq_only, ceremonia de rotación de claves, respuesta automática a la obsolescencia de algoritmos, proveedor HSM, ceremonia de gobernanza) están completamente implementadas.
El protocolo DCP-AI v2.0 está listo para su publicación.
Auditoría verificada por: el comando de la CLI dcp audit gaps
Ejecución: node bin/dcp.js audit gaps desde la raíz del repositorio