Aller au contenu

Vérifier une preuve

Le pack de preuves est un unique fichier JSON autonome : enregistrements, points de contrôle, clés, ancres. obsign verify le contrôle sans réseau. L’auditeur compile le vérificateur depuis les sources et l’exécute sur une machine de son choix.

Fenêtre de terminal
cargo run -p obsign-audit-core --example gen_sample -- /tmp/sample
cargo run -p obsign -- verify /tmp/sample/evidence.json \
--trusted-keys /tmp/sample/trusted-keys.json

Falsifiez le résultat et relancez :

Fenêtre de terminal
sed -i '' 's/"outcome": "deny"/"outcome": "allow"/' /tmp/sample/evidence.json
cargo run -p obsign -- verify /tmp/sample/evidence.json \
--trusted-keys /tmp/sample/trusted-keys.json # exit 1
CodeSignification
0Prouvé — vérifié contre des clés obtenues hors du pack
1Falsifié — un enregistrement, un point de contrôle ou une ancre échoue à la vérification
2Erreur d’exécution
3Cohérent mais non prouvé — vérifié uniquement contre les clés que le pack transporte lui-même

Le code 3 mérite qu’on y insiste : sans --trusted-keys, la vérification n’établit qu’une cohérence interne, et le rapport le dit explicitement. Un pack forgé et signé avec une clé inventée se valide lui-même ; l’ancrage des clés doit venir d’un autre canal. Le code 0 est réservé à la vérification contre des clés externes. Dans une tâche planifiée, traitez le code 3 comme une erreur de configuration (le fichier de clés de confiance n’est pas parvenu au vérificateur), jamais comme un succès.

  1. Aucun enregistrement supprimé, inséré ou modifié — chaîne de hachage, seq contigus.
  2. Aucune réécriture en bloc — la chaîne de hachage seule ne suffit pas : qui détient la base peut tout recalculer. Les points de contrôle, signés avec une clé extérieure au processus d’écriture (KMS/HSM), ferment cette brèche.
  3. Aucun scellé escamoté — les points de contrôle sont chaînés entre eux.
  4. Ce qui n’est pas prouvé est déclaré tel — un enregistrement cohérent mais couvert par aucun point de contrôle valide est signalé.

Lorsqu’un point de contrôle porte une ancre RFC 3161, obsign verify la recontrôle structurellement et la rapporte. La signature CMS du jeton d’horodatage lui-même est validée contre le certificat de la TSA avec un outillage standard (openssl ts -verify), et le rapport le dit sans faire passer un contrôle structurel pour un contrôle cryptographique.

Le binaire de l’auditeur se compile à partir de ~31 crates, presque uniquement la cryptographie elle-même (curve25519-dalek, sha2 et leur support arithmétique). L’analyse des arguments est écrite à la main ; pas de framework web, pas d’exécutif asynchrone, pas de pile TLS. L’arbre de dépendances fait partie du produit : c’est ce qu’un auditeur doit lire avant d’accorder sa confiance au verdict.