Enterprise edição
Perícia Forense
Visão geral
Seção intitulada “Visão geral”O NextPDF Enterprise Forensics lê o histórico de atualizações incrementais de um PDF e produz um relatório estruturado e somente leitura de revisões, eventos classificados e mudanças por objeto. Ele dá suporte a fluxos de trabalho de análise forense. Ele não é um selo à prova de adulteração e não afirma que um documento é autêntico ou inalterado.
Disponibilidade e licenciamento
Seção intitulada “Disponibilidade e licenciamento”Este recurso é entregue no NextPDF Enterprise (nextpdf/enterprise) e é ativado com um envelope de licença de nível Enterprise. Uma implantação sem esse direito não carrega as classes do recurso. Compare as edições e obtenha uma licença.
Instalação
Seção intitulada “Instalação”composer require nextpdf/enterprise:^3Visão conceitual
Seção intitulada “Visão conceitual”Um PDF pode ser atualizado anexando mudanças ao final do arquivo em vez de reescrevê-lo. Cada atualização adiciona uma nova seção de referência cruzada e um novo trailer, e os bytes originais são deixados no lugar — ISO 32000-2:2020 §7.5.6. Quando um objeto é alterado, a atualização anexa uma nova cópia e a seção de referência cruzada da atualização registra um byte offset que substitui o offset mais antigo; um leitor resolve a cópia mais recente — ISO 32000-2:2020 §7.5.6. A estrutura inicial do arquivo pode ser modificada por atualizações posteriores — ISO 32000-2:2020 §7.5.4. A seção de referência cruzada de uma atualização lista apenas os objetos que foram adicionados, modificados ou excluídos nessa atualização — ISO 32000-2:2020 §7.5.5.
O analisador lê essa estrutura em camadas. Ele analisa a tabela de referência cruzada de cada revisão, deriva os limites de bytes da revisão e compara as entradas de cada revisão com a próxima revisão mais antiga para classificar cada objeto como adicionado, modificado ou excluído. Em seguida, ele agrupa as mudanças de objeto em eventos de nível mais alto: uma assinatura foi adicionada, o catálogo do documento foi atualizado, um dicionário de criptografia apareceu ou um conjunto de objetos foi adicionado, modificado ou removido. A saída é um objeto de relatório que carrega uma contagem de revisões, o tamanho total, uma lista de resumo por revisão, uma linha do tempo de eventos classificados e a lista de mudanças por objeto.
O analisador é somente leitura. Ele detecta a existência de uma revisão de assinatura a partir de marcadores estruturais; ele não valida nenhuma assinatura, não recomputa nenhum resumo e não verifica nenhum certificado. A validação de assinatura é um recurso separado do Core. Um relatório produzido é uma descrição estrutural do histórico de atualizações como analisado; ele não é uma determinação de que um documento é autêntico, de que uma mudança foi não autorizada ou de que toda modificação foi detectada. Trate o relatório como detecção de evidência de adulteração conforme testada em relação à visão do parser sobre a cadeia de revisões, não como uma garantia forense ou uma atestação admissível em juízo.
Por que funciona assim
Seção intitulada “Por que funciona assim”O analisador para deliberadamente na estrutura. Ele relata o que a cadeia de revisões contém e nunca afirma que uma mudança foi autorizada ou que uma assinatura é válida. Presença estrutural e validade criptográfica são declarações diferentes; mesclá-las permitiria que um chamador confundisse evidência de adulteração com uma garantia. Portanto, a validade de assinatura permanece com a única superfície de assinatura do Core, com a qual o Forensics compõe em vez de duplicar. O relatório é metadado estrutural serializável em JSON, então um SIEM ingere o histórico de edições sem tocar no conteúdo do documento. Contexto de projeto: Atualizações incrementais e por que importam.
Superfície da API
Seção intitulada “Superfície da API”| Tipo | Categoria | Papel | Estabilidade | Desde |
|---|---|---|---|---|
ForensicAnalyzer | class | Analisa um PDF e retorna um relatório forense (analyze estático) | stable | 1.10.0 |
ForensicReport | class | O resultado da análise; JsonSerializable para exportação a SIEM | stable | 1.10.0 |
RevisionSummary | class | Fatos por revisão: contagem de objetos, tamanho, limites de bytes, sinalizadores de presença | stable | 1.10.0 |
ForensicEvent | class | Um evento classificado com uma lista de objetos afetados | stable | 1.10.0 |
ForensicEventType | enum | Categorias de evento (assinatura adicionada, catálogo atualizado, objetos adicionados e outras) | stable | 1.10.0 |
ObjectChange | class | O registro de mudança de um objeto entre duas revisões | stable | 1.10.0 |
ObjectChangeType | enum | Added, Modified ou Deleted | stable | 1.10.0 |
ForensicReport expõe hasIncrementalUpdates(), hasAnySignature(), getEventsByType(), getChangesForRevision() e jsonSerialize(). O sinalizador hasSignature em um resumo de revisão é um sinal de presença estrutural, não um resultado de validade.
Exemplo de código — Início rápido
Seção intitulada “Exemplo de código — Início rápido”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Forensics\ForensicAnalyzer;
/** * Produce a forensic report from PDF bytes. * * @param string $pdfData Raw PDF file bytes. * * @return array{revisions: int, incremental: bool, signedRevisionPresent: bool} */function inspect(string $pdfData): array{ $report = ForensicAnalyzer::analyze($pdfData);
return [ 'revisions' => $report->revisionCount, 'incremental' => $report->hasIncrementalUpdates(), 'signedRevisionPresent' => $report->hasAnySignature(), ];}hasAnySignature() relata que uma revisão de assinatura está presente na estrutura. Ele não afirma que a assinatura é válida.
Exemplo de código — Produção
Seção intitulada “Exemplo de código — Produção”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Forensics\ForensicAnalyzer;use NextPDF\Enterprise\Forensics\ForensicEventType;use Psr\Log\LoggerInterface;
final readonly class RevisionAuditor{ public function __construct(private LoggerInterface $logger) {}
/** * Analyze a document and emit a structural JSON record for the SIEM. * * @param string $pdfData The PDF bytes to inspect. * * @return string A JSON forensic report (no document content). */ public function audit(string $pdfData): string { try { $report = ForensicAnalyzer::analyze($pdfData);
$this->logger->info('Forensic analysis complete', [ 'revisions' => $report->revisionCount, 'sizeBytes' => $report->totalSizeBytes, 'signatureAddedEvents' => count( $report->getEventsByType(ForensicEventType::SignatureAdded), ), ]);
return json_encode($report, JSON_THROW_ON_ERROR); } catch (\Throwable $e) { $this->logger->error('Forensic analysis failed', ['error' => $e->getMessage()]);
throw $e; } }}O registro de log carrega apenas contagens e tamanhos. Ele não carrega texto do documento. O bloco catch relança a exceção; ele não engole uma falha de análise.
Casos extremos e armadilhas
Seção intitulada “Casos extremos e armadilhas”- Um documento de revisão única não tem histórico incremental. A lista de mudanças está vazia; isso não é evidência de autenticidade.
- Um evento
SignatureAddedsignifica que uma revisão de assinatura está estruturalmente presente. Ele não é um resultado de validade de assinatura. Valide a assinatura com a superfície de assinatura do Core. - A reutilização de objetos é normal: um objeto atualizado mantém seu número de objeto e uma nova cópia é anexada. O analisador relata isso como
Modified, não como remoção e recriação. - Uma classificação
Deletedé uma transição de entrada livre na cadeia de referência cruzada. Um leitor ainda pode resolver uma cópia mais antiga desse objeto; a exclusão no nível da estrutura não é garantia de irrecuperabilidade. - O analisador relata o que o parser observou. Um documento elaborado para confundir um parser pode gerar um relatório que não corresponde à visão de uma ferramenta diferente. O relatório não é uma afirmação de que toda modificação foi detectada.
- A entrada é limitada. Um documento superdimensionado ou excessivamente multirrevisão falha de forma segura com uma exceção de análise tipada, em vez de consumir memória ilimitada.
Desempenho
Seção intitulada “Desempenho”O custo da análise escala com a contagem de revisões e a contagem de objetos, não com a complexidade da página renderizada. O orçamento de 1500 ms de tempo de parede cobre um documento empresarial multirrevisão típico. O perfil de reprodutibilidade é structural: o relatório é determinístico para uma dada entrada, mas os byte offsets absolutos refletem o arquivo de entrada exato e não são portáveis entre cópias regravadas.
Notas de segurança
Seção intitulada “Notas de segurança”O analisador é somente leitura e nunca grava na entrada. Ele é uma superfície analítica, não transformacional. Ele detecta a existência de marcadores de assinatura e de criptografia, mas não realiza nenhuma operação criptográfica, então não faz nenhuma declaração FIPS. Um relatório descreve o histórico de atualizações analisado; ele não é uma afirmação de autenticidade e não deve ser apresentado como à prova de adulteração, forensicamente garantido ou admissível em juízo. Um operador tira conclusões; a biblioteca relata a estrutura.
Residência de dados e mitigações de PII
Seção intitulada “Residência de dados e mitigações de PII”A análise é executada em processo no host que mantém o PDF. Nenhum conteúdo do documento sai do host. O relatório carrega números de objeto, índices de revisão, tamanhos, limites de bytes e categorias de evento — metadados estruturais, não texto do documento nem dados pessoais detectados. Se o PDF de entrada ou o próprio relatório contém dados pessoais, e onde cada um é armazenado, é uma responsabilidade de implantação fora do limite da biblioteca.
Telemetria segura e limpeza de logs
Seção intitulada “Telemetria segura e limpeza de logs”A biblioteca lança exceções tipadas com mensagens estruturais e não coloca bytes do documento no texto da exceção. Uma implantação que registra em log ao redor da análise deve registrar as contagens e categorias do relatório — como mostrado no exemplo de produção — e não deve registrar o payload bruto do PDF em logs ou em um backend de APM. O relatório JSON é o artefato seguro para encaminhar a um SIEM.
Comportamento em modo FIPS
Seção intitulada “Comportamento em modo FIPS”Nenhuma operação criptográfica ocorre neste módulo, então não há comportamento específico de modo FIPS. A validação de assinatura, que é criptográfica, é um recurso separado do Core e é documentada lá.
Conformidade
Seção intitulada “Conformidade”| Declaração | Norma | Cláusula |
|---|---|---|
| As atualizações posteriores anexam elementos adicionais ao final do arquivo; a estrutura original é modificada por atualizações posteriores. | ISO 32000-2:2020 | §7.5.6 |
| Um objeto atualizado é anexado como uma nova cópia e a entrada de referência cruzada da atualização substitui o byte offset anterior; o leitor resolve a cópia mais recente. | ISO 32000-2:2020 | §7.5.6 |
| A estrutura inicial do arquivo pode ser modificada por atualizações posteriores. | ISO 32000-2:2020 | §7.5.4 |
| A seção de referência cruzada de uma atualização contém entradas apenas para objetos adicionados, modificados ou excluídos. | ISO 32000-2:2020 | §7.5.5 |
| O dicionário de assinatura registra o que é assinado. | ISO 32000-2:2020 | §12.8.1 |
| ByteRange define o intervalo de bytes que a assinatura cobre (a validação de assinatura é um recurso separado do Core). | ISO 32000-2:2020 | §12.8.1 |
| Um Document Security Store mantém material de validação de longo prazo em uma revisão posterior. | ISO 32000-2:2020 | §12.8.4 |
Todas as cláusulas são parafraseadas. O NextPDF não reproduz texto normativo. Consulte a norma publicada para a redação autoritativa. O NextPDF não faz nenhuma declaração de certificação forense; o relatório descreve a estrutura de atualizações analisada, não uma determinação certificada da integridade do documento.
Contrato de comportamento
Seção intitulada “Contrato de comportamento”- O analisador é somente leitura: ele nunca grava no documento de entrada e não realiza nenhuma operação criptográfica.
- Ele analisa a tabela de referência cruzada de cada revisão, deriva os limites de bytes da revisão e classifica cada objeto como adicionado, modificado ou excluído, depois agrupa as mudanças em uma linha do tempo de eventos classificados.
- Um evento
SignatureAddedsignifica que uma revisão de assinatura está estruturalmente presente; ele não é um resultado de validade de assinatura — a validação é um recurso separado do Core. - Um documento de revisão única tem uma lista de mudanças vazia (não evidência de autenticidade); uma classificação
Deletedé uma transição de entrada livre, não garantia de irrecuperabilidade. - A entrada é limitada: um documento superdimensionado ou excessivamente multirrevisão falha de forma segura com uma exceção de análise tipada. O relatório é detecção de evidência de adulteração conforme testada, não uma garantia forense ou uma atestação admissível em juízo.
Limite de publicação
Seção intitulada “Limite de publicação”Esta página documenta apenas o comportamento observável externamente e a superfície pública de API suportada. Caminhos de namespace internos, classes auxiliares, tabelas de mecanismos, nomes de arquivo de runbook e prefixos de tíquete estão fora do escopo.
Fallback do Core
Seção intitulada “Fallback do Core”O NextPDF Core (Apache-2.0) não tem nenhum analisador forense de histórico de revisões — nenhum; este recurso não tem equivalente no nível Core. O Core fornece a superfície autoritativa de validação de assinatura, com a qual o analisador compõe, mas que ele não substitui.
Fallback do Pro
Seção intitulada “Fallback do Pro”O NextPDF Pro não tem nenhum analisador forense de histórico de revisões — nenhum; este recurso não tem equivalente no nível Pro. O relato somente leitura de revisões e de mudanças por objeto e o relatório SIEM serializável em JSON são entregues apenas no pacote nextpdf/enterprise.
Nota sobre o limite do Enterprise
Seção intitulada “Nota sobre o limite do Enterprise”O parser de revisões, a classificação de mudanças e a linha do tempo de eventos são descritos no nível de comportamento. Os detalhes internos do parser e qualquer detalhe interno de classificação estão fora do escopo da superfície pública. A validade de assinatura deliberadamente não está no escopo aqui — ela é responsabilidade da superfície de assinatura do Core.
Limite de implantação
Seção intitulada “Limite de implantação”A análise é executada em processo no host que mantém o PDF; nenhum conteúdo do documento sai do host. Se o PDF de entrada ou o relatório contém dados pessoais, e onde cada um é armazenado, é uma responsabilidade de implantação fora do limite da biblioteca. O operador tira conclusões a partir do relatório; a biblioteca relata a estrutura e não afirma a autenticidade do documento.
Limite de conformidade legal
Seção intitulada “Limite de conformidade legal”Nenhuma restrição de controle de exportação se aplica à superfície de Forensics. O relatório não deve ser apresentado como à prova de adulteração, forensicamente garantido ou admissível em juízo. Esta documentação não é um parecer jurídico; consulte a sua própria assessoria de conformidade e jurídica.
Consulte também
Seção intitulada “Consulte também”- Forensics — Referência Profunda — regras de derivação de limites de revisão e de classificação de mudanças de objeto.
- Assinatura do Core — a superfície autoritativa de validação de assinatura.
- Pacotes de evidências — artefatos de saída de cadeia de custódia.
- NextPDF Enterprise — a superfície completa de recursos Enterprise.
- Core AST — o modelo de documento analisado.
- Incremental update · Cross-reference table · DSS — termos do glossário.