Rilevamento del compromesso della firma
Rilevamento della compromissione della firma
SignaturesCompromiseDetector è il punto di ingresso per questa guida: controlla la cronologia delle revisioni di un documento firmato per individuare indicatori che il contenuto sia stato aggiunto dopo l’ultima firma applicata, e restituisce ciò che trova come un CompromiseCheckResult. Questa è la superficie di sicurezza coperta da questo cluster della base di conoscenza — non copre la creazione o l’applicazione di firme, né la crittografia dei documenti; esamina solo le firme già presenti su un documento.
Esecuzione di un controllo di compromissione
Costruisci SignaturesCompromiseDetector con il documento che desideri ispezionare, quindi chiama SignaturesCompromiseDetector.check(). Il controllo percorre ogni firma già presente sul documento e cerca byte non firmati aggiunti dopo l’ultima revisione firmata — un segno che il contenuto potrebbe essere stato sovrapposto successivamente — pur tollerando materiale legittimo di validazione a lungo termine (come un archivio di sicurezza del documento o un timestamp di archivio) aggiunto da una firma successiva di copertura.
Interpretazione del risultato
SignaturesCompromiseDetector.check() restituisce un CompromiseCheckResult con quattro proprietà:
CompromiseCheckResult.has_compromised_signatures—Truese qualche firma ha mostrato un indicatore di manomissione.CompromiseCheckResult.compromised— rispecchiaCompromiseCheckResult.has_compromised_signatures, fornito come alias di comodità in sola lettura.CompromiseCheckResult.signatures_coverage— il numero di firme che il rilevatore ha esaminato sul documento.CompromiseCheckResult.reasons— un elenco di brevi stringhe che descrivono perché il documento è stato segnalato, quando è avvenuto.
Un documento senza firme, o nessun documento, viene segnalato come non compromesso, con CompromiseCheckResult.signatures_coverage pari a 0.
Suggerimenti e Buone Pratiche
- Considera
CompromiseCheckResult.compromisedeCompromiseCheckResult.has_compromised_signaturescome intercambiabili — riportano sempre lo stesso valore. - Verifica
CompromiseCheckResult.signatures_coverageprima di fidarti di un risultatoFalse: una copertura di0significa che il rilevatore non ha trovato firme da esaminare, non che le firme esistenti siano state verificate come intatte. - Leggi
CompromiseCheckResult.reasonsquandoCompromiseCheckResult.has_compromised_signaturesèTrue— l’elenco spiega quale euristica è stata attivata, utile durante la registrazione o la presentazione del risultato a un revisore. SignaturesCompromiseDetectoresamina la cronologia delle revisioni alla ricerca di indicatori di manomissione; non valida autonomamente l’integrità della firma crittografica, quindi accoppialo ai risultati di convalida delle firme del documento dove ciò è rilevante per il tuo flusso di lavoro.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
CompromiseCheckResult.signatures_coverage è 0 per un documento che sai essere firmato | SignaturesCompromiseDetector è stato costruito senza un documento, o l’oggetto documento non ha firme accessibili | Conferma che il documento passato a SignaturesCompromiseDetector esponga le sue firme prima di chiamare SignaturesCompromiseDetector.check() |
CompromiseCheckResult.reasons è vuoto anche se ti aspettavi una spiegazione | CompromiseCheckResult.has_compromised_signatures è False per questo documento | Le ragioni vengono popolate solo quando è stato effettivamente trovato un indicatore di compromissione; un elenco vuoto su un risultato pulito è previsto |
| Un PDF legittimamente aggiornato (ad es. con un timestamp di convalida a lungo termine aggiunto) viene segnalato come compromesso | L’aggiunta successiva non è completamente coperta da una firma successiva o non è riconosciuta come materiale solo di convalida | Riesegui il controllo dopo aver confermato che l’aggiornamento è stato effettuato da una firma o timestamp di copertura appropriato, e ispeziona CompromiseCheckResult.reasons per il trigger specifico |
FAQ
Cosa controlla effettivamente CompromiseCheckResult.compromised?
Riporta lo stesso valore di CompromiseCheckResult.has_compromised_signatures: se SignaturesCompromiseDetector.check() ha rilevato qualche indicatore di manomissione nelle firme del documento.
Un signatures_coverage di 0 significa che il documento è sicuro?
No — significa che non sono state trovate firme da esaminare. SignaturesCompromiseDetector non può segnalare firme che non può vedere, quindi una copertura 0 è un risultato di “nulla da controllare”, non una conferma di integrità.
Può SignaturesCompromiseDetector creare o verificare una firma crittografica?
No. Esamina solo la cronologia delle revisioni esistente di un documento alla ricerca di indicatori che il contenuto sia stato aggiunto dopo l’ultima firma. Creare, applicare o convalidare crittograficamente le firme è al di fuori di ciò che fa questa classe.
L’aggiunta di un timestamp legittimo dopo la firma attiverà sempre un avviso di compromissione?
Non necessariamente. Il rilevatore è progettato per tollerare un’aggiunta successiva che è essa stessa coperta da una firma successiva, o che aggiunge solo materiale di convalida anziché nuovo contenuto. Controlla CompromiseCheckResult.reasons se vedi un risultato inatteso.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
SignaturesCompromiseDetector | Ispeziona un documento firmato alla ricerca di indicatori di manomissione dopo l’ultima firma |
SignaturesCompromiseDetector.check() | Esegue il controllo e restituisce un CompromiseCheckResult |
CompromiseCheckResult | Il risultato di un controllo di compromissione |
CompromiseCheckResult.compromised | Alias di sola lettura per CompromiseCheckResult.has_compromised_signatures |
CompromiseCheckResult.has_compromised_signatures | Se è stato trovato un indicatore di manomissione |
CompromiseCheckResult.signatures_coverage | Il numero di firme esaminate |
CompromiseCheckResult.reasons | Brevi stringhe che spiegano eventuali riscontri |