Ga naar inhoud
getnextpdf.com

Redactie is geen zwarte rechthoek

Spec: ISO 32000-2, §7.11Spec: ISO 32000-2, §14.13.5

Een zwarte rechthoek getekend over een naam verbergt niets. De pagina ziet er geredigeerd uit, maar de tekst eronder is er nog steeds, nog steeds selecteerbaar, nog steeds kopieerbaar. Echte redactie dekt de inhoud niet af. Het verwijdert die.

Deze pagina legt de kloof uit tussen een cosmetische overlay en echte inhoudsverwijdering, waarom metadata en ingebedde bestanden een naïeve klus overleven, en hoe de NextPDF enterprise RedactionEngine weigert te doen alsof een regio weg is wanneer het die niet daadwerkelijk kan verwijderen.

De meest aangehaalde PDF-datalekken waren geen slimme aanvallen. Het waren zwarte rechthoeken. Iemand tekende een gevuld vlak over een gevoelige paragraaf, exporteerde het bestand en stuurde het op. De ontvanger drukte op het vlak, sleepte eroverheen, en de oorspronkelijke woorden kopieerden zo uit het document op het klembord.

De reden is structureel. Een PDF-pagina is een set tekenoperatoren die in volgorde zijn gelaagd. Een ondoorzichtige rechthoek schilderen voegt er één operator bovenop toe; het verwijdert de tekst-toon-operator eronder niet. Voor het oog is de tekst verborgen. Voor de machine staat hij precies waar hij altijd stond. De overlay is een vermomming, en een vermomming gaat af.

Dit is duur omdat het falen stil en definitief is. Het document ziet er correct uit, doorstaat een visuele review en wordt gepubliceerd. Het lek wordt later ontdekt door iemand die de tekst selecteerde, en dan is elk exemplaar al de deur uit.

  • Een zwart vlak is een tekenbewerking die over de tekst is gelaagd, geen verwijdering ervan. De bytes overleven.
  • Selecteerbare tekst overleeft omdat de pagina-inhoudsstream nog steeds de glyphs draagt die de woorden tekenen.
  • Documentmetadata overleeft omdat die op een aparte plek leeft — de document information dictionary en het XMP-packet — die geen rechthoek op een pagina kan bereiken.
  • Ingebedde bestanden overleven omdat een PDF hele bestanden in zich kan dragen als embedded file streams. Spec: ISO 32000-2, §7.11 Een markering op een pagina raakt een bijlage nooit aan.
  • Echte redactie is destructief. Het verwijdert de inhoud uit de byte-stream, niet uit het beeld. Wat weg is, is weg, en de residu-oppervlakken worden ook opgeschoond.

Een cosmetische overlay verandert hoe een pagina eruit ziet. Destructieve redactie verandert wat het document bevat. Het eerste is omkeerbaar door iedereen met een tekstcursor. Het tweede laat niets te herstellen achter.

De NextPDF enterprise RedactionEngine is gebouwd voor het destructieve geval op het tekstinhoudsniveau. Zijn redact()-methode neemt de inhoud, een RedactionPolicy die beschrijft wat te vinden en hoe het te vervangen, en geeft een RedactionResult terug. Van binnen detecteert hij de gevoelige spans, voegt overlappende samen tot disjuncte dekkende ranges, en herschrijft vervolgens de inhoudsstring met substr_replace zodat elke gedekte byte precies één keer wordt verwijderd. De gevoelige tekst wordt niet overschilderd. Hij is weg uit de buffer die het resultaat terugdraagt.

Het resultaat is eerlijk over wat er is gebeurd: het legt de SHA-256-hash van de oorspronkelijke inhoud vast, de herschreven redactedContent, een auditrapport van elke bevinding, en een wasModified-vlag. Je kunt bewijzen dat de bytes zijn veranderd, en je kunt bewijzen welke.

De zichtbare tekst verwijderen is noodzakelijk maar niet voldoende. Dezelfde woorden, en woorden die je nooit op de pagina zag, verbergen zich op plekken die een bewerking op paginaniveau nooit bereikt.

Een document draagt metadata dubbel: een oudere information dictionary en een XMP-packet, beide kunnen een auteursnaam, een titel of een tool-fingerprint bevatten. Het kan hele bestanden dragen als embedded file streams. Spec: ISO 32000-2, §7.11 Het kan die payloads aan paginastructuur binden als associated files, een gerelateerd-artefact-kanaal dat de pagina niet rendert maar het document toch vasthoudt. Spec: ISO 32000-2, §14.13.5 Geen van deze staat op de pagina die je hebt geredigeerd, dus geen ervan wordt door een rechthoek aangeraakt. De klassieke richtlijn hierover — het NSA-rapport “Hidden Data and Metadata in Adobe PDF Files” — bestaat juist omdat zoveel echte lekken uit het residu kwamen, niet uit de zichtbare pagina.

Een redactie die de woorden op de pagina verwijdert maar de naam van de auteur in het XMP-packet en de oorspronkelijke spreadsheet als bijlage achterlaat, heeft het document niet geredigeerd. Het heeft één aanzicht ervan geredigeerd.

  1. DetectFind every sensitive span — visible text, and the entity types a policy targets — not just the region you happen to see.
  2. 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.
  3. Clear the residueStrip the information dictionary and XMP metadata, and remove embedded and associated files that carry the same payload off-page.
  4. VerifyConfirm no selectable text, metadata field, or attachment reproduces the redacted content before the file leaves the building.
Wat een complete destructieve redactie verwijdert, op volgorde: detecteer de gevoelige inhoud, verwijder de bytes uit de inhoudsstream in plaats van eroverheen te tekenen, schoon vervolgens de residu-oppervlakken op — metadata en ingebedde payloads — die een markering op paginaniveau nooit bereikt, en verifieer ten slotte dat er niets kopieerbaars overleefde.

