PROPOSITION — Aucune approbation institutionnelle ni adoption formelle. Travail indépendant de Cariboo Signals, ouvert à la critique et aux contributions communautaires.

Qu'est-ce que C2PA ?

La Coalition for Content Provenance and Authenticity (C2PA) est une norme technique ouverte permettant d'associer des données de provenance vérifiables aux fichiers multimédias. Elle a été développée par Adobe, Microsoft, BBC, Intel, Sony et Truepic, et est maintenant gérée par un groupe de travail sous l'égide de la Joint Development Foundation.

C2PA fonctionne en intégrant un manifeste dans les données binaires d'un fichier. Le manifeste contient des assertions — des blocs de données structurées qui décrivent des faits sur le contenu. Le manifeste est signé avec un certificat cryptographique, de sorte que toute modification du fichier après la signature peut être détectée.

TRACE définit un type d'assertion personnalisé — trace.assessment — que les producteurs ajoutent à un manifeste C2PA aux côtés des assertions standard, comme la divulgation de génération IA (c2pa.ai.generative_training_and_inference), les vignettes et les données EXIF.

Structure du manifeste C2PA
Manifeste C2PAIntégré dans les données binaires du fichier
├─
claim_generatorOutil ayant créé ce manifeste
├─
assertions[ ]Un ou plusieurs blocs de données
│  ├─
c2pa.ai.generative_training_and_inferenceDivulgation IA standard
│  ├─
c2pa.exifMétadonnées EXIF standard
│  └─
trace.assessment← Assertion TRACE
└─
signatureChaîne de certificats cryptographiques

L'étiquette trace.assessment

C2PA identifie les types d'assertion par une chaîne d'étiquette. L'étiquette de l'assertion TRACE est :

Étiquette d'assertion C2PA
trace.assessment
Cette étiquette identifie de manière unique toutes les assertions de responsabilité TRACE dans tout manifeste C2PA.

La dénomination des étiquettes suit les conventions C2PA : un préfixe de domaine fournisseur (trace) suivi d'un point et d'un nom descriptif (assessment). L'étiquette est sensible à la casse et doit être utilisée exactement telle quelle.

Enregistrement : Le type d'assertion trace.assessment est soumis à l'enregistrement auprès du registre d'assertions C2PA. En attendant la confirmation de l'enregistrement, il fonctionne comme une assertion personnalisée avec l'étiquette complète comme identifiant. Les assertions personnalisées sont entièrement prises en charge par tous les outils conformes à C2PA.

Champs de données dans trace.assessment

L'objet data d'une assertion trace.assessment contient la charge utile de l'évaluation TRACE. Les noms de champs et la sémantique sont identiques à la spécification JSON-LD ; c'est le même modèle de données dans un conteneur différent.

Objet de données de l'assertion
{
  // Identification de l'assertion
  "specVersion":          "1.0",
  "@context":             "https://tracestandard.org/schema/v1",

  // Identification du contenu
  "contentTitle":          "chaîne, requis",
  "contentType":           "podcast|article|video|image|audio|document|other",

  // Producteur et communauté
  "producer":              "chaîne, requis",
  "communityRepresented":  "chaîne, requis",

  // Divulgation IA
  "aiGenerated":           boolean,
  "aiTools":               ["chaîne"],
  "aiRole":                "primary|partial|assisted|none",

  // Métadonnées d'évaluation
  "assessmentDate":        "YYYY-MM-DD, requis",
  "assessedBy":            "self|third-party|nom",
  "nextReviewDate":        "YYYY-MM-DD",

  // Voie et disqualification
  "track":                 "A|B, requis",
  "disqualified":          boolean, requis,
  "disqualifierTriggered": "DQ1|DQ2",

  // Scores (omettre si disqualifié)
  "scores": {
    "transparence":         { "score": entier, "max": entier },
    "representation":       { "score": entier, "max": entier },
    "autonomie":             { "score": entier, "max": entier },
    "consentement":          { "score": entier, "max": entier },
    "engagement":            { "score": entier, "max": entier },
    "divulgationBase":       { "score": entier, "max": entier },
    "beneficeStructurel":    { "score": entier, "max": entier },
    "droitsDonnees":         { "score": entier, "max": entier }
    // beneficeStructurel, droitsDonnees : Voie B seulement
  },

  // Totaux et verdict (omettre si disqualifié)
  "totalScore":            entier, requis,
  "maxScore":              entier, requis,
  "verdict":               "chaîne, requis — voir valeurs de verdict",

  // Références
  "cardURL":               "URI vers la fiche d'évaluation TRACE"
}
ChampStatutNotes
specVersionrequisToujours "1.0" pour cette version. Utilisé par les consommateurs pour gérer l'évolution du schéma.
@contextrequisDoit être "https://tracestandard.org/schema/v1". Lie cette assertion au schéma canonique.
contentTitlerequisTitre du contenu. Peut différer du nom de fichier.
producerrequisNom du producteur sous forme de chaîne. Dans C2PA, l'identité du producteur est également capturée dans les champs claim_generator et ingredient du manifeste ; ce champ est la version spécifique à TRACE.
communityRepresentedrequisDescription libre de la communauté sur laquelle ou par laquelle le contenu est produit.
assessmentDaterequisDate ISO 8601 : YYYY-MM-DD. Devrait être proche de la date de signature du manifeste.
trackrequis"A" ou "B".
disqualifiedrequistrue ou false. Lorsque true, omettre scores, totalScore, maxScore et verdict.
totalScore, maxScorerequisRequis lorsque disqualified est false.
verdictrequisRequis lorsque disqualified est false. Voir Valeurs de verdict.
scores, aiGenerated, aiTools, aiRole, assessedBy, nextReviewDate, disqualifierTriggered, cardURLoptionnelMême sémantique que la spécification JSON-LD. Inclure autant que applicable.

