Introduction
Cet article est un guide technique pour les développeurs francophones qui veulent sécuriser leurs agents IA. Nous allons couvrir le pipeline de vérification en 12 étapes du Universal Trust Adapter (UTA).
Pourquoi 12 étapes
Vérifier une crédential ne se résume pas à vérifier la signature cryptographique. Une crédential peut avoir une signature correcte et pourtant être :
- Expirée (signée correctement, mais il y a 3 ans)
- Révoquée (signée correctement, mais l'émetteur l'a révoquée)
- Mal scopée (signée correctement, mais demande des permissions non intentionnelles)
- Émetteur inconnu (signée correctement, mais qui est l'émetteur ?)
- Sans proof-of-possession (signée correctement, mais qui la présente ?)
- Sans provenance (signée correctement, mais d'où vient-elle ?)
Chacun de ces cas nécessite une étape de vérification séparée.
Le pipeline
PARSER → DETECT → SCHEMA → CRYPTO → ISSUER → KEY_BINDING
→ POP → PROVENANCE → LIFECYCLE → EVIDENCE → POLICY → DECISION
1. PARSER
Reçoit des bytes bruts (JSON, CBOR, PEM, DER) et les convertit en structure interne.
2. DETECT
Identifie le format de la crédential : JWT ? W3C VC ? ATC v3 ? MCP Card ? UTA supporte 8 formats.
3. SCHEMA
Valide les champs obligatoires du format détecté.
4. CRYPTO
Vérifie la signature cryptographique.
5. ISSUER
Résout l'identité de l'émetteur. CA connue ? Émetteur dans une liste de confiance ? Inconnu ?
6. KEY_BINDING
Vérifie que la clé utilisée pour signer est liée à l'émetteur déclaré.
7. POP (Proof of Possession)
Vérifie que celui qui présente la crédential possède bien la clé privée liée.
8. PROVENANCE
Trace l'origine de la crédential. De l'émetteur direct ? D'un cache ? D'un tiers ?
9. LIFECYCLE
Vérifie la validité temporelle : not_before, expires_at, revocation_status.
10. EVIDENCE
Collecte les preuves cryptographiques pour audit.
11. POLICY
Applique les politiques spécifiques au système.
12. DECISION
Combine les résultats des 11 étapes précédentes et émet un verdict : PERMIT, DENY, ou UNDETERMINED.
Implémentation
import { verify, getStageResult } from '@marketnow/trust-core';
const result = await verify(card);
console.log(result.decision); // 'PERMIT' | 'DENY' | 'UNDETERMINED'
console.log(result.failed_stage); // 'LIFECYCLE' si expirée
console.log(getStageResult('CRYPTO')); // détail de la vérification crypto
Benchmarks
- 6 744 vérifications par seconde (pipeline complet, single core)
- Étape la plus lente : CRYPTO (~0.08ms moyen, Ed25519)
- Étape la plus rapide : PARSER (~0.01ms)
Conclusion
La vérification des crédentials n'est pas une étape, c'est un pipeline. Si vous la traitez comme une étape, vous aurez des faux positifs (crédentials invalides qui passent) ou des faux négatifs (crédentials valides qui ne passent pas).
UTA implémente les 12 étapes. Vous décidez lesquelles activer.
Repo : alicelabs-llc/universal-trust-adapter · API : marketnow.site/api/trust
Top comments (0)