Manifiestos de ingredientes C2PA: revisión explícita y recursiva
Conserva el archivo y delimita la revisión
Guarda el activo exacto sin editar antes de abrirlo en un validador compatible con C2PA. Anota nombre o URL de origen, hora de obtención, validador y versión, label del active manifest y salida completa. Conserva todo junto al archivo. Esta hoja es una propuesta operativa del artículo, no un formato exigido por C2PA.
Limita la pregunta: si el validador procesó cada ingredient assertion pertinente, siguió los ingredient manifests referenciados y devolvió los validation results registrados. Un ingredient manifest describe relaciones de procedencia dentro de un linaje C2PA. No confirma el pie, el hablante, el lugar, la captura ni la veracidad del suceso mostrado.
Revisa la validación explícita antes del recorrido
C2PA 2.2 exige el field relationship en una ingredient assertion. Sus valores permitidos son parentOf, inputTo y componentOf; si falta o contiene otro valor, corresponde assertion.ingredient.malformed. Copia el valor exacto. No lo repares en la copia ni deduzcas la relación por el nombre del archivo.
En un standard manifest, el validador revisa cada ingrediente cualquiera que sea su relationship. En un update manifest, revisa el ingrediente parentOf. Los time-stamp manifests encontrados dentro de un ingrediente se ignoran porque esa función quedó obsoleta frente a la time-stamp assertion. Separa los tres casos en el registro.
Usa una fila por ingredient assertion. Guarda manifest label, URI, relationship, referencias activeManifest y claimSignature, presencia de validationResults y los códigos success, informational o failure realmente devueltos. Un único pass/fail oculta qué field o tramo del linaje causó el resultado.
Recorre recursivamente todos los manifests referenciados
La especificación exige validar recursivamente todos los ingredient manifests del activo. Propone depth-first search, aunque permite otra implementación con resultados equivalentes. El validador reúne los hashed_uri de ingredient manifests de todo el linaje y, por separado, los JUMBF URI de redacted assertions.
En cada manifest localiza el claim, revisa las redactions y resuelve el hashed URI de cada ingredient assertion. Si la URI no se resuelve, el hash no coincide o los JUMBF Content boxes contienen solo ceros, el algoritmo pasa a la assertion siguiente. Conserva la salida completa y no inventes un código que el validador no mostró.
Con activeManifest, o c2pa_manifest en assertions version 1 o 2, registra las referencias al manifest y a la claim signature y continúa dentro de ese manifest. Sin ese field, devuelve ingredient.unknownProvenance, salvo cuando relationship es inputTo, y sigue con las demás assertions. Registra juntos la presencia del field y la relationship.
Concilia los resultados nuevos con validationResults
Si hay redacted assertions con el mismo manifest label, el validador usa claim-signature hash validation. Sin una redaction coincidente, puede usar manifest hash validation o claim-signature hash validation. Anota el método informado.
El método de claim signature comprueba la signature box y su hash, además de claim signature, time-stamp, revocación de credenciales y assertions no redactadas; no evalúa los hard bindings del ingrediente. El método de manifest resuelve y calcula el hash del ingredient manifest y puede emitir ingredient.manifest.validated cuando coincide.
Cuando existe validationResults, el validador devuelve entradas registradas ausentes de la ejecución nueva y entradas nuevas ausentes del field. Una ingredient assertion version 3 con activeManifest pero sin validationResults produce assertion.ingredient.malformed. Separa resultados registrados y nuevos antes de conciliarlos. Ignora manifests adicionales que no figuren en la lista compilada de ingredient manifests.
Separa procedencia y detección de medios
El expediente final debe incluir activo, validador y versión, cada relationship, ruta recursiva, método usado, resultados registrados y nuevos, redactions, referencias pendientes y decisión. Otra persona debe poder repetir la ruta sin adivinar qué copia se revisó.
Si analizas el archivo con DeepFakeCheck, guarda la señal probabilística aparte. La detección automática puede producir falsos positivos sobre medios auténticos y falsos negativos sobre medios sintéticos o alterados. DeepFakeCheck no sustituye al validador C2PA ni emite estos códigos.
Un resultado correcto respalda una conclusión limitada sobre los registros y referencias revisados; un fallo identifica un problema técnico. Ninguno demuestra que el suceso mostrado sea real o falso. Contrasta esas afirmaciones con la publicación original y fuentes independientes.
Fuentes
- C2PA, “C2PA Technical Specification, Validate the Ingredients”: https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_validate_the_ingredients
¿Necesitas comprobar un archivo sospechoso?
Abre el detector adecuado y combina el resultado con la fuente y el contexto.
Abrir detector