Er zijn twee manieren om te redigeren: op inhoud (vind deze naam, verwijder hem) en op zone (schilder deze rechthoek van de pagina weg, wat er ook onder zit). De enterprise engine doet de eerste naar waarheid. Het doet bewust niet alsof het de tweede doet.

De redact()-methode accepteert een derde argument, een lijst van ZoneRedaction-coördinaatregio’s. De tekstinhoud-engine heeft geen pagina-inhoud-overlay-sink — geen manier om daadwerkelijk te verwijderen wat zich binnen een coördinaatvak bevindt. Dus wanneer die lijst niet leeg is, tekent hij geen rechthoek en noemt de zone niet “geredigeerd”. Hij werpt een getypeerde RuntimeException en zegt je de zone in plaats daarvan door een pagina-inhoud-redactiepijplijn te leiden.

Die weigering is het hele punt van deze pagina omgezet in code. De engine stopt liever en benoemt wat het niet kan doen dan een “geredigeerde” bevinding terug te geven voor een regio die het volledig onaangeroerd liet. Een stille cosmetische overlay gerapporteerd als een verwijdering is precies de valse zekerheid die een lek produceert. Fail-closed verandert dat lek in een foutmelding die je ziet voordat je uitlevert.

“Ik heb er een zwart vlak overheen getekend, dus het is geredigeerd.”

Dit is de valkuil, en het is de meest voorkomende in het hele formaat. Een gevuld rechthoek is een tekeninstructie gestapeld bovenop de tekst. De tekst-toon-operatoren staan nog steeds in de inhoudsstream, de glyphs tekenen nog steeds, en een selectie of een kopie leest ze ongewijzigd uit. Je hebt een beeld verborgen; je hebt geen document gewijzigd.

Een tweede, subtielere valkuil: “Ik heb de tekst op de pagina verwijderd, dus het document is schoon.” Nog niet. Dezelfde inhoud, en inhoud die je nooit hebt getoond, kan blijven bestaan in de metadata en in ingebedde bestanden. Redactie is pas klaar wanneer elk oppervlak — pagina-inhoud, metadata en bijlagen — vrij is van wat je je had voorgenomen te verwijderen.

De eerlijke reikwijdte van wat NextPDF hier doet, per editie:

  • Core heeft helemaal geen documentredactie. Het levert een privacy-sanitizer voor audit-log-PII — gevoelige waarden uit je eigen diagnostische records houden — en dat is iets totaal anders dan het redigeren van een geleverde PDF. Als je op Core zit en je een document moet redigeren, is de capaciteit die je wilt niet aanwezig. Teken geen vlak en neem niet aan dat de engine iets heeft verwijderd.
  • De enterprise RedactionEngine redigeert tekstinhoud, destructief. Hij herschrijft de inhoudsbuffer om de gevoelige bytes te verwijderen en rapporteert een hash, een auditrapport en een wasModified-vlag zodat de verwijdering bewijsbaar is.
  • Coördinaatzone-redactie faalt fail-closed. Geef een niet-lege ZoneRedaction-lijst mee en de engine werpt in plaats van een overlay te veinzen. Dat is een bewuste veiligheidseigenschap, geen ontbrekende functie: een regio die het niet echt kan opschonen, is er een die het weigert schoon te noemen.
  • Elk residu-oppervlak opschonen is ook de verantwoordelijkheid van de operator. Zichtbare tekst verwijderen is één stap. Een complete klus stript ook de information dictionary, het XMP-packet en eventuele ingebedde of bijbehorende bestanden (Spec: ISO 32000-2, §7.11, Spec: ISO 32000-2, §14.13.5) die dezelfde payload buiten de pagina dragen.
Document redaction — edition availability
EditionAvailability
Core

Not in this edition. Core has no document redaction. It provides only an audit-log PII sanitiser, which keeps sensitive values out of your own diagnostic records — it does not redact a delivered PDF.

ProNot in this edition
Enterprise

Available. The enterprise RedactionEngine performs destructive text-content redaction and fails closed — it throws a typed exception — on coordinate-zone redaction it cannot truly fulfil, rather than painting a cosmetic overlay and reporting a region as removed.

  • Cosmetische overlay — een tekenbewerking, zoals een gevulde rechthoek, gelaagd over inhoud om die visueel te verbergen. Het verwijdert de inhoud eronder niet, die selecteerbaar en kopieerbaar blijft.
  • Destructieve redactie — verwijdering van de inhoud uit de byte-stream van het document, niet uit het beeld. Eenmaal gedaan is er niets eronder te herstellen.
  • Inhoudsstream — de geordende lijst van tekenoperatoren die een pagina renderen, inclusief de tekst-toon-operatoren die glyphs tekenen. Een vlak bovenop verwijdert de tekstoperatoren eronder niet.
  • Residu-oppervlak — een plek waar een document inhoud bewaart die de pagina niet toont: de information dictionary, het XMP-metadata-packet, en ingebedde of bijbehorende bestanden. Een complete redactie schoont ze allemaal op.
  • Embedded file stream — een heel bestand dat binnen in een PDF wordt gedragen (ISO 32000-2 §7.11). Een markering op een pagina raakt een bijlage nooit aan.
  • Fail closed — stoppen met een getypeerde fout wanneer een bewerking niet naar waarheid kan worden gedaan, in plaats van een aannemelijk uitziend resultaat te produceren dat fout is. De enterprise engine doet dit voor coördinaatzone-redactie die het niet kan vervullen.