Guías

Cómo verificar las Credenciales de Contenido de una imagen

Cuatro formas de leer y verificar un manifiesto C2PA, desde una zona de arrastre en el navegador hasta la línea de comandos, y qué puede y no puede mostrar cada una.

Opción 1: herramientas en línea

Arrastra la imagen a la página principal de AuditImage y en segundos ves el generador del manifiesto, el certificado del firmante, las acciones y los ingredientes. AuditImage analiza la estructura JUMBF completa incluyendo afirmaciones codificadas en CBOR, verifica la firma, el enlace de hash de contenido, los hashes de afirmaciones y la cadena de certificados contra la lista de confianza C2PA, y coteja C2PA contra EXIF y XMP. El token de marca de tiempo se reporta como presente pero no se verifica.

Para una verificación estricta de firma usa verify.contentauthenticity.org, el sitio oficial de CAI. Verifica la firma, la cadena de certificados y el hash de contenido y muestra el estado de la lista de confianza.

Opción 2: extensión del navegador

La Chrome Web Store tiene una extensión "C2PA Content Credentials" que inspecciona cualquier imagen web desde el menú contextual. Chrome está integrando la verificación C2PA en el navegador y Google Search, donde las imágenes con credenciales reciben una etiqueta.

Opción 3: línea de comandos

c2patool es la implementación de referencia de C2PA, escrita en Rust y multiplataforma:

c2patool photo.jpg              # resumen del manifiesto como JSON
c2patool photo.jpg --detailed   # afirmaciones, ingredientes, enlaces de hash, resultado de firma
c2patool photo.jpg --tree       # árbol de manifiestos

exiftool también lee JUMBF:

exiftool -a -G1 -s -JUMBF:all photo.jpg
exiftool -v3 photo.jpg | grep APP11   # confirmar que APP11 existe y si está dividido

Opción 4: leer los bytes tú mismo

En un JPEG, el manifiesto vive en segmentos APP11 (marcador FF EB). La carga útil comienza con JP, luego un número de instancia de cuadro de 2 bytes, un número de secuencia de paquete de 4 bytes, luego la longitud del cuadro JUMBF y el tipo jumb. Los manifiestos de más de 64 KB se dividen en varios segmentos APP11 y se reensamblan por número de secuencia. En un PNG, lee el bloque caBX directamente.

Qué revisar al verificar

  1. Quién firmó. Un asunto de certificado de Adobe Inc. y uno de "C2PA Test Signing Cert" son cosas muy diferentes. Un manifiesto firmado con un certificado de prueba es estructuralmente válido pero nadie lo avala.
  2. La lista de confianza. CAI mantiene una lista de firmantes conocidos. Un certificado fuera de la lista no es necesariamente falso, pero debes juzgarlo tú mismo.
  3. Si el hash de contenido coincide. Solo cuando c2pa.hash.data coincide con el contenido real de la imagen sabes que la imagen no fue cambiada después de la firma.
  4. Qué dice el manifiesto activo. Varios ciclos de edición producen varios manifiestos; el último es el activo. Sus c2pa.actions indica si fue c2pa.created o c2pa.edited, y si el tipo de fuente es digitalCapture o trainedAlgorithmicMedia.

Resultados típicos

  • Firma válida, fabricante de cámara como firmante, tipo de fuente digitalCapture: directamente de la cámara.
  • Firma válida, OpenAI o Adobe como firmante, tipo de fuente trainedAlgorithmicMedia: generado por IA, y el generador así lo declaró.
  • Firma válida, pero un ingrediente es generado por IA: un compuesto; revisa las acciones específicas.
  • Manifiesto presente pero firma inválida: la imagen fue modificada después de la firma, o el manifiesto fue trasplantado de otra imagen.