Erkennung von Signaturkompromittierung

Erkennung von Signaturkompromittierung

Erkennung von Signaturkompromittierung

SignaturesCompromiseDetector ist der Einstiegspunkt für diesen Leitfaden: Er prüft den Revisionsverlauf eines signierten Dokuments auf Anzeichen dafür, dass Inhalte nach dem letzten Anbringen der Signatur hinzugefügt wurden, und meldet das Gefundene als CompromiseCheckResult. Dies ist die Sicherheitsfläche, die von diesem Cluster der Wissensdatenbank abgedeckt wird— es deckt nicht das Erstellen oder Anwenden von Signaturen bzw. die Dokumentenverschlüsselung ab; es untersucht nur Signaturen, die bereits auf einem Dokument vorhanden sind.


Durchführen einer Kompromittierungsprüfung

Erstelle SignaturesCompromiseDetector mit dem Dokument, das du prüfen möchtest, und rufe dann SignaturesCompromiseDetector.check() auf. Die Prüfung durchläuft jede bereits im Dokument vorhandene Signatur und sucht nach unsignierten Bytes, die nach der letzten signierten Revision angehängt wurden— ein Hinweis darauf, dass Inhalte nachträglich hinzugefügt worden sein könnten— und toleriert dabei legitimes Langzeitvalidierungsmaterial (wie z.B. einen Dokumentensicherheits-Store oder einen Archivzeitstempel), das von einer späteren, überdeckenden Signatur hinzugefügt wurde.


Interpretation des Ergebnisses

SignaturesCompromiseDetector.check() gibt ein CompromiseCheckResult mit vier Eigenschaften zurück:

  • CompromiseCheckResult.has_compromised_signatures—True, wenn irgendeine Signatur einen Manipulationsindikator zeigte.
  • CompromiseCheckResult.compromised — spiegelt CompromiseCheckResult.has_compromised_signatures, bereitgestellt als schreibgeschützter Komfort-Alias.
  • CompromiseCheckResult.signatures_coverage — die Anzahl der Signaturen, die der Detektor im Dokument geprüft hat.
  • CompromiseCheckResult.reasons — eine Liste kurzer Zeichenketten, die beschreiben, warum das Dokument markiert wurde und wann.

Ein Dokument ohne Signaturen oder überhaupt kein Dokument wird als nicht kompromittiert gemeldet, wobei CompromiseCheckResult.signatures_coverage gleich 0 ist.


Tipps und bewährte Verfahren

  • Behandle CompromiseCheckResult.compromised und CompromiseCheckResult.has_compromised_signatures als austauschbar — sie geben stets denselben Wert zurück.
  • Überprüfe CompromiseCheckResult.signatures_coverage, bevor du einem False-Ergebnis vertraust: Eine Abdeckung von 0 bedeutet, dass der Detektor keine zu prüfenden Signaturen gefunden hat, nicht dass vorhandene Signaturen als intakt verifiziert wurden.
  • Lese CompromiseCheckResult.reasons, wenn CompromiseCheckResult.has_compromised_signatures True ist — die Liste erklärt, welche Heuristik ausgelöst wurde, was beim Protokollieren oder beim Anzeigen des Ergebnisses für einen Prüfer nützlich ist.
  • SignaturesCompromiseDetector prüft die Versionsgeschichte auf Manipulationsindikatoren; es validiert die Integrität kryptografischer Signaturen nicht selbst, daher sollten Sie es mit den eigenen Signaturvalidierungsergebnissen des Dokuments kombinieren, wo das für Ihren Arbeitsablauf wichtig ist.

Häufige Probleme

ProblemUrsacheLösung
CompromiseCheckResult.signatures_coverage ist 0 für ein Dokument, von dem Sie wissen, dass es signiert istSignaturesCompromiseDetector wurde ohne Dokument erstellt, oder das Dokumentobjekt hat keine zugänglichen SignaturenStellen Sie sicher, dass das an SignaturesCompromiseDetector übergebene Dokument seine Signaturen offenlegt, bevor Sie SignaturesCompromiseDetector.check() aufrufen
CompromiseCheckResult.reasons ist leer, obwohl Sie eine Erklärung erwartet habenCompromiseCheckResult.has_compromised_signatures ist False für dieses DokumentGründe werden nur ausgefüllt, wenn tatsächlich ein Kompromissindikator gefunden wurde; eine leere Liste bei einem sauberen Ergebnis ist zu erwarten
Ein legitim aktualisiertes PDF (z.B. eines mit einem hinzugefügten Langzeitvalidierungs-Zeitstempel) wird als kompromittiert markiertDie spätere Ergänzung ist nicht vollständig durch eine nachfolgende Signatur abgedeckt oder wird nicht als reines Validierungsmaterial erkanntFühren Sie die Prüfung erneut durch, nachdem Sie bestätigt haben, dass das Update durch eine geeignete abdeckende Signatur oder einen Zeitstempel erfolgt ist, und prüfen Sie CompromiseCheckResult.reasons auf den konkreten Auslöser

FAQ

Was prüft CompromiseCheckResult.compromised eigentlich?

Es meldet denselben Wert wie CompromiseCheckResult.has_compromised_signatures: ob SignaturesCompromiseDetector.check() irgendeinen Manipulationsindikator in den Signaturen des Dokuments gefunden hat.

Bedeutet ein signatures_coverage von 0, dass das Dokument sicher ist?

Nein — das bedeutet, dass keine Signaturen zum Untersuchen gefunden wurden. SignaturesCompromiseDetector kann nicht über Signaturen berichten, die es nicht sehen kann, daher ist eine 0-Abdeckung ein Ergebnis von “nothing to check”, nicht eine Bestätigung der Integrität.

Kann SignaturesCompromiseDetector eine kryptografische Signatur erstellen oder verifizieren?

Nein. Es prüft nur die vorhandene Versionsgeschichte eines Dokuments auf Hinweise, dass Inhalte nach der letzten Signatur hinzugefügt wurden. Das Erstellen, Anwenden oder kryptografische Validieren von Signaturen fällt nicht in den Aufgabenbereich dieser Klasse.

Wird das Hinzufügen eines legitimen Zeitstempels nach der Signatur immer ein compromise finding auslösen?

Nicht unbedingt. Der Detektor ist so konzipiert, dass er eine spätere Ergänzung toleriert, die selbst durch eine nachfolgende Signatur abgedeckt ist, oder die lediglich Validierungsmaterial hinzufügt, anstatt neuen Inhalt. Prüfen Sie CompromiseCheckResult.reasons, wenn Sie einen unerwarteten Fund sehen.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
SignaturesCompromiseDetectorUntersucht ein signiertes Dokument nach Manipulationsindikatoren nach der letzten Signatur
SignaturesCompromiseDetector.check()Führt die Prüfung durch und gibt ein CompromiseCheckResult zurück
CompromiseCheckResultDas Ergebnis einer Kompromittierungsprüfung
CompromiseCheckResult.compromisedSchreibgeschützter Alias für CompromiseCheckResult.has_compromised_signatures
CompromiseCheckResult.has_compromised_signaturesOb ein Manipulationsindikator gefunden wurde
CompromiseCheckResult.signatures_coverageDie Anzahl der untersuchten Signaturen
CompromiseCheckResult.reasonsKurze Zeichenketten, die einen Befund erklären

Siehe auch

 Deutsch