Wykrywanie naruszenia podpisu

Wykrywanie naruszenia podpisu

Wykrywanie kompromisu podpisu

SignaturesCompromiseDetector jest punktem wejścia do tego przewodnika: przegląda historię wersji podpisanego dokumentu w poszukiwaniu wskazań, że treść została dodana po zastosowaniu ostatniego podpisu, i zgłasza to, co znajdzie, jako CompromiseCheckResult. To jest zakres bezpieczeństwa objęty tym klastrem bazy wiedzy — nie obejmuje tworzenia ani stosowania podpisów ani szyfrowania dokumentów; analizuje jedynie podpisy, które już istnieją w dokumencie.


Uruchamianie kontroli kompromisu

Konstrukcja SignaturesCompromiseDetector z dokumentem, który chcesz zbadać, a następnie wywołanie SignaturesCompromiseDetector.check(). Kontrola przegląda każdy podpis już obecny w dokumencie i szuka niepodpisanych bajtów dołączonych po ostatniej podpisanej wersji — znak, że treść mogła zostać później nałożona — jednocześnie tolerując legalny materiał długoterminowej weryfikacji (tak jak magazyn zabezpieczeń dokumentu lub znacznik czasu archiwum) dodany przez późniejszy, obejmujący podpis.


Interpretacja wyniku

SignaturesCompromiseDetector.check() zwraca CompromiseCheckResult z czterema właściwościami:

  • CompromiseCheckResult.has_compromised_signatures — True, jeśli którykolwiek podpis wykazał wskaźnik manipulacji.
  • CompromiseCheckResult.compromised — odzwierciedla CompromiseCheckResult.has_compromised_signatures, udostępniony jako alias tylko do odczytu dla wygody.
  • CompromiseCheckResult.signatures_coverage — liczba podpisów, które detektor zbadał w dokumencie.
  • CompromiseCheckResult.reasons — lista krótkich ciągów opisujących, dlaczego dokument został oznaczony, oraz kiedy to nastąpiło.

Dokument bez podpisów, lub brak dokumentu, jest zgłaszany jako nie naruszony, przy czym CompromiseCheckResult.signatures_coverage jest równe 0.


Wskazówki i najlepsze praktyki

  • Traktuj CompromiseCheckResult.compromised i CompromiseCheckResult.has_compromised_signatures jako wymienne — zawsze raportują tę samą wartość.
  • Sprawdź CompromiseCheckResult.signatures_coverage przed zaufaniem wynikowi False: pokrycie 0 oznacza, że detektor nie znalazł podpisów do zbadania, a nie że istniejące podpisy zostały zweryfikowane jako nienaruszone.
  • Przeczytaj CompromiseCheckResult.reasons, gdy CompromiseCheckResult.has_compromised_signatures wynosi True — lista wyjaśnia, która heurystyka została uruchomiona, co jest przydatne przy logowaniu lub prezentowaniu wyniku recenzentowi.
  • SignaturesCompromiseDetector sprawdza historię wersji pod kątem wskaźników manipulacji; nie weryfikuje samodzielnie integralności podpisu kryptograficznego, dlatego połącz go z wynikami weryfikacji podpisu dokumentu tam, gdzie ma to znaczenie w twoim przepływie pracy.

Typowe problemy

ProblemPrzyczynaRozwiązanie
CompromiseCheckResult.signatures_coverage jest 0 dla dokumentu, o którym wiesz, że jest podpisanySignaturesCompromiseDetector został utworzony bez dokumentu lub obiekt dokumentu nie ma dostępnych podpisówUpewnij się, że dokument przekazany do SignaturesCompromiseDetector udostępnia swoje podpisy przed wywołaniem SignaturesCompromiseDetector.check()
CompromiseCheckResult.reasons jest pusty, mimo że oczekiwałeś wyjaśnieniaCompromiseCheckResult.has_compromised_signatures jest False dla tego dokumentuPowody są wypełniane tylko wtedy, gdy faktycznie wykryto wskaźnik naruszenia; pustą listę w wyniku czystym należy się spodziewać
Legalnie zaktualizowany PDF (np. z dodanym znacznikiem czasu długoterminowej weryfikacji) jest oznaczony jako naruszonyPóźniejsze dodanie nie jest w pełni objęte późniejszym podpisem lub nie jest rozpoznawane jako materiał jedynie do weryfikacjiUruchom ponownie sprawdzenie po potwierdzeniu, że aktualizacja została dokonana przy użyciu właściwego podpisu pokrywającego lub znacznika czasu, i sprawdź CompromiseCheckResult.reasons pod kątem konkretnego wyzwalacza

FAQ

Co tak naprawdę sprawdza CompromiseCheckResult.compromised?

Zgłasza tę samą wartość co CompromiseCheckResult.has_compromised_signatures: czy SignaturesCompromiseDetector.check() wykryło jakikolwiek wskaźnik manipulacji w podpisach dokumentu.

Czy signatures_coverage o wartości 0 oznacza, że dokument jest bezpieczny?

Nie — oznacza to, że nie znaleziono podpisów do zbadania. SignaturesCompromiseDetector nie może raportować o podpisach, których nie widzi, więc pokrycie 0 jest wynikiem „nothing to check”, a nie potwierdzeniem integralności.

Czy SignaturesCompromiseDetector może tworzyć lub weryfikować podpis kryptograficzny?

Nie. Sprawdza jedynie istniejącą historię wersji dokumentu pod kątem wskazań, że treść została dodana po ostatnim podpisie. Tworzenie, stosowanie lub kryptograficzne weryfikowanie podpisów wykracza poza zakres działania tej klasy.

Czy dodanie legalnego znacznika czasu po podpisaniu zawsze wywoła wykrycie naruszenia?

Niekoniecznie. Wykrywacz jest zaprojektowany tak, aby tolerować późniejsze dodatki, które są objęte kolejnym podpisem, lub które dodają jedynie materiały weryfikacyjne, a nie nową treść. Sprawdź CompromiseCheckResult.reasons, jeśli napotkasz nieoczekiwane wykrycie.


API Reference Podsumowanie

Klasa/MetodaOpis
SignaturesCompromiseDetectorSprawdza podpisany dokument pod kątem wskaźników manipulacji po ostatnim podpisie
SignaturesCompromiseDetector.check()Uruchamia sprawdzenie i zwraca CompromiseCheckResult
CompromiseCheckResultWynik sprawdzenia kompromisu
CompromiseCheckResult.compromisedAlias w trybie tylko do odczytu dla CompromiseCheckResult.has_compromised_signatures
CompromiseCheckResult.has_compromised_signaturesCzy wykryto wskaźnik manipulacji
CompromiseCheckResult.signatures_coverageLiczba sprawdzonych podpisów
CompromiseCheckResult.reasonsKrótkie ciągi wyjaśniające każde znalezisko

Zobacz także

 Polski