Schwärzung ist kein schwarzes Rechteck
Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Ein schwarzes Rechteck über einem Namen verbirgt nichts. Die Seite sieht geschwärzt aus, aber der Text darunter ist immer noch da, immer noch auswählbar, immer noch kopierbar. Echte Schwärzung deckt den Inhalt nicht ab. Sie löscht ihn.
Diese Seite erklärt die Lücke zwischen einer kosmetischen Überlagerung und echter Inhaltsentfernung, warum Metadaten und eingebettete Dateien eine naive Arbeit überleben und wie die NextPDF-Enterprise-RedactionEngine sich weigert vorzutäuschen, dass ein Bereich weg ist, wenn sie ihn nicht tatsächlich entfernen kann.
Warum das wichtig ist
Abschnitt betitelt „Warum das wichtig ist“Die meistzitierten PDF-Datenpannen waren keine raffinierten Angriffe. Sie waren schwarze Rechtecke. Jemand zeichnete einen gefüllten Kasten über einen sensiblen Absatz, exportierte die Datei und schickte sie ab. Der Empfänger drückte auf den Kasten, zog darüber, und die ursprünglichen Worte kopierten sich direkt aus dem Dokument in die Zwischenablage.
Der Grund ist strukturell. Eine PDF-Seite ist eine Menge von Zeichenoperatoren, in Reihenfolge geschichtet. Ein undurchsichtiges Rechteck zu malen fügt obenauf einen weiteren Operator hinzu; es entfernt nicht den Textanzeige-Operator darunter. Für das Auge ist der Text verborgen. Für die Maschine ist er genau dort, wo er immer war. Die Überlagerung ist ein Kostüm, und ein Kostüm zieht man aus.
Das ist teuer, weil der Fehler still und endgültig ist. Das Dokument sieht korrekt aus, besteht eine Sichtprüfung und wird veröffentlicht. Die Panne wird später von jemandem entdeckt, der den Text ausgewählt hat, und bis dahin ist jede Kopie bereits draußen.
Die Kurzfassung
Abschnitt betitelt „Die Kurzfassung“- Ein schwarzer Kasten ist eine über den Text geschichtete Zeichenoperation, keine Löschung davon. Die Bytes überleben.
- Auswählbarer Text überlebt, weil der Seiteninhalts-Stream immer noch die Glyphen trägt, die die Worte zeichnen.
- Dokumentmetadaten überleben, weil sie an einer separaten Stelle leben – dem Document-Information-Dictionary und dem XMP-Paket –, die kein Rechteck auf einer Seite erreichen kann.
- Eingebettete Dateien überleben, weil ein PDF ganze Dateien als eingebettete Dateistreams in sich tragen kann. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Ein Zeichen auf einer Seite berührt einen Anhang nie.
- Echte Schwärzung ist zerstörend. Sie entfernt den Inhalt aus dem Byte-Stream, nicht aus dem Bild. Was weg ist, ist weg, und die Rückstandsoberflächen werden auch bereinigt.
Wie NextPDF dabei vorgeht
Abschnitt betitelt „Wie NextPDF dabei vorgeht“Kosmetisch gegen zerstörend, genau
Abschnitt betitelt „Kosmetisch gegen zerstörend, genau“Eine kosmetische Überlagerung ändert, wie eine Seite aussieht. Eine zerstörende Schwärzung ändert, was das Dokument enthält. Das Erste ist von jedem mit einem Textcursor umkehrbar. Das Zweite lässt nichts zum Wiederherstellen übrig.
Die NextPDF-Enterprise-RedactionEngine ist für den zerstörenden Fall auf der Ebene
des Textinhalts gebaut. Ihre redact()-Methode nimmt den Inhalt, eine
RedactionPolicy, die beschreibt, was zu finden und wie es zu ersetzen ist, und gibt
ein RedactionResult zurück. Im Inneren erkennt sie die sensiblen Spannen, fasst alle
überlappenden zu disjunkten abdeckenden Bereichen zusammen und schreibt dann den
Inhalts-String mit substr_replace um, sodass jedes abgedeckte Byte genau einmal
entfernt wird. Der sensible Text wird nicht übermalt. Er ist aus dem Puffer, den das
Ergebnis zurückträgt, verschwunden.
Das Ergebnis ist ehrlich darüber, was geschehen ist: Es erfasst den
SHA-256-Hash des Originalinhalts, den umgeschriebenen redactedContent, einen
Prüfbericht jedes Fundes und ein wasModified-Flag. Sie können beweisen, dass sich
die Bytes geändert haben, und Sie können beweisen, welche.
Der Rückstand, dem Sie nachgehen müssen
Abschnitt betitelt „Der Rückstand, dem Sie nachgehen müssen“Den sichtbaren Text zu entfernen ist notwendig, aber nicht hinreichend. Dieselben Worte, und Worte, die Sie nie auf der Seite gesehen haben, verstecken sich an Stellen, die eine Bearbeitung auf Seitenebene nie erreicht.
Ein Dokument trägt Metadaten doppelt: ein altes Information-Dictionary und ein XMP-Paket, von denen jedes einen Autorennamen, einen Titel oder einen Werkzeug-Fingerabdruck halten kann. Es kann ganze Dateien als eingebettete Dateistreams tragen. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Es kann diese Nutzlasten als zugeordnete Dateien an die Seitenstruktur binden, einen Kanal für verwandte Artefakte, den die Seite nicht rendert, das Dokument aber dennoch hält. Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5 Nichts davon befindet sich auf der Seite, die Sie geschwärzt haben, also wird nichts davon von einem Rechteck berührt. Der klassische Leitfaden hierzu – der NSA-Bericht „Hidden Data and Metadata in Adobe PDF Files” – existiert gerade deshalb, weil so viele echte Pannen aus dem Rückstand stammten, nicht aus der sichtbaren Seite.
Eine Schwärzung, die die Worte auf der Seite löscht, aber den Autorennamen im XMP-Paket und die ursprüngliche Tabellenkalkulation als Anhang belässt, hat das Dokument nicht geschwärzt. Sie hat eine Ansicht davon geschwärzt.
- 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.
Fail-closed statt Vortäuschen
Abschnitt betitelt „Fail-closed statt Vortäuschen“Es gibt zwei Wege zu schwärzen: nach Inhalt (finde diesen Namen, lösche ihn) und nach Zone (übermale dieses Rechteck der Seite, was auch immer darunter ist). Die Enterprise-Engine erledigt den ersten wahrheitsgemäß. Sie täuscht bewusst nicht vor, den zweiten zu tun.
Die redact()-Methode akzeptiert ein drittes Argument, eine Liste von
ZoneRedaction-Koordinatenbereichen. Die Textinhalts-Engine hat keine Senke zur
Überlagerung von Seiteninhalt – keine Möglichkeit, tatsächlich zu entfernen, was in
einem Koordinatenkasten sitzt. Wenn diese Liste also nicht leer ist, zeichnet sie kein
Rechteck und nennt die Zone „geschwärzt”. Sie wirft eine typisierte RuntimeException
und weist Sie an, die Zone stattdessen durch eine Schwärzungspipeline für Seiteninhalt
zu leiten.
Diese Weigerung ist der ganze Sinn dieser Seite, in Code gegossen. Die Engine hält lieber an und benennt, was sie nicht kann, als ein „geschwärzt”-Ergebnis für einen Bereich zurückzugeben, den sie völlig unberührt ließ. Eine stille kosmetische Überlagerung, gemeldet als Entfernung, ist genau die falsche Zusicherung, die eine Panne erzeugt. Fail-closed verwandelt diese Panne in eine Fehlermeldung, die Sie sehen, bevor Sie ausliefern.
Häufiges Missverständnis
Abschnitt betitelt „Häufiges Missverständnis“„Ich habe einen schwarzen Kasten darüber gezeichnet, also ist es geschwärzt.”
Das ist die Falle, und es ist die häufigste im ganzen Format. Ein gefülltes Rechteck ist eine Zeichenanweisung, gestapelt auf den Text. Die Textanzeige-Operatoren sind immer noch im Inhalts-Stream, die Glyphen zeichnen immer noch, und eine Auswahl oder ein Kopieren liest sie unverändert aus. Sie haben ein Bild verborgen; Sie haben kein Dokument geändert.
Eine zweite, subtilere Falle: „Ich habe den Text auf der Seite gelöscht, also ist das Dokument sauber.” Noch nicht. Derselbe Inhalt, und Inhalt, den Sie nie angezeigt haben, kann in den Metadaten und in eingebetteten Dateien fortbestehen. Die Schwärzung ist erst abgeschlossen, wenn jede Oberfläche – Seiteninhalt, Metadaten und Anhänge – frei von dem ist, was Sie zu entfernen vorhatten.
Grenzen und Abgrenzungen
Abschnitt betitelt „Grenzen und Abgrenzungen“Der ehrliche Geltungsbereich dessen, was NextPDF hier tut, nach Edition:
- Core hat überhaupt keine Dokumentschwärzung. Es liefert einen Datenschutz-Sanitizer für Prüfprotokoll-PII – der sensible Werte aus Ihren eigenen Diagnoseaufzeichnungen heraushält – und das ist etwas völlig anderes als das Schwärzen eines ausgelieferten PDF. Wenn Sie auf Core sind und ein Dokument schwärzen müssen, ist die gewünschte Fähigkeit nicht vorhanden. Zeichnen Sie keinen Kasten und nehmen Sie nicht an, die Engine habe irgendetwas entfernt.
- Die Enterprise-
RedactionEngineschwärzt Textinhalt, zerstörend. Sie schreibt den Inhaltspuffer um, um die sensiblen Bytes zu entfernen, und meldet einen Hash, einen Prüfbericht und einwasModified-Flag, sodass die Entfernung beweisbar ist. - Koordinatenzonen-Schwärzung verfährt fail-closed. Übergeben Sie eine nicht leere
ZoneRedaction-Liste, und die Engine wirft eine Ausnahme, statt eine Überlagerung vorzutäuschen. Das ist eine bewusste Sicherheitseigenschaft, kein fehlendes Feature: Ein Bereich, den sie nicht wahrhaftig bereinigen kann, ist einer, den sie sich weigert, sauber zu nennen. - Jede Rückstandsoberfläche zu bereinigen, ist ebenfalls die Verantwortung des Betreibers. Sichtbaren Text zu entfernen ist ein Schritt. Eine vollständige Arbeit entfernt auch das Information-Dictionary, das XMP-Paket und alle eingebetteten oder zugeordneten Dateien (Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11, Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5), die dieselbe Nutzlast abseits der Seite tragen.
| Edition | Availability |
|---|---|
| Core | Nicht in dieser Edition. Core hat keine Dokumentschwärzung. Es bietet nur einen Prüfprotokoll-PII-Sanitizer, der sensible Werte aus Ihren eigenen Diagnoseaufzeichnungen heraushält – er schwärzt kein ausgeliefertes PDF. |
| Pro | Not in this edition |
| Enterprise | Verfügbar. Die Enterprise-RedactionEngine führt zerstörende Textinhaltsschwärzung durch und verfährt fail-closed – sie wirft eine typisierte Ausnahme – bei Koordinatenzonen-Schwärzung, die sie nicht wahrhaftig erfüllen kann, statt eine kosmetische Überlagerung zu malen und einen Bereich als entfernt zu melden. |
Verwandte Dokumente
Abschnitt betitelt „Verwandte Dokumente“- Wie PDF-Verschlüsselung wirklich funktioniert – warum eine Datei zu verschlüsseln nicht dasselbe ist wie Inhalt aus ihr zu entfernen, und wo jedes Sie schützt.
- Metadaten und das XMP-Paket – die Rückstandsoberfläche, die eine Schwärzung auf Seitenebene nie berührt, im Detail.
- Eine API, die sich weigert zu raten – die gleiche Fail-closed-Haltung, die die Schwärzungs-Engine auf eine Zone anwendet, die sie nicht erfüllen kann.
Glossar
Abschnitt betitelt „Glossar“- Kosmetische Überlagerung – eine Zeichenoperation, etwa ein gefülltes Rechteck, über Inhalt geschichtet, um ihn visuell zu verbergen. Sie entfernt nicht den Inhalt darunter, der auswählbar und kopierbar bleibt.
- Zerstörende Schwärzung – Entfernung des Inhalts aus dem Byte-Stream des Dokuments, nicht aus dem Bild. Einmal geschehen, gibt es darunter nichts wiederherzustellen.
- Inhalts-Stream – die geordnete Liste von Zeichenoperatoren, die eine Seite rendern, einschließlich der Textanzeige-Operatoren, die Glyphen zeichnen. Ein Kasten obenauf löscht nicht die Textoperatoren darunter.
- Rückstandsoberfläche – eine Stelle, an der ein Dokument Inhalt hält, den die Seite nicht anzeigt: das Information-Dictionary, das XMP-Metadaten-Paket und eingebettete oder zugeordnete Dateien. Eine vollständige Schwärzung bereinigt sie alle.
- Eingebetteter Dateistream – eine ganze Datei, getragen innerhalb eines PDF (ISO 32000-2 §7.11). Ein Zeichen auf einer Seite berührt einen Anhang nie.
- Fail-closed – mit einem typisierten Fehler anzuhalten, wenn eine Operation nicht wahrhaftig durchgeführt werden kann, statt ein plausibel aussehendes Ergebnis zu erzeugen, das falsch ist. Die Enterprise-Engine tut dies bei Koordinatenzonen-Schwärzung, die sie nicht erfüllen kann.