Manifeste C2PA complet avec assertion TRACE

Cet exemple montre comment une assertion trace.assessment se place aux côtés des assertions C2PA standard dans un manifeste complet. Le format présenté est la représentation JSON équivalente du format binaire C2PA JUMBF, pour faciliter la lecture.

c2pa-manifeste-avec-trace.json — représentation JSON
{
  "claim_generator": "Cariboo Signals Publishing Tool/1.0",
  "format": "audio/mpeg",
  "title": "Ép. 12 : Droits sur l'eau dans le Chilcotin",

  "assertions": [

    // Divulgation IA C2PA standard
    {
      "label": "c2pa.ai.generative_training_and_inference",
      "data": {
        "dataTypes": [
          { "type": "trainedAlgorithmicData" }
        ]
      }
    },

    // Informations de création C2PA standard
    {
      "label": "c2pa.created",
      "data": {
        "dateTime": "2026-05-15T09:00:00-07:00",
        "actors": [{ "name": "Cariboo Signals" }]
      }
    },

    // ─── Assertion TRACE ──────────────────────────────────
    {
      "label": "trace.assessment",
      "data": {
        "specVersion": "1.0",
        "@context": "https://tracestandard.org/schema/v1",
        "contentTitle": "Ép. 12 : Droits sur l'eau dans le Chilcotin",
        "contentType": "podcast",
        "producer": "Cariboo Signals",
        "communityRepresented": "Nation Tsilhqot'in; Cariboo rural, C.-B.",
        "aiGenerated": true,
        "aiTools": ["Claude", "ElevenLabs"],
        "aiRole": "partial",
        "assessmentDate": "2026-05-15",
        "assessedBy": "self",
        "track": "A",
        "disqualified": false,
        "scores": {
          "transparence":    { "score": 4, "max": 5 },
          "representation":  { "score": 3, "max": 4 },
          "autonomie":        { "score": 2, "max": 3 },
          "consentement":     { "score": 3, "max": 4 },
          "engagement":       { "score": 2, "max": 3 },
          "divulgationBase":  { "score": 2, "max": 2 }
        },
        "totalScore": 16,
        "maxScore": 21,
        "verdict": "Solide",
        "cardURL": "https://tracestandard.org/cards/cariboo-ep12"
      }
    }
    // ─────────────────────────────────────────────────────

  ],

  "signature": {
    "alg": "Es256",
    // ... chaîne de certificats tronquée pour la lisibilité
  }
}
Important : Le JSON ci-dessus est une représentation lisible par l'humain. Les manifestes C2PA réels sont intégrés au format binaire JUMBF (JPEG Universal Metadata Box Format) dans le fichier. Utilisez les outils C2PA listés ci-dessous — ne tentez pas de modifier manuellement des fichiers binaires.

Où peut-on intégrer C2PA

Les manifestes C2PA peuvent être intégrés dans une liste croissante de types de fichiers. La prise en charge varie selon l'outil. Types confirmés :

JPEG / JPEG XL PNG WebP HEIC / HEIF GIF MP4 MOV AVI MP3 M4A WAV FLAC PDF SVG TIFF DNG
Audio pour les balados : MP3 et M4A (AAC) sont pris en charge. L'assertion TRACE peut être intégrée directement dans le fichier audio, de sorte que les données de responsabilité sont portées dans le fichier joint lui-même — et non uniquement dans le flux ou la page de l'émission. C'est l'option la plus durable pour les épisodes de balados.

Ajouter une assertion TRACE à un fichier

Plusieurs outils permettent d'ajouter des manifestes C2PA avec des assertions personnalisées. L'objet data de l'assertion TRACE est du JSON valide, donc tout outil acceptant des données d'assertion personnalisées peut l'intégrer.

