Detectie van handtekeningcompromis
Detectie van handtekeningcompromittering
SignaturesCompromiseDetector is de toegangspoort voor deze gids: het inspecteert de revisiegeschiedenis van een ondertekend document op indicatoren dat inhoud is toegevoegd nadat de laatste handtekening is toegepast, en rapporteert wat het vindt als een CompromiseCheckResult. Dit is het beveiligingsoppervlak dat door deze cluster van de kennisbank wordt gedekt — het omvat niet het creëren of toepassen van handtekeningen, of documentversleuteling; het onderzoekt alleen handtekeningen die al op een document bestaan.
Uitvoeren van een compromitteringscontrole
Construeer SignaturesCompromiseDetector met het document dat u wilt inspecteren, roep vervolgens SignaturesCompromiseDetector.check() aan. De controle doorloopt elke handtekening die al op het document aanwezig is en zoekt naar niet-ondertekende bytes die zijn toegevoegd na de laatste ondertekende revisie — een teken dat inhoud mogelijk later is toegevoegd — terwijl legitiem langetermijnvalidatiemateriaal (zoals een documentbeveiligingsopslag of archieftimestamp) dat door een latere, dekkende handtekening is toegevoegd, wordt getolereerd.
Resultaat interpreteren
SignaturesCompromiseDetector.check() retourneert een CompromiseCheckResult met vier eigenschappen:
CompromiseCheckResult.has_compromised_signatures—Trueals een handtekening een tamper indicator vertoonde.CompromiseCheckResult.compromised— spiegeltCompromiseCheckResult.has_compromised_signatures, beschikbaar als een alleen-lezen alias voor gemak.CompromiseCheckResult.signatures_coverage— het aantal handtekeningen dat de detector op het document onderzocht.CompromiseCheckResult.reasons— een lijst met korte strings die beschrijven waarom het document werd gemarkeerd, wanneer dat gebeurde.
Een document zonder handtekeningen, of helemaal geen document, wordt gerapporteerd als niet gecompromitteerd, waarbij CompromiseCheckResult.signatures_coverage gelijk is aan 0.
Tips en beste werkwijzen
- Beschouw
CompromiseCheckResult.compromisedenCompromiseCheckResult.has_compromised_signaturesals uitwisselbaar — ze rapporteren altijd dezelfde waarde. - Controleer
CompromiseCheckResult.signatures_coveragevoordat je eenFalse-resultaat vertrouwt: een dekking van0betekent dat de detector geen handtekeningen vond om te onderzoeken, niet dat bestaande handtekeningen als intact werden geverifieerd. - Lees
CompromiseCheckResult.reasonswanneerCompromiseCheckResult.has_compromised_signaturesTrueis — de lijst legt uit welke heuristiek werd geactiveerd, wat nuttig is bij het loggen of presenteren van het resultaat aan een beoordelaar. SignaturesCompromiseDetectorinspecteert de revisiegeschiedenis op tekenen van manipulatie; het valideert zelf niet de integriteit van cryptografische handtekeningen, dus combineer het met de eigen handtekeningvalidatieresultaten van het document waar dat belangrijk is voor uw workflow.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
CompromiseCheckResult.signatures_coverage is 0 voor een document waarvan je weet dat het ondertekend is | SignaturesCompromiseDetector is geconstrueerd zonder een document, of het documentobject heeft geen toegankelijke handtekeningen | Bevestig dat het document dat aan SignaturesCompromiseDetector wordt doorgegeven zijn handtekeningen toont voordat je SignaturesCompromiseDetector.check() aanroept |
CompromiseCheckResult.reasons is leeg, hoewel je een uitleg verwachtte | CompromiseCheckResult.has_compromised_signatures is False voor dit document | Redenen worden alleen ingevuld wanneer er daadwerkelijk een indicatie van compromittering is gevonden; een lege lijst bij een schoon resultaat is te verwachten |
| Een legitiem bijgewerkte PDF (bijv. één met een toegevoegde timestamp voor langetermijnvalidatie) wordt gemarkeerd als gecompromitteerd | De latere toevoeging wordt niet volledig gedekt door een latere handtekening of wordt niet herkend als uitsluitend validatiemateriaal | Voer de controle opnieuw uit nadat is bevestigd dat de update is gedaan met een juiste dekkende handtekening of timestamp, en inspecteer CompromiseCheckResult.reasons voor de specifieke trigger |
FAQ
Wat controleert CompromiseCheckResult.compromised eigenlijk?
Het rapporteert dezelfde waarde als CompromiseCheckResult.has_compromised_signatures: of SignaturesCompromiseDetector.check() een teken van manipulatie heeft gevonden in de handtekeningen van het document.
Betekent een signatures_coverage van 0 dat het document veilig is?
Nee — het betekent dat er geen handtekeningen werden gevonden om te onderzoeken. SignaturesCompromiseDetector kan geen rapporteren over handtekeningen die het niet kan zien, dus een 0 dekking is een “niets te controleren” resultaat, geen bevestiging van integriteit.
Kan SignaturesCompromiseDetector een cryptografische handtekening maken of verifiëren?
Nee. Het inspecteert alleen de bestaande revisiegeschiedenis van een document op indicatoren dat inhoud is toegevoegd na de laatste handtekening. Het maken, toepassen of cryptografisch valideren van handtekeningen valt buiten wat deze klasse doet.
Zal het toevoegen van een legitieme tijdstempel na ondertekening altijd een compromitteringsbevinding veroorzaken?
Niet per se. De detector is ontworpen om een latere toevoeging te tolereren die zelf wordt gedekt door een latere handtekening, of die alleen validatiemateriaal toevoegt in plaats van nieuwe inhoud. Controleer CompromiseCheckResult.reasons als je een onverwachte bevinding ziet.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
SignaturesCompromiseDetector | Inspecteert een ondertekend document op manipulatie-indicatoren na de laatste handtekening |
SignaturesCompromiseDetector.check() | Voert de controle uit en retourneert een CompromiseCheckResult |
CompromiseCheckResult | Het resultaat van een compromiscontrole |
CompromiseCheckResult.compromised | Alleen-lezen alias voor CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | Of er een tamper-indicator werd gevonden |
CompromiseCheckResult.signatures_coverage | Het aantal getoetste handtekeningen |
CompromiseCheckResult.reasons | Korte strings die een eventuele bevinding uitleggen |