Detekce kompromitace podpisu
Detekce kompromitace podpisu
SignaturesCompromiseDetector je vstupním bodem tohoto průvodce: zkoumá historii revizí podepsaného dokumentu a hledá indikátory, že byl obsah přidán po posledním aplikování podpisu, a hlásí, co nalezne, jako CompromiseCheckResult. Toto je bezpečnostní oblast pokrytá touto sekcí znalostní báze — nezahrnuje vytváření nebo aplikaci podpisů ani šifrování dokumentu; pouze zkoumá podpisy, které již v dokumentu existují.
Provádění kontroly kompromitace
Sestavte SignaturesCompromiseDetector s dokumentem, který chcete zkontrolovat, a poté zavolejte SignaturesCompromiseDetector.check(). Kontrola prochází každý podpis, který je v dokumentu již přítomen, a hledá nepodepsané bajty připojené po poslední podepsané revizi — znak toho, že byl obsah následně přidán — přičemž toleruje legitimní materiál pro dlouhodobou validaci (například úložiště zabezpečení dokumentu nebo archivní časové razítko) přidaný pozdější, pokrývající podpis.
Interpretace výsledku
SignaturesCompromiseDetector.check() vrací CompromiseCheckResult se čtyřmi vlastnostmi:
CompromiseCheckResult.has_compromised_signatures—True, pokud nějaký podpis vykázal indikátor manipulace.CompromiseCheckResult.compromised— zrcadlíCompromiseCheckResult.has_compromised_signatures, poskytováno jako jen pro čtení pohodlný alias.CompromiseCheckResult.signatures_coverage— počet podpisů, které detektor na dokumentu zkontroloval.CompromiseCheckResult.reasons— seznam krátkých řetězců popisujících, proč a kdy byl dokument označen.
Dokument bez podpisů nebo vůbec žádný dokument je hlášen jako nekompromitovaný, přičemž CompromiseCheckResult.signatures_coverage je rovno 0.
Tipy a osvědčené postupy
- Považujte
CompromiseCheckResult.compromisedaCompromiseCheckResult.has_compromised_signaturesza zaměnitelné — vždy uvádějí stejnou hodnotu. - Zkontrolujte
CompromiseCheckResult.signatures_coveragepřed tím, než budete důvěřovat výsledkuFalse: pokrytí0znamená, že detektor nenašel žádné podpisy k prozkoumání, nikoli že existující podpisy byly ověřeny jako neporušené. - Přečtěte si
CompromiseCheckResult.reasons, když jeCompromiseCheckResult.has_compromised_signaturesTrue— seznam vysvětluje, která heuristika byla spuštěna, což je užitečné při logování nebo při prezentaci výsledku recenzentovi. SignaturesCompromiseDetectorkontroluje historii revizí kvůli indikátorům manipulace; sám neověřuje integritu kryptografického podpisu, takže jej spojte s výsledky ověřování podpisu dokumentu tam, kde je to pro váš pracovní postup důležité.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
CompromiseCheckResult.signatures_coverage je 0 pro dokument, o kterém víte, že je podepsán | SignaturesCompromiseDetector byl vytvořen bez dokumentu, nebo objekt dokumentu nemá přístupné podpisy | Potvrďte, že dokument předaný do SignaturesCompromiseDetector má své podpisy k dispozici, než zavoláte SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons je prázdný, i když jste očekávali vysvětlení | CompromiseCheckResult.has_compromised_signatures je False pro tento dokument | Důvody jsou vyplněny pouze tehdy, když byl skutečně nalezen indikátor kompromisu; prázdný seznam u čistého výsledku je očekávaný |
| Legitimně aktualizovaný PDF (např. s přidaným časovým razítkem dlouhodobé validace) je označen jako kompromitovaný | Pozdější přídavek není plně pokryt následnou podpisem nebo není rozpoznán jako materiál pouze pro validaci | Znovu spusťte kontrolu po potvrzení, že aktualizace byla provedena vhodným pokrývajícím podpisem nebo časovým razítkem, a prozkoumejte CompromiseCheckResult.reasons kvůli konkrétnímu spouštěči |
FAQ
Co konkrétně kontroluje CompromiseCheckResult.compromised?
Zpráva uvádí stejnou hodnotu jako CompromiseCheckResult.has_compromised_signatures: zda SignaturesCompromiseDetector.check() nalezl jakýkoli indikátor manipulace v podpisových záznamech dokumentu.
Znamená signatures_coverage s hodnotou 0, že je dokument bezpečný?
Ne — to znamená, že nebyly nalezeny žádné podpisy k prozkoumání. SignaturesCompromiseDetector nemůže hlásit o podpisy, které nevidí, takže pokrytí 0 je výsledek „nic ke kontrole“, nikoli potvrzení integrity.
Může SignaturesCompromiseDetector vytvořit nebo ověřit kryptografický podpis?
Ne. Pouze kontroluje existující historii revizí dokumentu a hledá indikátory, že obsah byl přidán po posledním podpisu. Vytváření, aplikování nebo kryptografické ověřování podpisů spadá mimo to, co tato třída dělá.
Způsobí přidání legitimního časového razítka po podpisu vždy zjištění kompromisu?
Ne nutně. Detektor je navržen tak, aby toleroval pozdější přidání, které je samo pokryto následným podpisem, nebo které přidává pouze validační materiál místo nového obsahu. Zkontrolujte CompromiseCheckResult.reasons, pokud uvidíte neočekávané zjištění.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
SignaturesCompromiseDetector | Kontroluje podepsaný dokument na indikátory manipulace po posledním podpisu |
SignaturesCompromiseDetector.check() | Spustí kontrolu a vrátí CompromiseCheckResult |
CompromiseCheckResult | Výsledek kontroly kompromisu |
CompromiseCheckResult.compromised | Alias jen pro čtení pro CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | Zda byl nalezen indikátor manipulace |
CompromiseCheckResult.signatures_coverage | Počet prověřených podpisů |
CompromiseCheckResult.reasons | Krátké řetězce popisující jakýkoli nález |