Spécification
d'assertion C2PA
Le format C2PA intègre une évaluation TRACE sous forme d'assertion signée cryptographiquement dans un fichier multimédia. Contrairement aux métadonnées de page ou de flux, les accréditations C2PA voyagent avec le fichier — elles survivent au téléchargement, à la réhébergement et à la migration de plateforme. C'est le format privilégiant la durabilité pour les contenus à long terme ou à enjeux élevés.
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.
L'étiquette trace.assessment
C2PA identifie les types d'assertion par une chaîne d'étiquette. L'étiquette de l'assertion TRACE est :
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.
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.
{
// 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"
}
| Champ | Statut | Notes |
|---|---|---|
| specVersion | requis | Toujours "1.0" pour cette version. Utilisé par les consommateurs pour gérer l'évolution du schéma. |
| @context | requis | Doit être "https://tracestandard.org/schema/v1". Lie cette assertion au schéma canonique. |
| contentTitle | requis | Titre du contenu. Peut différer du nom de fichier. |
| producer | requis | Nom 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. |
| communityRepresented | requis | Description libre de la communauté sur laquelle ou par laquelle le contenu est produit. |
| assessmentDate | requis | Date ISO 8601 : YYYY-MM-DD. Devrait être proche de la date de signature du manifeste. |
| track | requis | "A" ou "B". |
| disqualified | requis | true ou false. Lorsque true, omettre scores, totalScore, maxScore et verdict. |
| totalScore, maxScore | requis | Requis lorsque disqualified est false. |
| verdict | requis | Requis lorsque disqualified est false. Voir Valeurs de verdict. |
| scores, aiGenerated, aiTools, aiRole, assessedBy, nextReviewDate, disqualifierTriggered, cardURL | optionnel | Mê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.
{
"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é
}
}
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 :
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.
customAssertions.Utiliser c2patool pour ajouter une assertion TRACE
{
"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"
}
}
]
}
# 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.
| Outil | Type | Ce 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. |
# 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 :
| Couche | Format | Emplacement | Objectif |
|---|---|---|---|
| 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 |
Historique des versions
| Version | Date | Statut | Notes |
|---|---|---|---|
| 1.0 | mai 2026 | Brouillon | Brouillon initial. Étiquette d'assertion définie. Soumission au registre d'assertions C2PA en attente. |