ALLER AU CONTENU
AGENTS IA7 minStandards en production / Ép. 10 · Niveau 10-2

Agent Card A2A : comment vérifier sa signature et sa clé

Une carte signée peut passer la vérification sans faute et ne rien prouver sur qui est en face. Tout dépend de la clé avec laquelle vous la vérifiez.

XIN
Scène nocturne en pixel art devant la porte d’une ville : un petit robot coursier tend une carte scellée lumineuse, et un gardien compare son sceau à une tablette de registre gravée dans la pierre. Un fil cyan relie la carte et la tablette, et la porte reste fermée.

EN 30 SECONDES

Vérifier une Agent Card A2A, c’est contrôler sa signature JWS sur une copie canonique reconstruite de la carte. Ma politique : une clé fixée à l’avance, car la spécification vous laisse ce choix.

À RETENIR · 3

  • Une Agent Card A2A peut porter une signature JWS. On la vérifie sur une copie reconstruite : signatures retirées, règles de présence appliquées, JSON canonique.
  • Vérifiez-la avec une clé enregistrée à l’avance, jamais avec la seule URL de clé choisie par la carte. C’est ma politique : la spécification vous laisse ce choix.
  • Même vérifiée, une carte ne prouve ni que son fournisseur existe, ni que l’appelant est cet agent.
Sur cette page

Vérifier la signature d’une Agent Card A2A

EN BREF On vérifie la signature sur une copie reconstruite de la carte, pas sur les octets téléchargés.

LES MOTS À CONNAÎTRE

Agent Card
Un petit fichier JSON où l’agent se décrit : nom, compétences, adresse, mode de connexion. Le protocole A2A oblige les serveurs à en publier un.
Signature
Une valeur calculée sur un contenu avec une clé privée. Avec la clé publique qui va avec, chacun peut vérifier qui a signé et que rien n’a changé.
Clé épinglée
Une clé publique enregistrée à l’avance pour un fournisseur donné, pour qu’une carte ne puisse pas imposer une clé de son choix.

Une Agent Card Un petit fichier JSON où l’agent se décrit : nom, compétences, adresse, mode de connexion. Le protocole A2A oblige les serveurs à en publier un. Voir le glossaire n’a pas à être signée. Une carte non signée reste valide en A2A, mais son contenu n’est qu’une déclaration non vérifiée.

Quand elle l’est, le format est JSON Web Signature (JWS, RFC 7515). Chaque Signature Une valeur calculée sur un contenu avec une clé privée. Avec la clé publique qui va avec, chacun peut vérifier qui a signé et que rien n’a changé. Voir le glossaire se range dans un tableau signatures, à côté du contenu, et la section 8.4.3 d’A2A v1.0.1 fixe l’ordre des contrôles.

A2A V1.0.1, SECTION 8.4.3

Diagramme de flux : 6 étapesDiagramme de flux : 6 étapes. Prendre une signature, puis Trouver la clé publique. Trouver la clé publique, puis Garder les bons champs. Garder les bons champs, puis Retirer les signatures. Retirer les signatures, puis Réécrire sous une forme fixe. Réécrire sous une forme fixe, puis Vérifier la signature.1Prendre une signatureDu tableau signatures2Trouver la clé publiqueJamais expirée ni révoquée3Garder les bons champsSection 8.4.14Retirer les signaturesJamais signées5Réécrire sous une formefixeRFC 87856Vérifier la signatureSur la copie canonique

Étape 1. Prendre une signature. Prenez une entrée du tableau signatures. Il peut y en avoir plusieurs, pour changer de clé.

Choisissez une étape pour la voir bouger
  1. Prendre une signature Prenez une entrée du tableau signatures. Il peut y en avoir plusieurs, pour changer de clé.
  2. Trouver la clé publique Trouvez-la par son identifiant. Une clé expirée ou révoquée ne doit jamais (MUST NOT) servir.
  3. Garder les bons champs Section 8.4.1 : champs requis et champs optionnels renseignés restent, même à leur valeur par défaut ; les autres valeurs par défaut et les listes vides optionnelles partent.
  4. Retirer les signatures Le champ signatures ne fait jamais partie du contenu signé.
  5. Réécrire sous une forme fixe JSON canonique (RFC 8785) : clés triées, aucun espace superflu, nombres au format fixe.
  6. Vérifier la signature Vérifiez-la sur cette copie canonique, avec l’algorithme indiqué dans son en-tête.
Les étapes que la spécification impose (MUST) aux clients qui vérifient une signature. Ils devraient (SHOULD) vérifier au moins une signature avant de faire confiance à une carte. Le choix de la clé vous revient.

EN CLAIR

Le signataire a scellé une copie nettoyée de la carte. Vous refaites exactement cette copie, puis vous contrôlez le sceau avec la bonne clé.

L’étape que l’on rate, c’est la reconstruction. La section 8.4.1 ne dit pas « retirer toutes les valeurs par défaut » : un champ optionnel renseigné reste, et streaming: false est conservé. Passez la carte dans votre bibliothèque JSON habituelle, et même une carte valide peut échouer.

