Detektera signaturkompromiss
Upptäcka signaturkompromiss
SignaturesCompromiseDetector är startpunkten för den här guiden: den granskar en signerat dokuments revisionshistorik för indikatorer på att innehåll lagts till efter att den senaste signaturen applicerades, och rapporterar vad den hittar som en CompromiseCheckResult. Detta är säkerhetsytan som täcks av detta kunskapsbaskluster – den omfattar inte skapande eller tillämpning av signaturer, eller dokumentkryptering; den undersöker bara signaturer som redan finns på ett dokument.
Kör en kompromisskontroll
Skapa SignaturesCompromiseDetector med det dokument du vill granska, och anropa sedan SignaturesCompromiseDetector.check(). Kontrollfunktionen går igenom varje signatur som redan finns på dokumentet och söker efter osignerade byte som lagts till efter den senaste signerade revisionen – ett tecken på att innehåll kan ha lagts till i efterhand – samtidigt som den tolererar legitimt långsiktigt valideringsmaterial (såsom ett dokumentsäkerhetslager eller ett arkivtidsstämpel) som lagts till av en senare, övergripande signatur.
Tolka resultatet
SignaturesCompromiseDetector.check() returnerar en CompromiseCheckResult med fyra egenskaper:
CompromiseCheckResult.has_compromised_signatures—Trueom någon signatur visade en manipuleringsindikator.CompromiseCheckResult.compromised— speglarCompromiseCheckResult.has_compromised_signatures, tillhandahålls som ett skrivskyddat bekvämlighetsalias.CompromiseCheckResult.signatures_coverage— antalet signaturer som detektorn granskat på dokumentet.CompromiseCheckResult.reasons— en lista med korta strängar som beskriver varför dokumentet flaggades, när det gjorde det.
Ett dokument utan signaturer, eller inget dokument alls, rapporteras som inte komprometterat, med CompromiseCheckResult.signatures_coverage lika med 0.
Tips och bästa praxis
- Behandla
CompromiseCheckResult.compromisedochCompromiseCheckResult.has_compromised_signaturessom utbytbara — de rapporterar alltid samma värde. - Kontrollera
CompromiseCheckResult.signatures_coverageinnan du litar på ettFalse-resultat: en täckning på0betyder att detektorn inte fann några signaturer att granska, inte att befintliga signaturer verifierades som intakta. - Läs
CompromiseCheckResult.reasonsnärCompromiseCheckResult.has_compromised_signaturesärTrue— listan förklarar vilken heuristik som utlöste, vilket är användbart vid loggning eller när resultatet visas för en granskare. SignaturesCompromiseDetectorgranskar versionshistorik för tecken på manipulation; den validerar inte kryptografisk signaturintegritet själva, så kombinera den med dokumentets egna signaturvalideringsresultat där det är viktigt för ditt arbetsflöde.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
CompromiseCheckResult.signatures_coverage är 0 för ett dokument som du vet är signerat | SignaturesCompromiseDetector konstruerades utan ett dokument, eller så har dokumentobjektet inga åtkomliga signaturer | Bekräfta att dokumentet som skickas till SignaturesCompromiseDetector exponerar sina signaturer innan du anropar SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons är tom även om du förväntade dig en förklaring | CompromiseCheckResult.has_compromised_signatures är False för detta dokument | Anledningar fylls endast i när en kompromissindikator faktiskt har hittats; en tom lista på ett rent resultat är förväntat |
| En legitimt uppdaterad PDF (t.ex. en med en tillagd långtidsgiltighetsstämpel) flaggas som komprometterad | Det senare tillägget är inte helt täckt av en efterföljande signatur eller erkänns inte som material som endast används för validering | Kör om kontrollen efter att ha bekräftat att uppdateringen gjordes med en korrekt täckande signatur eller tidsstämpel, och granska CompromiseCheckResult.reasons för den specifika utlösaren |
FAQ
Vad kontrollerar CompromiseCheckResult.compromised egentligen?
Den rapporterar samma värde som CompromiseCheckResult.has_compromised_signatures: huruvida SignaturesCompromiseDetector.check() hittade någon manipulationsindikator i dokumentets signaturer.
Betyder ett signatures_coverage av 0 att dokumentet är säkert?
Nej — det betyder att inga signaturer hittades att granska. SignaturesCompromiseDetector kan inte rapportera om signaturer den inte kan se, så en 0 täckning är ett “inget att kontrollera”-resultat, inte en bekräftelse på integritet.
Kan SignaturesCompromiseDetector skapa eller verifiera en kryptografisk signatur?
Nej. Den granskar endast ett dokuments befintliga revisionshistorik för indikatorer på att innehåll lades till efter den senaste signaturen. Att skapa, tillämpa eller kryptografiskt validera signaturer ligger utanför vad den här klassen gör.
Kommer ett legitimt tidsstämplingstillägg efter signering alltid att utlösa ett kompromissfynd?
Inte nödvändigtvis. Detektorn är utformad för att tolerera ett senare tillägg som själv är täckt av en efterföljande signatur, eller som bara lägger till valideringsmaterial snarare än nytt innehåll. Kontrollera CompromiseCheckResult.reasons om du ser ett oväntat fynd.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
SignaturesCompromiseDetector | Inspekterar ett signerat dokument för manipuleringsindikatorer efter den sista signaturen |
SignaturesCompromiseDetector.check() | Kör kontrollen och returnerar en CompromiseCheckResult |
CompromiseCheckResult | Resultatet av en kompromisskontroll |
CompromiseCheckResult.compromised | Skrivskyddat alias för CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | Om en manipuleringindikator hittades |
CompromiseCheckResult.signatures_coverage | Antalet undersökta signaturer |
CompromiseCheckResult.reasons | Korta strängar som förklarar eventuella fynd |