La redazione non è un rettangolo nero
Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5
In sintesi
Sezione intitolata “In sintesi”Un rettangolo nero disegnato sopra un nome non nasconde nulla. La pagina sembra redatta, ma il testo sottostante è ancora lì, ancora selezionabile, ancora copiabile. La vera redazione non copre il contenuto. Lo cancella.
Questa pagina spiega il divario tra una sovrapposizione cosmetica e la vera rimozione del contenuto, perché i metadati e i file incorporati sopravvivono a un lavoro ingenuo, e come il RedactionEngine enterprise di NextPDF si rifiuta di fingere che una regione sia sparita quando non può effettivamente rimuoverla.
Perché è importante
Sezione intitolata “Perché è importante”Le violazioni di dati PDF più citate non erano attacchi ingegnosi. Erano rettangoli neri. Qualcuno ha disegnato un riquadro pieno sopra un paragrafo sensibile, ha esportato il file e lo ha spedito. Il destinatario ha premuto sul riquadro, ci ha trascinato sopra, e le parole originali sono state copiate dritte fuori dal documento sugli appunti.
Il motivo è strutturale. Una pagina PDF è un insieme di operatori di disegno stratificati in ordine. Dipingere un rettangolo opaco aggiunge un operatore in più sopra; non rimuove l’operatore di visualizzazione del testo sottostante. All’occhio il testo è nascosto. Alla macchina è esattamente dove è sempre stato. La sovrapposizione è un travestimento, e un travestimento si toglie.
Questo è costoso perché il fallimento è silenzioso e definitivo. Il documento sembra corretto, supera una revisione visiva, e viene pubblicato. La fuga viene scoperta più tardi da qualcuno che ha selezionato il testo, e a quel punto ogni copia è già fuori.
In breve
Sezione intitolata “In breve”- Un riquadro nero è un’operazione di disegno stratificata sopra il testo, non una sua cancellazione. I byte sopravvivono.
- Il testo selezionabile sopravvive perché il content stream della pagina porta ancora i glifi che disegnano le parole.
- I metadati del documento sopravvivono perché vivono in un posto separato — il document information dictionary e il pacchetto XMP — che nessun rettangolo su una pagina può raggiungere.
- I file incorporati sopravvivono perché un PDF può portare interi file al suo interno come embedded file stream. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Un segno su una pagina non tocca mai un allegato.
- La vera redazione è distruttiva. Rimuove il contenuto dal byte stream, non dall’immagine. Ciò che è sparito è sparito, e anche le superfici di residuo vengono ripulite.
Come NextPDF lo affronta
Sezione intitolata “Come NextPDF lo affronta”Cosmetico contro distruttivo, con precisione
Sezione intitolata “Cosmetico contro distruttivo, con precisione”Una sovrapposizione cosmetica cambia ciò che una pagina sembra. La redazione distruttiva cambia ciò che il documento contiene. La prima è reversibile da chiunque abbia un cursore di testo. La seconda non lascia nulla da recuperare.
Il RedactionEngine enterprise di NextPDF è costruito per il caso distruttivo a
livello di contenuto testuale. Il suo metodo redact() prende il contenuto, una
RedactionPolicy che descrive cosa trovare e come sostituirlo, e restituisce un
RedactionResult. Al suo interno, rileva gli intervalli sensibili, fonde quelli
sovrapposti in intervalli di copertura disgiunti, e poi riscrive la stringa del
contenuto con substr_replace così che ogni byte coperto sia rimosso
esattamente una volta. Il testo sensibile non è dipinto sopra. È sparito dal
buffer che il risultato riporta indietro.
Il risultato è onesto su ciò che è successo: registra l’hash SHA-256 del
contenuto originale, il redactedContent riscritto, un audit report di ogni
ritrovamento, e un flag wasModified. Si può provare che i byte sono cambiati, e
si può provare quali.
Il residuo che si deve inseguire
Sezione intitolata “Il residuo che si deve inseguire”Rimuovere il testo visibile è necessario ma non sufficiente. Le stesse parole, e parole che non si sono mai viste sulla pagina, si nascondono in posti che una modifica a livello di pagina non raggiunge mai.
Un documento porta i metadati due volte: un vecchio information dictionary e un pacchetto XMP, ognuno dei quali può contenere il nome di un autore, un titolo, o l’impronta di uno strumento. Può portare interi file come embedded file stream. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Può vincolare quei payload alla struttura della pagina come file associati, un canale di artefatti correlati che la pagina non renderizza ma che il documento mantiene comunque. Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5 Nessuno di questi è sulla pagina che si è redatta, quindi nessuno di essi è toccato da un rettangolo. La guida classica su questo — il report della NSA «Hidden Data and Metadata in Adobe PDF Files» — esiste proprio perché così tante fughe reali provenivano dal residuo, non dalla pagina visibile.
Una redazione che cancella le parole sulla pagina ma lascia il nome dell’autore nel pacchetto XMP e il foglio di calcolo originale come allegato non ha redatto il documento. Ne ha redatto una vista.
- DetectFind every sensitive span — visible text, and the entity types a policy targets — not just the region you happen to see.
- Delete, do not coverRewrite the content stream so the glyphs are removed from the bytes. An opaque box on top leaves the text underneath intact.
- Clear the residueStrip the information dictionary and XMP metadata, and remove embedded and associated files that carry the same payload off-page.
- VerifyConfirm no selectable text, metadata field, or attachment reproduces the redacted content before the file leaves the building.
Fallire in modo chiuso invece di simularla
Sezione intitolata “Fallire in modo chiuso invece di simularla”Ci sono due modi di redigere: per contenuto (trova questo nome, cancellalo) e per zona (dipingi via questo rettangolo della pagina, qualunque cosa ci sia sotto). Il motore enterprise fa il primo con verità. Deliberatamente non finge di fare il secondo.
Il metodo redact() accetta un terzo argomento, una lista di regioni di
coordinate ZoneRedaction. Il motore a contenuto testuale non ha alcun sink di
sovrapposizione del contenuto di pagina — nessun modo di rimuovere effettivamente
ciò che si trova dentro un riquadro di coordinate. Quindi quando quella lista non
è vuota, non disegna un rettangolo e chiama la zona «redatta». Solleva una
RuntimeException tipizzata e dice di instradare la zona attraverso una pipeline
di redazione del contenuto di pagina.
Quel rifiuto è l’intero punto di questa pagina trasformato in codice. Il motore preferisce fermarsi e nominare ciò che non può fare piuttosto che restituire un ritrovamento «redatto» per una regione che ha lasciato completamente intatta. Una sovrapposizione cosmetica silenziosa riportata come una rimozione è esattamente la falsa rassicurazione che produce una violazione. Fallire in modo chiuso trasforma quella violazione in un messaggio di errore che si vede prima di spedire.
Equivoco comune
Sezione intitolata “Equivoco comune”«Ho disegnato un riquadro nero sopra, quindi è redatto.»
Questa è la trappola, ed è la più comune dell’intero formato. Un rettangolo pieno è un’istruzione di disegno impilata sopra il testo. Gli operatori di visualizzazione del testo sono ancora nel content stream, i glifi disegnano ancora, e una selezione o una copia li legge fuori invariati. Si è nascosta un’immagine; non si è cambiato un documento.
Una seconda trappola, più sottile: «Ho cancellato il testo sulla pagina, quindi il documento è pulito.» Non ancora. Lo stesso contenuto, e contenuto che non si è mai mostrato, può persistere nei metadati e nei file incorporati. La redazione è finita solo quando ogni superficie — contenuto di pagina, metadati e allegati — è libera da ciò che ci si era proposti di rimuovere.
Limiti e confini
Sezione intitolata “Limiti e confini”L’ambito onesto di ciò che NextPDF fa qui, per edizione:
- Core non ha alcuna redazione di documenti. Fornisce un sanitizzatore di privacy per le PII dei log di audit — tenendo i valori sensibili fuori dai tuoi stessi record diagnostici — e questa è una cosa del tutto diversa dal redigere un PDF consegnato. Se si è su Core e si ha bisogno di redigere un documento, la capacità che si vuole non è presente. Non si disegni un riquadro presumendo che il motore abbia rimosso qualcosa.
- Il
RedactionEngineenterprise redige il contenuto testuale, in modo distruttivo. Riscrive il buffer del contenuto per rimuovere i byte sensibili e riporta un hash, un audit report e un flagwasModifiedcosì che la rimozione sia dimostrabile. - La redazione per zona di coordinate fallisce in modo chiuso. Si passi una
lista
ZoneRedactionnon vuota e il motore solleva un’eccezione anziché simulare una sovrapposizione. È una proprietà di sicurezza deliberata, non una funzionalità mancante: una regione che non può davvero ripulire è una che si rifiuta di chiamare pulita. - Ripulire ogni superficie di residuo è anch’essa responsabilità dell’operatore. Rimuovere il testo visibile è un passo. Un lavoro completo spoglia anche l’information dictionary, il pacchetto XMP, e qualsiasi file incorporato o associato (Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11, Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5) che porti lo stesso payload fuori dalla pagina.
| Edition | Availability |
|---|---|
| Core | Non in questa edizione. Core non ha alcuna redazione di documenti. Fornisce solo un sanitizzatore di PII per i log di audit, che tiene i valori sensibili fuori dai tuoi stessi record diagnostici — non redige un PDF consegnato. |
| Pro | Not in this edition |
| Enterprise | Disponibile. Il RedactionEngine enterprise esegue una redazione distruttiva del contenuto testuale e fallisce in modo chiuso — solleva un’eccezione tipizzata — su una redazione per zona di coordinate che non può davvero adempiere, anziché dipingere una sovrapposizione cosmetica e riportare una regione come rimossa. |
Documenti correlati
Sezione intitolata “Documenti correlati”- Come funziona davvero la cifratura dei PDF — perché cifrare un file non è lo stesso che rimuoverne il contenuto, e dove ciascuno protegge.
- Metadati e pacchetto XMP — la superficie di residuo che una redazione a livello di pagina non tocca mai, in dettaglio.
- Un’API che si rifiuta di indovinare — la stessa postura fail-closed che il motore di redazione applica a una zona che non può adempiere.
Glossario
Sezione intitolata “Glossario”- Sovrapposizione cosmetica — un’operazione di disegno, come un rettangolo pieno, stratificata sul contenuto per nasconderlo visivamente. Non rimuove il contenuto sottostante, che resta selezionabile e copiabile.
- Redazione distruttiva — rimozione del contenuto dal byte stream del documento, non dall’immagine. Una volta fatta, non c’è nulla sotto da recuperare.
- Content stream — la lista ordinata di operatori di disegno che renderizzano una pagina, inclusi gli operatori di visualizzazione del testo che disegnano i glifi. Un riquadro sopra non cancella gli operatori di testo sottostanti.
- Superficie di residuo — un posto dove un documento mantiene contenuto che la pagina non mostra: l’information dictionary, il pacchetto di metadati XMP, e i file incorporati o associati. Una redazione completa li ripulisce tutti.
- Embedded file stream — un intero file portato dentro un PDF (ISO 32000-2 §7.11). Un segno su una pagina non tocca mai un allegato.
- Fallire in modo chiuso — fermarsi con un errore tipizzato quando un’operazione non può essere eseguita con verità, anziché produrre un risultato dall’aspetto plausibile che è sbagliato. Il motore enterprise fa questo per la redazione per zona di coordinate che non può adempiere.