CLI · Open Source
c2patool
L'outil C2PA en ligne de commande open source officiel de Contentauth. Accepte un fichier manifeste JSON ; prend en charge tous les types de fichiers ; fonctionne sur macOS, Linux et Windows. Meilleur choix pour les flux de travail scriptés ou en lot.
github.com/contentauth/c2patool
SDK Rust · Open Source
c2pa-rs
La bibliothèque C2PA de référence en Rust, avec des liaisons Python et JavaScript. À utiliser pour intégrer directement l'assertion TRACE dans un pipeline de publication ou un SGC. Prend en charge toutes les fonctionnalités du manifeste, y compris les assertions personnalisées.
github.com/contentauth/c2pa-rs
Application Web · Adobe
Content Credentials
L'outil web Content Credentials d'Adobe. Prend en charge la création de manifestes de base pour les images. Ne prend actuellement pas en charge les données d'assertion personnalisées arbitraires — utiliser c2patool pour les assertions TRACE.
contentcredentials.org
SDK JavaScript · Open Source
c2pa-node / c2pa-js
Liaisons JavaScript vers c2pa-rs. À utiliser pour intégrer des assertions TRACE dans un flux de travail de publication Node.js, ou pour vérifier des assertions côté navigateur. Prend en charge les données d'assertion personnalisées via le champ customAssertions.
github.com/contentauth/c2pa-node

Utiliser c2patool pour ajouter une assertion TRACE

trace-manifeste.json — entrée pour c2patool
{
  "claim_generator": "MonOutilDePublication/1.0",
  "assertions": [
    {
      "label": "trace.assessment",
      "data": {
        "specVersion": "1.0",
        "@context": "https://tracestandard.org/schema/v1",
        "contentTitle": "Ép. 12 : Droits sur l'eau dans le Chilcotin",
        "producer": "Cariboo Signals",
        "communityRepresented": "Nation Tsilhqot'in; Cariboo rural",
        "track": "A",
        "disqualified": false,
        "totalScore": 16,
        "maxScore": 21,
        "verdict": "Solide",
        "assessmentDate": "2026-05-15"
      }
    }
  ]
}
Commande c2patool
# Intégrer l'assertion TRACE dans un fichier audio
c2patool episode-12.mp3 \
  --manifest trace-manifeste.json \
  --signer-path mon-certificat.pem \
  --signer-alg Es256 \
  --output episode-12-signe.mp3

Lire et vérifier les assertions TRACE

Une assertion TRACE dans un manifeste C2PA peut être lue et vérifiée cryptographiquement par tout outil compatible C2PA. La vérification confirme à la fois que les données de l'assertion sont intactes et que le certificat de signature est fiable.

OutilTypeCe qu'il vérifie
c2patool verify CLI Vérification complète du manifeste, y compris la chaîne de certificats, l'intégrité des assertions, et toutes les étiquettes et données d'assertion. Sortie JSON.
contentcredentials.org/verify Application web Téléverser un fichier pour vérifier son manifeste. Affiche toutes les assertions, y compris les types personnalisés. Aucun compte requis.
c2pa-js dans le navigateur SDK Vérifier et afficher les assertions C2PA côté client. À utiliser pour intégrer un lecteur de badge TRACE directement dans une page web. Interroger par étiquette d'assertion "trace.assessment" pour extraire les données spécifiques à TRACE.
Extraire trace.assessment via c2patool
# Lire toutes les assertions d'un fichier
c2patool episode-12-signe.mp3 --show-manifest

# La sortie inclut un bloc comme :
{
  "label": "trace.assessment",
  "data": {
    "verdict": "Solide",
    "totalScore": 16,
    ...
  }
}

Utiliser C2PA et JSON-LD ensemble

L'assertion C2PA et le bloc JSON-LD ne sont pas des alternatives — ils sont complémentaires. Le modèle de données est identique ; seul le conteneur diffère. Un modèle recommandé pour les épisodes de balados :

CoucheFormatEmplacementObjectif
Page de l'épisode JSON-LD HTML <head> Indexation pour les moteurs de recherche, vérification lisible par l'humain, lien vers la fiche d'évaluation
Flux RSS Espace de noms XML Élément <item> Affichage dans les applications de balados, indexation par les agrégateurs de flux
Fichier audio Assertion C2PA Binaire MP3 / M4A Durable, inviolable, voyage avec le fichier
Exigence de cohérence : Lorsque les deux formats sont utilisés pour le même contenu, le score, le verdict, la voie et la date d'évaluation doivent correspondre dans toutes les représentations. Un consommateur qui trouve des données contradictoires entre une page JSON-LD et une assertion C2PA doit traiter cette divergence comme un problème d'intégrité des données.

Historique des versions

VersionDateStatutNotes
1.0mai 2026BrouillonBrouillon initial. Étiquette d'assertion définie. Soumission au registre d'assertions C2PA en attente.