Comment vérifier les Content Credentials d'une image
Quatre façons de lire et vérifier un manifeste C2PA, d'une zone de dépôt dans le navigateur à la ligne de commande, et ce que chacune peut ou ne peut pas vous montrer.
Option 1 : outils en ligne
Déposez l'image sur la page d'accueil d'AuditImage et en quelques secondes vous voyez le générateur du manifeste, le certificat du signataire, les actions et les ingrédients. AuditImage analyse la structure JUMBF complète y compris les assertions encodées en CBOR, vérifie la signature, la liaison de hachage du contenu, les hachages des assertions et la chaîne de certificats par rapport à la liste de confiance C2PA, et fait une vérification croisée entre C2PA et EXIF/XMP. Le jeton d'horodatage est signalé comme présent mais non vérifié.
Pour une vérification stricte de la signature, utilisez verify.contentauthenticity.org, le site officiel du CAI. Il vérifie la signature, la chaîne de certificats et le hachage du contenu, et affiche le statut de la liste de confiance.
Option 2 : extension navigateur
Le Chrome Web Store propose une extension « C2PA Content Credentials » qui inspecte n'importe quelle image web depuis le menu contextuel. Chrome intègre lui-même la vérification C2PA dans le navigateur et Google Search, où les images avec Content Credentials obtiennent un label.
Option 3 : ligne de commande
c2patool est l'implémentation de référence C2PA, écrit en Rust et multiplateforme :
c2patool photo.jpg # résumé du manifeste en JSON
c2patool photo.jpg --detailed # assertions, ingrédients, liaisons de hachage, résultat de la signature
c2patool photo.jpg --tree # arbre des manifestes
exiftool lit aussi JUMBF :
exiftool -a -G1 -s -JUMBF:all photo.jpg
exiftool -v3 photo.jpg | grep APP11 # confirmer que APP11 existe et s'il est fractionné
Option 4 : lire les octets vous-même
Dans un JPEG, le manifeste se trouve dans les segments APP11 (marqueur FF EB). La charge utile commence par JP, puis un numéro d'instance de boîte de 2 octets, un numéro de séquence de paquet de 4 octets, puis la longueur de la boîte JUMBF et le type jumb. Les manifestes de plus de 64 Ko sont répartis sur plusieurs segments APP11 et réassemblés par numéro de séquence. Dans un PNG, lisez directement le bloc caBX.
Ce qu'il faut vérifier lors de la vérification
- Qui a signé. Un sujet de certificat « Adobe Inc. » et un autre « C2PA Test Signing Cert » sont très différentes choses. Un manifeste signé avec un certificat de test est structurellement valide mais personne ne le garantit.
- La liste de confiance. Le CAI maintient une liste des signataires connus. Un certificat en dehors de la liste n'est pas nécessairement faux, mais vous devez le juger vous-même.
- Si le hachage du contenu correspond. Ce n'est que lorsque
c2pa.hash.datacorrespond au contenu réel de l'image que vous savez que la photo n'a pas été modifiée après la signature. - Ce que dit le manifeste actif. Plusieurs tours d'édition produisent plusieurs manifestes ; le dernier est actif. Ses
c2pa.actionsindiquent s'il s'agissait dec2pa.createdouc2pa.edited, et si le type de source estdigitalCaptureoutrainedAlgorithmicMedia.
Résultats typiques
- Signature valide, fabricant d'appareil photo comme signataire, type de source digitalCapture : directement de l'appareil photo.
- Signature valide, OpenAI ou Adobe comme signataire, type de source trainedAlgorithmicMedia : généré par IA, et le générateur l'a déclaré.
- Signature valide, mais un ingrédient est généré par IA : un composite ; regardez les actions spécifiques.
- Manifeste présent mais signature invalide : la photo a été modifiée après la signature, ou le manifeste a été transplanté depuis une autre photo.