Redação não é um retângulo preto
Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5
Visão geral
Seção intitulada “Visão geral”Um retângulo preto desenhado sobre um nome não esconde nada. A página parece redigida, mas o texto por baixo continua ali, ainda selecionável, ainda copiável. A redação de verdade não cobre o conteúdo. Ela o exclui.
Esta página explica a distância entre uma cobertura cosmética e a remoção real de conteúdo, por que metadados e arquivos embutidos sobrevivem a um trabalho ingênuo, e como o RedactionEngine enterprise do NextPDF se recusa a fingir que uma região sumiu quando não consegue de fato removê-la.
Por que isso importa
Seção intitulada “Por que isso importa”Os vazamentos de dados em PDF mais citados não foram ataques engenhosos. Foram retângulos pretos. Alguém desenhou uma caixa preenchida sobre um parágrafo sensível, exportou o arquivo e o enviou. O destinatário clicou na caixa, arrastou sobre ela, e as palavras originais foram copiadas direto do documento para a área de transferência.
A razão é estrutural. Uma página de PDF é um conjunto de operadores de desenho dispostos em ordem. Pintar um retângulo opaco acrescenta mais um operador no topo; isso não remove o operador de exibição de texto que está por baixo. Para o olho, o texto está oculto. Para a máquina, ele está exatamente onde sempre esteve. A cobertura é uma fantasia, e fantasia se tira.
Isso é caro porque a falha é silenciosa e definitiva. O documento parece correto, passa por uma revisão visual e é publicado. O vazamento é descoberto depois por alguém que selecionou o texto, e a essa altura cada cópia já saiu.
A versão resumida
Seção intitulada “A versão resumida”- Uma caixa preta é uma operação de desenho disposta sobre o texto, não uma exclusão dele. Os bytes sobrevivem.
- O texto selecionável sobrevive porque o content stream da página ainda carrega os glifos que desenham as palavras.
- Os metadados do documento sobrevivem porque vivem em um lugar separado — o document information dictionary e o XMP packet — que nenhum retângulo em uma página alcança.
- Os arquivos embutidos sobrevivem porque um PDF pode carregar arquivos inteiros dentro de si como embedded file streams. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Uma marca em uma página nunca toca em um anexo.
- A redação de verdade é destrutiva. Ela remove o conteúdo do byte stream, não da imagem. O que sumiu, sumiu, e as superfícies de resíduo também são limpas.
Como o NextPDF aborda isso
Seção intitulada “Como o NextPDF aborda isso”Cosmético versus destrutivo, com precisão
Seção intitulada “Cosmético versus destrutivo, com precisão”Uma cobertura cosmética muda como uma página parece. A redação destrutiva muda o que o documento contém. A primeira é reversível por qualquer pessoa com um cursor de texto. A segunda não deixa nada para recuperar.
O RedactionEngine enterprise do NextPDF foi construído para o caso destrutivo no
nível do conteúdo de texto. Seu método redact() recebe o conteúdo, uma
RedactionPolicy que descreve o que encontrar e como substituí-lo, e retorna um
RedactionResult. Internamente, ele detecta os trechos sensíveis, funde quaisquer
que se sobreponham em intervalos de cobertura disjuntos, e então reescreve a
string de conteúdo com substr_replace, de modo que cada byte coberto seja
removido exatamente uma vez. O texto sensível não é pintado por cima. Ele some do
buffer que o resultado carrega de volta.
O resultado é honesto sobre o que aconteceu: ele registra o hash SHA-256 do
conteúdo original, o redactedContent reescrito, um relatório de auditoria de cada
achado e um flag wasModified. Você consegue provar que os bytes mudaram, e
consegue provar quais.
O resíduo que você tem de perseguir
Seção intitulada “O resíduo que você tem de perseguir”Remover o texto visível é necessário, mas não suficiente. As mesmas palavras, e palavras que você nunca viu na página, escondem-se em lugares que uma edição em nível de página nunca alcança.
Um documento carrega metadados em duplicidade: um information dictionary legado e um XMP packet, qualquer um dos quais pode guardar um nome de autor, um título ou uma impressão digital de ferramenta. Ele pode carregar arquivos inteiros como embedded file streams. Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11 Ele pode vincular essas cargas à estrutura da página como associated files, um canal de artefato relacionado que a página não renderiza mas o documento ainda guarda. Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5 Nenhuma delas está na página que você redigiu, então nenhuma delas é tocada por um retângulo. A orientação clássica sobre isso — o relatório da NSA “Hidden Data and Metadata in Adobe PDF Files” — existe precisamente porque tantos vazamentos reais vieram do resíduo, não da página visível.
Uma redação que exclui as palavras na página mas deixa o nome do autor no XMP packet e a planilha original como anexo não redigiu o documento. Ela redigiu uma visão dele.
- DetectarEncontre cada trecho sensível — texto visível, e os tipos de entidade que uma política mira — não apenas a região que por acaso você vê.
- Excluir, não cobrirReescreva o content stream para que os glifos sejam removidos dos bytes. Uma caixa opaca por cima deixa intacto o texto por baixo.
- Limpar o resíduoRetire o information dictionary e os metadados XMP, e remova arquivos embutidos e associados que carregam a mesma carga fora da página.
- VerificarConfirme que nenhum texto selecionável, campo de metadados ou anexo reproduz o conteúdo redigido antes que o arquivo saia do prédio.
Falhar fechado em vez de fingir
Seção intitulada “Falhar fechado em vez de fingir”Há duas formas de redigir: por conteúdo (encontre este nome, exclua-o) e por zona (pinte por cima deste retângulo da página, seja o que for que esteja sob ele). O mecanismo enterprise faz a primeira de forma verdadeira. Ele deliberadamente não finge fazer a segunda.
O método redact() aceita um terceiro argumento, uma lista de regiões de
coordenadas ZoneRedaction. O mecanismo de conteúdo de texto não tem um sink de
cobertura de page-content — nenhuma forma de de fato remover o que está dentro de
uma caixa de coordenadas. Então, quando essa lista não está vazia, ele não desenha
um retângulo nem chama a zona de “redigida”. Ele lança uma RuntimeException tipada
e diz para você rotear a zona por um pipeline de redação de page-content em vez
disso.
Essa recusa é todo o ponto desta página transformado em código. O mecanismo prefere parar e nomear o que não consegue fazer a retornar um achado “redigido” para uma região que deixou completamente intocada. Uma cobertura cosmética silenciosa reportada como remoção é exatamente a falsa garantia que produz um vazamento. Falhar fechado transforma esse vazamento em uma mensagem de erro que você vê antes de enviar.
Equívoco comum
Seção intitulada “Equívoco comum”“Desenhei uma caixa preta por cima, então está redigido.”
Esta é a armadilha, e é a mais comum em todo o formato. Um retângulo preenchido é uma instrução de desenho empilhada sobre o texto. Os operadores de exibição de texto ainda estão no content stream, os glifos ainda desenham, e uma seleção ou uma cópia os lê de volta inalterados. Você escondeu uma imagem; você não mudou um documento.
Uma segunda armadilha, mais sutil: “Excluí o texto na página, então o documento está limpo.” Ainda não. O mesmo conteúdo, e conteúdo que você nunca exibiu, pode persistir nos metadados e em arquivos embutidos. A redação só está concluída quando cada superfície — conteúdo de página, metadados e anexos — está livre daquilo que você se propôs a remover.
Limites e fronteiras
Seção intitulada “Limites e fronteiras”O escopo honesto do que o NextPDF faz aqui, por edição:
- O Core não tem redação de documento alguma. Ele inclui um sanitizador de privacidade para PII de audit-log — mantendo valores sensíveis fora dos seus próprios registros de diagnóstico — e isso é uma coisa inteiramente diferente de redigir um PDF entregue. Se você está no Core e precisa redigir um documento, a capacidade que você quer não está presente. Não desenhe uma caixa e assuma que o mecanismo removeu algo.
- O
RedactionEngineenterprise redige conteúdo de texto, de forma destrutiva. Ele reescreve o buffer de conteúdo para remover os bytes sensíveis e reporta um hash, um relatório de auditoria e um flagwasModified, de modo que a remoção seja comprovável. - A redação por zona de coordenadas falha fechada. Passe uma lista
ZoneRedactionnão vazia e o mecanismo lança em vez de fingir uma cobertura. Essa é uma propriedade de segurança deliberada, não um recurso faltante: uma região que ele não consegue de fato limpar é uma que ele se recusa a chamar de limpa. - Limpar cada superfície de resíduo também é responsabilidade do operador. Remover o texto visível é um passo. Um trabalho completo também retira o information dictionary, o XMP packet, e quaisquer arquivos embutidos ou associados (Spec: ISO 32000-2, §7.11ISO 32000-2 §7.11, Spec: ISO 32000-2, §14.13.5ISO 32000-2 §14.13.5) que carregam a mesma carga fora da página.
| Edition | Availability |
|---|---|
| Core | Não nesta edição. O Core não tem redação de documento. Ele fornece apenas um sanitizador de PII de audit-log, que mantém valores sensíveis fora dos seus próprios registros de diagnóstico — ele não redige um PDF entregue. |
| Pro | Not in this edition |
| Enterprise | Disponível. O RedactionEngine enterprise realiza redação destrutiva de conteúdo de texto e falha fechado — ele lança uma exceção tipada — na redação por zona de coordenadas que não consegue de fato cumprir, em vez de pintar uma cobertura cosmética e reportar uma região como removida. |
Documentos relacionados
Seção intitulada “Documentos relacionados”- Como a criptografia de PDF realmente funciona — por que criptografar um arquivo não é o mesmo que remover conteúdo dele, e onde cada um protege você.
- Metadados e o XMP packet — a superfície de resíduo que uma redação em nível de página nunca toca, em detalhe.
- Uma API que se recusa a adivinhar — a mesma postura de falhar fechado que o mecanismo de redação aplica a uma zona que não consegue cumprir.
Glossário
Seção intitulada “Glossário”- Cobertura cosmética — uma operação de desenho, como um retângulo preenchido, disposta sobre o conteúdo para escondê-lo visualmente. Ela não remove o conteúdo por baixo, que permanece selecionável e copiável.
- Redação destrutiva — remoção do conteúdo do byte stream do documento, não da imagem. Uma vez feita, não há nada por baixo para recuperar.
- Content stream — a lista ordenada de operadores de desenho que renderizam uma página, incluindo os operadores de exibição de texto que desenham glifos. Uma caixa por cima não exclui os operadores de texto por baixo dela.
- Superfície de resíduo — um lugar onde um documento guarda conteúdo que a página não exibe: o information dictionary, o XMP metadata packet, e arquivos embutidos ou associados. Uma redação completa limpa todos eles.
- Embedded file stream — um arquivo inteiro carregado dentro de um PDF (ISO 32000-2 §7.11). Uma marca em uma página nunca toca em um anexo.
- Falhar fechado — parar com um erro tipado quando uma operação não pode ser feita de forma verdadeira, em vez de produzir um resultado de aparência plausível que está errado. O mecanismo enterprise faz isso para a redação por zona de coordenadas que não consegue cumprir.