Ανίχνευση Παραβίασης Υπογραφής
Ανίχνευση Παραβίασης Υπογραφής
SignaturesCompromiseDetector είναι το σημείο εισόδου για αυτόν τον οδηγό: εξετάζει το ιστορικό εκδόσεων ενός υπογεγραμμένου εγγράφου για ενδείξεις ότι περιεχόμενο προστέθηκε μετά την εφαρμογή της τελευταίας υπογραφής, και αναφέρει τα ευρήματά του ως CompromiseCheckResult. Αυτή είναι η ασφαλιστική επιφάνεια που καλύπτεται από αυτό το σύμπλεγμα της βάσης γνώσεων — δεν καλύπτει τη δημιουργία ή την εφαρμογή υπογραφών, ή την κρυπτογράφηση εγγράφων· εξετάζει μόνο υπογραφές που υπάρχουν ήδη σε ένα έγγραφο.
Διεξαγωγή Ελέγχου Παραβίασης
Δομήστε το SignaturesCompromiseDetector με το έγγραφο που θέλετε να εξετάσετε, στη συνέχεια καλέστε το SignaturesCompromiseDetector.check(). Ο έλεγχος διατρέχει κάθε υπογραφή που υπάρχει ήδη στο έγγραφο και ψάχνει για μη υπογεγραμμένα byte που έχουν προστεθεί μετά την τελευταία υπογεγραμμένη έκδοση — ένδειξη ότι το περιεχόμενο μπορεί να έχει επιπλέον στρώσεις — ενώ επιτρέπει το νόμιμο υλικό μακροπρόθεσμης επικύρωσης (όπως αποθήκευση ασφαλείας εγγράφου ή χρονική σήμανση αρχείου) που προστέθηκε από μεταγενέστερη, καλυπτική υπογραφή.
Ερμηνεία του Αποτελέσματος
SignaturesCompromiseDetector.check() επιστρέφει ένα CompromiseCheckResult με τέσσερις ιδιότητες:
CompromiseCheckResult.has_compromised_signatures—Trueεάν κάποια υπογραφή εμφάνισε ένδειξη παραποίησης.CompromiseCheckResult.compromised— αντιστοιχεί στοCompromiseCheckResult.has_compromised_signatures, παρέχεται ως ψευδώνυμο ευκολίας μόνο για ανάγνωση.CompromiseCheckResult.signatures_coverage— ο αριθμός των υπογραφών που εξέτασε ο ανιχνευτής στο έγγραφο.CompromiseCheckResult.reasons— μια λίστα σύντομων συμβολοσειρών που περιγράφουν γιατί και πότε το έγγραφο σημάνθηκε.
Ένα έγγραφο χωρίς υπογραφές, ή χωρίς καν έγγραφο, αναφέρεται ως μη παραβιασμένο, με το CompromiseCheckResult.signatures_coverage ίσο με 0.
Συμβουλές και Καλές Πρακτικές
- Θεωρήστε το
CompromiseCheckResult.compromisedκαι τοCompromiseCheckResult.has_compromised_signaturesως εναλλάξιμα — πάντα αναφέρουν την ίδια τιμή. - Ελέγξτε το
CompromiseCheckResult.signatures_coverageπριν εμπιστευτείτε ένα αποτέλεσμαFalse: μια κάλυψη του0σημαίνει ότι ο ανιχνευτής δεν βρήκε υπογραφές για εξέταση, όχι ότι οι υπάρχουσες υπογραφές επαληθεύτηκαν ως αμετάβλητες. - Διαβάστε το
CompromiseCheckResult.reasonsόταν τοCompromiseCheckResult.has_compromised_signaturesείναιTrue— η λίστα εξηγεί ποια ευρετική ενεργοποιήθηκε, κάτι χρήσιμο κατά την καταγραφή ή την παρουσίαση του αποτελέσματος σε έναν ελεγκτή. SignaturesCompromiseDetectorεξετάζει το ιστορικό εκδόσεων για ενδείξεις παραποίησης· δεν επικυρώνει την ακεραιότητα της κρυπτογραφικής υπογραφής από μόνη της, επομένως συνδυάστε το με τα αποτελέσματα επικύρωσης υπογραφής του εγγράφου όπου αυτό έχει σημασία για τη ροή εργασίας σας.
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
CompromiseCheckResult.signatures_coverage είναι 0 για ένα έγγραφο που γνωρίζετε ότι είναι υπογεγραμμένο | SignaturesCompromiseDetector δημιουργήθηκε χωρίς έγγραφο, ή το αντικείμενο εγγράφου δεν έχει προσβάσιμες υπογραφές | Επιβεβαιώστε ότι το έγγραφο που περνάει στο SignaturesCompromiseDetector εκθέτει τις υπογραφές του πριν καλέσετε το SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons είναι κενό παρόλο που περιμένατε μια εξήγηση | CompromiseCheckResult.has_compromised_signatures είναι False για αυτό το έγγραφο | Οι λόγοι συμπληρώνονται μόνο όταν εντοπιστεί πραγματικά δείκτης παραβίασης· αναμένεται μια κενή λίστα σε καθαρό αποτέλεσμα |
| Ένα νόμιμα ενημερωμένο PDF (π.χ. ένα με προστιθέμενο long-term-validation timestamp) επισημαίνεται ως παραβιασμένο | Η μεταγενέστερη προσθήκη δεν καλύπτεται πλήρως από μια επακόλουθη υπογραφή ή δεν αναγνωρίζεται ως validation-only material | Επαναλάβετε τον έλεγχο αφού επιβεβαιώσετε ότι η ενημέρωση έγινε από μια κατάλληλη καλυπτική υπογραφή ή χρονική σήμανση, και εξετάστε το CompromiseCheckResult.reasons για το συγκεκριμένο trigger |
FAQ
Τι ελέγχει πραγματικά το CompromiseCheckResult.compromised;
Αναφέρει την ίδια τιμή με το CompromiseCheckResult.has_compromised_signatures: εάν το SignaturesCompromiseDetector.check() βρήκε κάποια ένδειξη παραποίησης σε όλες τις υπογραφές του εγγράφου.
Σημαίνει ένα signatures_coverage του 0 ότι το έγγραφο είναι ασφαλές;
Όχι — σημαίνει ότι δεν βρέθηκαν υπογραφές για εξέταση. Το SignaturesCompromiseDetector δεν μπορεί να αναφέρει για υπογραφές που δεν μπορεί να δει, επομένως μια κάλυψη 0 είναι αποτέλεσμα «τίποτα προς έλεγχο», όχι επιβεβαίωση της ακεραιότητας.
Μπορεί το SignaturesCompromiseDetector να δημιουργήσει ή να επαληθεύσει μια κρυπτογραφική υπογραφή;
Όχι. Εξετάζει μόνο το υπάρχον ιστορικό αναθεωρήσεων ενός εγγράφου για δείκτες ότι το περιεχόμενο προστέθηκε μετά την τελευταία υπογραφή. Η δημιουργία, η εφαρμογή ή η κρυπτογραφική επικύρωση υπογραφών είναι εκτός του τι κάνει αυτή η κλάση.
Θα προκαλεί πάντα η προσθήκη έγκυρης χρονικής σήμανσης μετά την υπογραφή ένα εύρημα παραβίασης;
Όχι απαραίτητα. Ο ανιχνευτής έχει σχεδιαστεί ώστε να αντέχει μια μεταγενέστερη προσθήκη που καλύπτεται από μια επακόλουθη υπογραφή, ή που προσθέτει μόνο υλικό επικύρωσης αντί για νέο περιεχόμενο. Ελέγξτε το CompromiseCheckResult.reasons εάν δείτε ένα μη αναμενόμενο εύρημα.
API Reference Περίληψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
SignaturesCompromiseDetector | Εξετάζει ένα υπογεγραμμένο έγγραφο για ενδείξεις παραποίησης μετά την τελευταία υπογραφή |
SignaturesCompromiseDetector.check() | Εκτελεί τον έλεγχο και επιστρέφει ένα CompromiseCheckResult |
CompromiseCheckResult | Το αποτέλεσμα ενός ελέγχου παραβίασης |
CompromiseCheckResult.compromised | Ψευδώνυμο μόνο για ανάγνωση για CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | Εάν βρέθηκε δείκτης παραποίησης |
CompromiseCheckResult.signatures_coverage | Ο αριθμός των υπογραφών που εξετάστηκαν |
CompromiseCheckResult.reasons | Σύντομες συμβολοσειρές που εξηγούν οποιαδήποτε ευρέση |