Détection de la compromission de signature

Détection de la compromission de signature

Détection de la compromission de signature

SignaturesCompromiseDetector est le point d’entrée de ce guide: il examine l’historique des révisions d’un document signé à la recherche d’indicateurs indiquant que du contenu a été ajouté après l’application de la dernière signature, et rapporte ce qu’il trouve sous la forme d’un CompromiseCheckResult. Il s’agit de la surface de sécurité couverte par ce groupe de la base de connaissances — il ne couvre pas la création ou l’application de signatures, ni le chiffrement de documents; il ne fait qu’examiner les signatures déjà présentes sur un document.


Exécution d’une vérification de compromission

Construisez SignaturesCompromiseDetector avec le document que vous souhaitez inspecter, puis appelez SignaturesCompromiseDetector.check(). La vérification parcourt chaque signature déjà présente sur le document et recherche des octets non signés ajoutés après la dernière révision signée — un signe que du contenu a pu être superposé par la suite — tout en tolérant le matériel de validation à long terme légitime (tel qu’un magasin de sécurité de document ou un horodatage d’archive) ajouté par une signature ultérieure de couverture.


Interprétation du résultat

SignaturesCompromiseDetector.check() renvoie un CompromiseCheckResult avec quatre propriétés:

  • CompromiseCheckResult.has_compromised_signatures — True si une signature a indiqué une altération.
  • CompromiseCheckResult.compromised — reflète CompromiseCheckResult.has_compromised_signatures, fourni comme alias de commodité en lecture seule.
  • CompromiseCheckResult.signatures_coverage — le nombre de signatures que le détecteur a examinées sur le document.
  • CompromiseCheckResult.reasons — une liste de courtes chaînes décrivant pourquoi le document a été signalé, quand cela s’est produit.

Un document sans signatures, ou aucun document du tout, est signalé comme non compromis, avec CompromiseCheckResult.signatures_coverage égal à 0.


Conseils et bonnes pratiques

  • Considérez CompromiseCheckResult.compromised et CompromiseCheckResult.has_compromised_signatures comme interchangeables — ils rapportent toujours la même valeur.
  • Vérifiez CompromiseCheckResult.signatures_coverage avant de faire confiance à un résultat False: une couverture de 0 signifie que le détecteur n’a trouvé aucune signature à examiner, et non que les signatures existantes ont été vérifiées comme intactes.
  • Lisez CompromiseCheckResult.reasons lorsque CompromiseCheckResult.has_compromised_signatures est True — la liste explique quelle heuristique a été déclenchée, ce qui est utile lors de la journalisation ou de la présentation du résultat à un examinateur.
  • SignaturesCompromiseDetector examine l’historique des révisions à la recherche d’indicateurs de falsification; il ne valide pas lui-même l’intégrité de la signature cryptographique, il faut donc le coupler aux résultats de validation de signature du document lorsque cela compte dans votre flux de travail.

Problèmes courants

ProblèmeCauseCorrection
CompromiseCheckResult.signatures_coverage est 0 pour un document que vous savez être signéSignaturesCompromiseDetector a été construit sans document, ou l’objet document n’a aucune signature accessibleConfirmez que le document passé à SignaturesCompromiseDetector expose ses signatures avant d’appeler SignaturesCompromiseDetector.check()
CompromiseCheckResult.reasons est vide même si vous attendiez une explicationCompromiseCheckResult.has_compromised_signatures est False pour ce documentLes raisons ne sont renseignées que lorsqu’un indicateur de compromission a réellement été trouvé ; une liste vide sur un résultat propre est attendue
Un PDF légitimement mis à jour (p. ex. avec un horodatage de validation à long terme ajouté) est signalé comme compromisL’ajout ultérieur n’est pas entièrement couvert par une signature subséquente ou n’est pas reconnu comme un matériau uniquement de validationRexécutez la vérification après avoir confirmé que la mise à jour a été effectuée par une signature ou un horodatage de couverture approprié, et inspectez CompromiseCheckResult.reasons pour le déclencheur spécifique

FAQ

Qu’est-ce que CompromiseCheckResult.compromised vérifie réellement?

Il rapporte la même valeur que CompromiseCheckResult.has_compromised_signatures: si SignaturesCompromiseDetector.check() a trouvé un indicateur de falsification dans les signatures du document.

Un signatures_coverage de 0 signifie-t-il que le document est sûr?

Non — cela signifie qu’aucune signature n’a été trouvée pour être examinée. SignaturesCompromiseDetector ne peut pas rendre compte des signatures qu’il ne voit pas, donc une couverture de 0 est un résultat «rien à vérifier», et non une confirmation d’intégrité.

SignaturesCompromiseDetector peut-il créer ou vérifier une signature cryptographique?

Non. Il ne fait qu’examiner l’historique des révisions existant d’un document à la recherche d’indications selon lesquelles du contenu a été ajouté après la dernière signature. Créer, appliquer ou valider cryptographiquement des signatures dépasse le cadre de ce que fait cette classe.

L’ajout d’un horodatage légitime après la signature déclenchera-t-il toujours une détection de compromission?

Pas nécessairement. Le détecteur est conçu pour tolérer une addition ultérieure qui est elle-même couverte par une signature subséquente, ou qui ne fait qu’ajouter du matériel de validation plutôt que du nouveau contenu. Consultez CompromiseCheckResult.reasons si vous voyez une détection inattendue.


API Reference Résumé

Classe/MéthodeDescription
SignaturesCompromiseDetectorInspecte un document signé à la recherche d’indicateurs de falsification après la dernière signature
SignaturesCompromiseDetector.check()Exécute la vérification et renvoie un CompromiseCheckResult
CompromiseCheckResultLe résultat d’une vérification de compromission
CompromiseCheckResult.compromisedAlias en lecture seule pour CompromiseCheckResult.has_compromised_signatures
CompromiseCheckResult.has_compromised_signaturesIndique si un indicateur de falsification a été trouvé
CompromiseCheckResult.signatures_coverageLe nombre de signatures examinées
CompromiseCheckResult.reasonsCourtes chaînes expliquant toute découverte

Voir aussi

 Français