Coming up next: La signature se vérifie. Mais qui a signé, au juste ?

Quelle clé a signé la carte ?

EN BREF Une signature valide prouve seulement que quelqu’un a signé : toute la question est de savoir à qui est la clé.

L’en-tête protégé de la signature doit contenir alg (l’algorithme) et kid (l’identifiant de la clé), deux champs qu’A2A exige. Il peut aussi contenir jku, une URL vers un jeu de clés publiques.

Suivez l’URL de clé que donne la carte, et chacun peut publier une carte, héberger ses clés et signer. Ça se vérifie, sans rien prouver sur qui est en face.

MA POLITIQUE DE CLÉS
Décision : D’où vient la clé de vérification ?Arbre de décision : D’où vient la clé de vérification ? Si Un magasin de clés épinglé pour ce fournisseur, par un autre canal, alors Faire confiance au contenu de la carte. Si Une URL de clé sur la même origine HTTPS que la carte, alors Confiance au niveau du domaine seulement. Si Une URL de clé sur un autre hôte, alors Ignorer cette signature. Si Aucune signature, alors Déclarations non vérifiées.DÉCISIOND’où vient la clé devérification ?Si un magasin de clésépinglé pour cefournisseur, par un autrecanalFaire confiance aucontenu de la cartePuis contrôler la rotationet la révocation de la cléSi une URL de clé sur lamême origine HTTPS que lacarteConfiance au niveaudu domaine seulementQui contrôle le domainecontrôle la carte. Utilepour la découverte.Si une URL de clé sur unautre hôteIgnorer cettesignatureLe signataire a choisi sapropre cléSi aucune signatureDéclarations nonvérifiéesA2A valide, mais la cartepeut dire n’importe quoi
Ma politique, pas une règle de la spécification. Celle-ci autorise jku ou un magasin de clés de confiance, et dit que les clés devraient (SHOULD) arriver en HTTPS ; elle laisse la décision au client.

C’est pour cela que je vérifie avec une Clé épinglée Une clé publique enregistrée à l’avance pour un fournisseur donné, pour qu’une carte ne puisse pas imposer une clé de son choix. Voir le glossaire, enregistrée pour ce fournisseur avant même que la carte n’arrive.

ATTENTION

Même parfaitement vérifiée, une carte a ses limites. Le nom et l’URL du fournisseur sont de simples chaînes : rien ne prouve que cette organisation existe ni qu’elle a consenti à quoi que ce soit. Et securitySchemes dit comment vous vous connectez à l’agent, pas comment il prouve qui il est.

Contrôler qui appelle vraiment, au moment de la requête, est un autre problème, et cet épisode s’arrête avant.

OBJET OBTENU

Épinglez d’abord la clé

Ma politique : enregistrez la clé publique du fournisseur avant l’arrivée de la carte, et vérifiez la signature avec cette clé, pas avec une clé choisie par la carte.

FAQ

Retirez le tableau signatures, mettez le reste sous forme canonique (RFC 8785, JCS) et vérifiez au moins une signature JWS avec une clé publique de confiance, selon la section 8.4.3 de la spécification A2A v1.0.1. La clé devrait venir d’un magasin de clés épinglé ou d’une URL JWKS sur l’origine du fournisseur, pas d’une URL citée par la carte.

Sources, relues le 7 octobre 2026 : spécification A2A v1.0.1, note de version A2A v1.0.1, RFC 7515, RFC 8785. Ceci n’est pas un conseil juridique.

NIVEAU TERMINÉ

Ce que vous savez maintenant

  • On vérifie la signature d’une carte sur une copie canonique reconstruite.
  • Selon ma politique, une signature ne compte qu’avec une clé choisie à l’avance.
  • Même vérifiée, une carte ne prouve ni que son fournisseur existe, ni que l’appelant est l’agent.

Vérifiez par vous-même

Touchez ou cliquez une question pour voir la réponse.

Une carte est signée avec une URL de clé sur sa propre origine HTTPS, et la signature passe la vérification. Cela prouve-t-il que l’organisation citée dans provider existe ?

Non. C’est une confiance au niveau du domaine seulement : qui contrôle le domaine contrôle la carte. Le nom du fournisseur n’est qu’une chaîne de caractères.

Niveau suivant :Que vous apprend une entrée du registre ERC-8004 sur un agent, et qu’est-ce qui peut changer derrière ?6 min
Adam Boudjemaa
Adam Boudjemaa

Ingénieur web3 x IA, ancien CTO d’Integra. Auteur nommé (1 sur 5) d’ERC-3643, premier auteur d’ERC-6960, co-auteur d’ERC-7410 et co-auteur d’ERC-8203, encore à l’état de brouillon.

Un projet à livrer ou un poste à pourvoir ?

Parlons de votre besoin

Mon travail entre web3 et IAMes outils open source

Suivre les notes techniques

Recevez les nouveaux articles sur l’IA en production et les smart contracts par email.