Computación · Procedencia

El truco que rompió C2PA

Un manifiesto válido que no decía nada: cómo una característica del estándar permitió firmar el vacío — y qué nos enseña.

Autor: Juan Carlos Euyoque Aguilera · 7 de octubre de 2026 · CC BY 4.0

C2PA (Coalition for Content Provenance and Authenticity) es el estándar de la industria para credenciales de contenido: manifiestos firmados que declaran quién creó un archivo y qué ediciones tuvo. El 2 de octubre de 2026, David Buchanan demostró públicamente que el estándar tenía un agujero estructural.

Esta página resume el episodio con fuentes enlazadas; nada aquí reproduce el contenido del blog original.

Qué pasó [DATO]

  • [DATO] El estándar permite declarar rangos de bytes excluidos del hash (pensado para casos legítimos, como miniaturas o metadatos). Nada impedía excluir el archivo entero: Buchanan firmó un manifiesto que excluía 3.995.383 bytes — todo el archivo.
  • [DATO] El hash firmado resultante es el SHA-256 de la entrada vacía. El timestamp RFC 3161 seguía siendo válido. Resultado: una "prueba" de conocimiento previo (los números del EuroMillones) que pasaba todas las verificaciones sin decir nada sobre ningún archivo.
  • [DATO] El problema se conocía desde junio de 2025 (Neal Krawetz lo listó como "Large exclusion range") y seguía sin mitigación en octubre de 2026.

Fuente: David Buchanan, "How to Hack Time, With C2PA" (2 oct 2026).

El fix en la mesa [DATO]

Buchanan propuso lo obvio y correcto: listas explícitas, por formato, de qué rangos pueden excluirse — impuestas por los verificadores, no declaradas por el firmante. El principio: el verificador debe saber qué está permitido, no solo qué se declaró.

[MITO] C2PA te dice si una imagen es real.

C2PA ata declaraciones de procedencia a un archivo; no dice si el contenido es verdad. Y con este agujero, ni siquiera la declaración estaba garantizada: la firma era válida sobre nada.

Por qué nos importa

  • [DATO] La capa 1 del Método Origen hashea los bytes del contenido: no hay manifiesto entre el hash y el archivo, no hay exclusiones. Este fallo no existe por construcción — para falsificarla habría que romper SHA-256, no explotar una característica del spec.
  • [DATO] El episodio nos hizo leer nuestro propio verificador como adversarios, y encontramos un punto suave: avisaba de archivos no registrados sin fallar. Ya está en la lista de endurecimiento del método.

Matices honestos

  • No absuelve nuestra capa 3: los calendarios públicos de OpenTimestamps son terceros, y esa dependencia sigue en pie — por eso existe el plan del calendario propio.
  • Alcances distintos: C2PA ata autoría y ediciones; Origen ata existencia e integridad. Hacemos menos, pero sin el agujero.
  • El fix puede llegar: si C2PA adopta las listas explícitas, el contraste se debilita. Lo decimos hoy, por construcción — no como superioridad eterna.
  • No buscamos guerra: un estándar de claims puede convivir con una capa de anclaje mínima debajo. Hasta podríamos anclar los bytes de un manifiesto C2PA ajeno.

Fuentes: Buchanan (oct 2026) · c2pa.org (sitio del estándar).